9028 أسطر
281 KiB
JSON
9028 أسطر
281 KiB
JSON
{
|
|
"info": {
|
|
"name": "Oudelaa Auth Users Posts",
|
|
"description": "Postman collection for auth, users, posts, feed, notifications, chat, and marketplace modules with frontend-friendly filters, sorting, mixed home feed, comment mentions, post engagement counters, a separated marketplace/listings contract, and one-shop-per-admin marketplace rules.",
|
|
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
|
|
},
|
|
"item": [
|
|
{
|
|
"name": "Auth",
|
|
"item": [
|
|
{
|
|
"name": "Register Basic",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/auth/register-basic",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"email\": \"{{registerEmail}}\",\n \"password\": \"StrongPass123!\",\n \"confirmPassword\": \"StrongPass123!\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"const ts = Date.now();",
|
|
"if (!pm.environment.get('registerEmail')) { pm.environment.set('registerEmail', `test_${ts}@example.com`); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.message).to.exist;",
|
|
"pm.expect(json.email).to.exist;",
|
|
"if (json.debugCode) { pm.environment.set('emailVerificationCode', json.debugCode); }"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Register",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/auth/register",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"name\": \"Test User\",\n \"stageName\": \"Artist One\",\n \"username\": \"{{registerUsername}}\",\n \"email\": \"{{registerEmail}}\",\n \"password\": \"StrongPass123!\",\n \"confirmPassword\": \"StrongPass123!\",\n \"musicRoles\": [\"singer\", \"composer\"],\n \"musicGenres\": [\"Tarab\", \"Pop\"],\n \"favoriteInstruments\": [\"Oud\", \"Piano\"],\n \"favoriteMaqamat\": [\"Bayati\", \"Rast\"],\n \"location\": \"Riyadh, Saudi Arabia\",\n \"latitude\": 24.7136,\n \"longitude\": 46.6753,\n \"isPrivate\": false\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"const ts = Date.now();",
|
|
"if (!pm.environment.get('registerEmail')) { pm.environment.set('registerEmail', `test_${ts}@example.com`); }",
|
|
"if (!pm.environment.get('registerUsername')) { pm.environment.set('registerUsername', `test_user_${ts}`); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.message).to.exist;",
|
|
"pm.expect(json.email).to.exist;",
|
|
"if (json.debugCode) { pm.environment.set('emailVerificationCode', json.debugCode); }"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Login",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/auth/login",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"email\": \"{{registerEmail}}\",\n \"password\": \"StrongPass123!\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"const missing = [];",
|
|
"if (!pm.environment.get('accessToken')) missing.push('accessToken');",
|
|
"if (!pm.environment.get('postId')) missing.push('postId');",
|
|
"if (missing.length) { throw new Error('Missing environment vars: ' + missing.join(', ')); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.user).to.exist;",
|
|
"const uid = json.user._id || json.user.id;",
|
|
"pm.environment.set('accessToken', json.accessToken);",
|
|
"pm.environment.set('refreshToken', json.refreshToken);",
|
|
"pm.environment.set('userId', uid);",
|
|
"pm.environment.set('currentUserId', uid);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Target User Login",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/auth/login",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"email\": \"{{targetLoginEmail}}\",\n \"password\": \"{{targetLoginPassword}}\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"const missing = [];",
|
|
"if (!pm.environment.get('accessToken')) missing.push('accessToken');",
|
|
"if (!pm.environment.get('postId')) missing.push('postId');",
|
|
"if (missing.length) { throw new Error('Missing environment vars: ' + missing.join(', ')); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.user).to.exist;",
|
|
"const uid = json.user._id || json.user.id;",
|
|
"pm.environment.set('targetAccessToken', json.accessToken);",
|
|
"pm.environment.set('targetRefreshToken', json.refreshToken);",
|
|
"pm.environment.set('targetUserId', uid);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Admin Login",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/auth/login",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"email\": \"{{adminEmail}}\",\n \"password\": \"{{adminPassword}}\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"const missing = [];",
|
|
"if (!pm.environment.get('accessToken')) missing.push('accessToken');",
|
|
"if (!pm.environment.get('postId')) missing.push('postId');",
|
|
"if (missing.length) { throw new Error('Missing environment vars: ' + missing.join(', ')); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.environment.set('adminAccessToken', json.accessToken);",
|
|
"pm.environment.set('adminRefreshToken', json.refreshToken);",
|
|
"pm.environment.set('adminUserId', (json.user && (json.user._id || json.user.id)) || pm.environment.get('adminUserId'));"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Refresh",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/auth/refresh",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"refreshToken\": \"{{refreshToken}}\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.user).to.exist;",
|
|
"pm.environment.set('accessToken', json.accessToken);",
|
|
"pm.environment.set('refreshToken', json.refreshToken);",
|
|
"pm.environment.set('userId', json.user._id || json.user.id);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Logout",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/auth/logout",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"refreshToken\": \"{{refreshToken}}\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.message).to.eql('Logged out successfully');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "SuperAdmin",
|
|
"item": [
|
|
{
|
|
"name": "SuperAdmin Login",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/auth/superadmin/login",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"email\": \"admin@oudelaa.com\",\n \"password\": \"SuperAdminStrongPass123!\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.accessToken).to.exist;",
|
|
"pm.expect(json.refreshToken).to.exist;",
|
|
"pm.environment.set('superAdminAccessToken', json.accessToken);",
|
|
"pm.environment.set('superAdminRefreshToken', json.refreshToken);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "SuperAdmin Refresh",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/auth/superadmin/refresh",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"refreshToken\": \"{{superAdminRefreshToken}}\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.accessToken).to.exist;",
|
|
"pm.expect(json.refreshToken).to.exist;",
|
|
"pm.environment.set('superAdminAccessToken', json.accessToken);",
|
|
"pm.environment.set('superAdminRefreshToken', json.refreshToken);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "SuperAdmin Logout",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/auth/superadmin/logout",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"refreshToken\": \"{{superAdminRefreshToken}}\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.message).to.eql('Superadmin logged out successfully');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Google OAuth Start (Browser)",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": "{{baseUrl}}/auth/google",
|
|
"description": "Open this request in browser flow to start Google OAuth redirect."
|
|
}
|
|
},
|
|
{
|
|
"name": "Google OAuth Callback (Browser Redirect)",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": "{{baseUrl}}/auth/google/callback",
|
|
"description": "Callback endpoint is called by Google redirect after browser login. Do not call directly from Postman."
|
|
}
|
|
},
|
|
{
|
|
"name": "Google Token Login (Mobile - Recommended)",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/auth/google/token",
|
|
"description": "Mobile-style Google login (Instagram-like): send Google idToken from app SDK.",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"idToken\": \"{{googleIdToken}}\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"const idToken = (pm.environment.get('googleIdToken') || '').trim();",
|
|
"if (!idToken) {",
|
|
" throw new Error('googleIdToken is empty. Paste Google idToken from Flutter/Google SDK into environment variable googleIdToken.');",
|
|
"}"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.accessToken).to.exist;",
|
|
"pm.expect(json.refreshToken).to.exist;",
|
|
"pm.expect(json.user).to.exist;",
|
|
"const uid = json.user._id || json.user.id;",
|
|
"pm.environment.set('accessToken', json.accessToken);",
|
|
"pm.environment.set('refreshToken', json.refreshToken);",
|
|
"pm.environment.set('userId', uid);",
|
|
"pm.environment.set('currentUserId', uid);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "List My Sessions",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/auth/sessions"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;",
|
|
"if (json.items && json.items.length > 0) { pm.environment.set('sessionJti', json.items[0].jti); }"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Revoke My Session",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/auth/sessions/{{sessionJti}}/revoke"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.success).to.eql(true);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Forgot Password",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/auth/forgot-password",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"email\": \"{{registerEmail}}\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.message).to.exist;",
|
|
"if (json.debugCode) { pm.environment.set('resetCode', json.debugCode); }"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Verify Reset Code",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/auth/verify-reset-code",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"email\": \"{{registerEmail}}\",\n \"code\": \"{{resetCode}}\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.resetToken).to.exist;",
|
|
"pm.environment.set('resetToken', json.resetToken);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Reset Password",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/auth/reset-password",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"resetToken\": \"{{resetToken}}\",\n \"newPassword\": \"{{newPassword}}\",\n \"confirmPassword\": \"{{newPassword}}\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.message).to.eql('Password reset successfully');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Send Email Verification",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/auth/send-email-verification",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"email\": \"{{registerEmail}}\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.message).to.exist;",
|
|
"if (json.debugCode) { pm.environment.set('emailVerificationCode', json.debugCode); }"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Verify Email",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/auth/verify-email",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"email\": \"{{registerEmail}}\",\n \"code\": \"{{emailVerificationCode}}\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.message).to.exist;",
|
|
"if (json.accessToken) { pm.environment.set('accessToken', json.accessToken); }",
|
|
"if (json.refreshToken) { pm.environment.set('refreshToken', json.refreshToken); }",
|
|
"if (json.user) { const uid = json.user._id || json.user.id; pm.environment.set('userId', uid); pm.environment.set('currentUserId', uid); }"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "SuperAdmin List Sessions",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/auth/superadmin/sessions",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"auth",
|
|
"superadmin",
|
|
"sessions"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "SuperAdmin Revoke Session",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/auth/superadmin/sessions/{{sessionId}}/revoke",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"auth",
|
|
"superadmin",
|
|
"sessions",
|
|
"{{sessionId}}",
|
|
"revoke"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Media",
|
|
"item": [
|
|
{
|
|
"name": "Media Health",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/media/health"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.storage).to.be.an('object');",
|
|
"pm.expect(json.storage.provider).to.be.oneOf(['local', 's3']);",
|
|
"pm.expect(json.serving.rangeRequests).to.eql(true);",
|
|
"pm.expect(json.processing).to.be.an('object');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Search",
|
|
"item": [
|
|
{
|
|
"name": "Global Search - All",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/search?q={{searchQuery}}&type={{searchType}}&page=1&limit={{searchLimit}}",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
]
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('query');",
|
|
"pm.expect(json).to.have.property('users');",
|
|
"pm.expect(json).to.have.property('posts');",
|
|
"pm.expect(json).to.have.property('hashtags');",
|
|
"pm.expect(json.users.pagination).to.exist;",
|
|
"pm.expect(json.posts.pagination).to.exist;",
|
|
"pm.expect(json.hashtags.pagination).to.exist;"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Global Search - Users Type",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/search?q={{searchQuery}}&type=users&page=1&limit={{searchLimit}}",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
]
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.users).to.have.property('items');",
|
|
"pm.expect(json.users).to.have.property('pagination');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Search Users",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/search/users?q={{searchQuery}}&page=1&limit={{searchLimit}}",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
]
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('items');",
|
|
"pm.expect(json).to.have.property('pagination');",
|
|
"if (json.items.length) {",
|
|
" const target = json.items[0];",
|
|
" pm.expect(target).to.have.property('username');",
|
|
" pm.expect(target).to.have.property('isFollowing');",
|
|
" pm.environment.set('targetUserId', target._id || target.id);",
|
|
"}"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Search Posts",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/search/posts?q={{searchQuery}}&page=1&limit={{searchLimit}}&sortOrder={{listSortOrder}}",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
]
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('items');",
|
|
"pm.expect(json).to.have.property('pagination');",
|
|
"if (json.items.length) {",
|
|
" const post = json.items[0];",
|
|
" pm.expect(post).to.have.property('media');",
|
|
" pm.expect(post).to.have.property('isLiked');",
|
|
" pm.expect(post).to.have.property('isSaved');",
|
|
" pm.environment.set('postId', post._id || post.id);",
|
|
"}"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Search Hashtags",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/search/hashtags?q={{searchQuery}}&page=1&limit={{searchLimit}}",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
]
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('items');",
|
|
"pm.expect(json).to.have.property('pagination');",
|
|
"if (json.items.length) {",
|
|
" pm.expect(json.items[0]).to.have.property('tag');",
|
|
" pm.expect(json.items[0]).to.have.property('postsCount');",
|
|
" pm.environment.set('postHashtag', json.items[0].tag);",
|
|
"}"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Search Suggestions",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/search/suggestions?q={{searchQuery}}&limit={{searchSuggestionLimit}}",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
]
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('users');",
|
|
"pm.expect(json).to.have.property('hashtags');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Users",
|
|
"item": [
|
|
{
|
|
"name": "SuperAdmin List Admins",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/users/admin/admins?page=1&limit=20"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;",
|
|
"if (json.items && json.items.length > 0) { pm.environment.set('adminUserId', json.items[0]._id || json.items[0].id); }"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "SuperAdmin Update Admin",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
},
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/users/admin/admins/{{adminUserId}}",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"name\": \"Store Admin Updated\",\n \"stageName\": \"Music Store Owner\",\n \"bio\": \"Admin managing marketplace tools\",\n \"location\": \"Riyadh, Saudi Arabia\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('role');",
|
|
"pm.expect(json.role).to.eql('admin');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "SuperAdmin Delete Admin",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/users/admin/admins/{{adminUserId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.message).to.eql('Admin deleted successfully');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "SuperAdmin Create Admin",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
},
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/users/admin/create-admin",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"name\": \"Store Admin\",\n \"username\": \"{{adminUsername}}\",\n \"email\": \"{{adminEmail}}\",\n \"password\": \"{{adminPassword}}\",\n \"confirmPassword\": \"{{adminPassword}}\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"pm.environment.set('adminUserId', json._id || json.id);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "SuperAdmin Set User Role",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
},
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/users/admin/{{adminUserId}}/role",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"role\": \"admin\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.role).to.eql('admin');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Search Users",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/users?q={{usersQuery}}&isVerified={{usersVerified}}&musicRole={{talentRole}}&experienceLevel={{talentExperienceLevel}}&hasAvatar={{usersHasAvatar}}&sortBy={{usersSortBy}}&sortOrder={{listSortOrder}}&page=1&limit=20",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
]
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.pagination).to.exist;",
|
|
"const currentUserId = pm.environment.get('currentUserId');",
|
|
"if (json.items && json.items.length > 0) {",
|
|
" const target = json.items.find(u => (u._id || u.id) !== currentUserId) || json.items[0];",
|
|
" const targetId = target._id || target.id;",
|
|
" pm.environment.set('targetUserId', targetId);",
|
|
" if (target.username) { pm.environment.set('targetUsername', target.username); }",
|
|
"}"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Profile Setup",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/users/me/profile-setup",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "stageName",
|
|
"value": "Artist One",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "avatarFile",
|
|
"type": "file",
|
|
"src": []
|
|
},
|
|
{
|
|
"key": "bio",
|
|
"value": "Short bio",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "location",
|
|
"value": "Riyadh, Saudi Arabia",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "latitude",
|
|
"value": "24.7136",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "coverImageFile",
|
|
"type": "file",
|
|
"src": [],
|
|
"disabled": true
|
|
},
|
|
{
|
|
"key": "longitude",
|
|
"value": "46.6753",
|
|
"type": "text"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.location).to.eql('Riyadh, Saudi Arabia');",
|
|
"pm.expect(json.latitude).to.eql(24.7136);",
|
|
"pm.expect(json.longitude).to.eql(46.6753);",
|
|
"if (json.avatar) { pm.expect(json.avatar).to.be.a('string'); }",
|
|
"if (json.coverImage) { pm.expect(json.coverImage).to.be.a('string'); }"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Music Setup",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
},
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/users/me/music-setup",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"musicRoles\": [\"instrumentalist\", \"composer\"],\n \"musicGenres\": [\"Tarab\", \"Pop\"],\n \"experienceLevel\": \"intermediate\",\n \"favoriteInstruments\": [\"Oud\", \"Piano\"],\n \"favoriteMaqamat\": [\"Bayati\", \"Rast\"]\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.musicRoles).to.include('instrumentalist');",
|
|
"pm.expect(json.musicRoles).to.include('composer');",
|
|
"pm.expect(json.experienceLevel).to.eql('intermediate');",
|
|
"pm.expect(json).to.not.have.property('isInstrumentalist');",
|
|
"pm.expect(json).to.not.have.property('isSinger');",
|
|
"pm.expect(json).to.not.have.property('isComposer');",
|
|
"pm.expect(json).to.not.have.property('isLyricist');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Update Me",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
},
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/users/me",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"bio\": \"Updated from Postman\",\n \"avatar\": \"https://cdn.example.com/avatar.jpg\",\n \"stageName\": \"Artist One Updated\",\n \"musicGenres\": [\"Tarab\", \"Khaleeji\"],\n \"favoriteInstruments\": [\"Oud\"],\n \"favoriteMaqamat\": [\"Hijaz\"],\n \"location\": \"Jeddah, Saudi Arabia\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.bio).to.eql('Updated from Postman');",
|
|
"if (json.coverImage) { pm.expect(json.coverImage).to.be.a('string'); }"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Update Me With Files",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/users/me",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "stageName",
|
|
"value": "Artist One Files",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "bio",
|
|
"value": "Updated from Postman with files",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "location",
|
|
"value": "Riyadh, Saudi Arabia",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "avatar",
|
|
"value": "https://cdn.example.com/avatar.jpg",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "avatarFile",
|
|
"type": "file",
|
|
"src": []
|
|
},
|
|
{
|
|
"key": "coverImageFile",
|
|
"type": "file",
|
|
"src": [],
|
|
"disabled": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.stageName).to.eql('Artist One Files');",
|
|
"if (json.avatar) { pm.expect(json.avatar).to.be.a('string'); }",
|
|
"if (json.coverImage) { pm.expect(json.coverImage).to.be.a('string'); }"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get User By Id",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/users/{{userId}}",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "Admin Get Users",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/users/admin?page=1&limit=10"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"if (json.items && json.items.length > 0) { pm.environment.set('adminUserId', json.items[0]._id || json.items[0].id); }"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Admin Get User By Id",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/users/admin/{{adminUserId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json._id || json.id).to.exist;"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Admin Update User",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
},
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/users/admin/{{adminUserId}}",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"stageName\": \"Updated by SuperAdmin\",\n \"bio\": \"Profile updated by admin\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.stageName).to.eql('Updated by SuperAdmin');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Admin Disable User",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
},
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/users/admin/{{adminUserId}}/disable",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"reason\": \"Violation of community guidelines\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.isDisabled).to.eql(true);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Admin Enable User",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/users/admin/{{adminUserId}}/enable"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.isDisabled).to.eql(false);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Admin Delete User",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/users/admin/{{adminUserId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.message).to.eql('User deleted successfully');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Discover Talents",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/users/discover?q={{usersQuery}}&musicRole={{talentRole}}&experienceLevel={{talentExperienceLevel}}&hasAvatarOnly={{usersHasAvatar}}&includeRoleBuckets=true&sortBy=followersCount&sortOrder={{listSortOrder}}&page=1&limit=8"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json).to.have.property('roleBuckets');",
|
|
"pm.expect(json.pagination).to.exist;",
|
|
"if (json.items && json.items.length > 0) { pm.environment.set('targetUserId', json.items[0]._id || json.items[0].id); }"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get Profile Overview",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/users/{{targetUserId}}/profile-overview"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('stats');",
|
|
"pm.expect(json).to.have.property('contentCounts');",
|
|
"pm.expect(json).to.have.property('viewerState');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Admin Discover Users",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/users/admin/discover?page=1&limit=20&q={{usersQuery}}",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"users",
|
|
"admin",
|
|
"discover"
|
|
],
|
|
"query": [
|
|
{
|
|
"key": "page",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "limit",
|
|
"value": "20"
|
|
},
|
|
{
|
|
"key": "q",
|
|
"value": "{{usersQuery}}"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Admin Get User Profile Overview",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/users/admin/{{id}}/profile-overview",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"users",
|
|
"admin",
|
|
"{{id}}",
|
|
"profile-overview"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Posts",
|
|
"item": [
|
|
{
|
|
"name": "Create Post (Own)",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/posts",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "content",
|
|
"value": "First text post with mention @{{targetUsername}} #music",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "taggedUserIds",
|
|
"value": "{{targetUserId}}",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "mentionUsernames",
|
|
"value": "{{targetUsername}}",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "location",
|
|
"value": "Riyadh, Saudi Arabia",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "latitude",
|
|
"value": "24.7136",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "longitude",
|
|
"value": "46.6753",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "visibility",
|
|
"value": "public",
|
|
"type": "text"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"if (!pm.environment.get('accessToken')) { throw new Error('Missing environment var: accessToken'); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"const pid = json._id || json.id;",
|
|
"pm.environment.set('postId', pid);",
|
|
"pm.environment.set('ownPostId', pid);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Create Carousel Post (Instagram Style)",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/posts",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "content",
|
|
"value": "Weekend jam session #oud #music",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "visibility",
|
|
"value": "public",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "taggedUserIds",
|
|
"value": "{{targetUserId}}",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "mentionUsernames",
|
|
"value": "{{targetUsername}}",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "location",
|
|
"value": "Riyadh, Saudi Arabia",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "latitude",
|
|
"value": "24.7136",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "longitude",
|
|
"value": "46.6753",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "imageFiles",
|
|
"type": "file",
|
|
"src": []
|
|
},
|
|
{
|
|
"key": "imageFiles",
|
|
"type": "file",
|
|
"src": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"if (!pm.environment.get('accessToken')) { throw new Error('Missing environment var: accessToken'); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.postType).to.eql('image');",
|
|
"pm.expect(json.processingStatus).to.eql('ready');",
|
|
"pm.expect(json.media).to.be.an('object');",
|
|
"pm.expect(json.media.mediaType).to.eql(json.postType);",
|
|
"pm.expect(json.imageUrls).to.be.an('array');",
|
|
"pm.expect(json.media.images).to.be.an('array').that.is.not.empty;",
|
|
"pm.expect(json.media.images[0].url).to.be.a('string');",
|
|
"pm.expect(json.imageUrls.length).to.be.greaterThan(0);",
|
|
"const pid = json._id || json.id;",
|
|
"pm.environment.set('postId', pid);",
|
|
"pm.environment.set('ownPostId', pid);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Update Carousel Post (Instagram Style)",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/posts/{{postId}}",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "content",
|
|
"value": "Updated carousel caption #oud #live",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "imageFiles",
|
|
"type": "file",
|
|
"src": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"const missing = [];",
|
|
"if (!pm.environment.get('accessToken')) missing.push('accessToken');",
|
|
"if (!pm.environment.get('postId')) missing.push('postId');",
|
|
"if (missing.length) { throw new Error('Missing environment vars: ' + missing.join(', ')); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.postType).to.eql('image');",
|
|
"pm.expect(json.imageUrls).to.be.an('array');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get User Posts (Own)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/posts/user/{{userId}}?visibility={{postVisibility}}&sortBy={{postSortBy}}&sortOrder={{listSortOrder}}&page=1&limit=10",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
]
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"const missing = [];",
|
|
"if (!pm.environment.get('accessToken')) missing.push('accessToken');",
|
|
"if (!pm.environment.get('userId')) missing.push('userId');",
|
|
"if (missing.length) { throw new Error('Missing environment vars: ' + missing.join(', ')); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;",
|
|
"if (!pm.environment.get('postId') && json.items && json.items.length > 0) {",
|
|
" pm.environment.set('postId', json.items[0]._id || json.items[0].id);",
|
|
" pm.environment.set('ownPostId', json.items[0]._id || json.items[0].id);",
|
|
"}"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get User Posts Filtered",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/posts/user/{{userId}}?visibility={{postVisibility}}&postType={{postTypeFilter}}&q={{postSearchQuery}}&hashtag={{postHashtag}}&sortBy={{postSortBy}}&sortOrder={{listSortOrder}}&page=1&limit=10",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
]
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get Post By Id",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/posts/{{postId}}",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
]
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json._id || json.id).to.exist;",
|
|
"pm.expect(json).to.have.property('content');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Register Post View",
|
|
"request": {
|
|
"method": "POST",
|
|
"url": "{{baseUrl}}/posts/{{postId}}/view",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
]
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.success).to.eql(true);",
|
|
"pm.expect(json).to.have.property('viewCount');",
|
|
"pm.environment.set('lastViewCount', json.viewCount);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Register Post Share",
|
|
"request": {
|
|
"method": "POST",
|
|
"url": "{{baseUrl}}/posts/{{postId}}/share",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
]
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.success).to.eql(true);",
|
|
"pm.expect(json).to.have.property('shareCount');",
|
|
"pm.environment.set('lastShareCount', json.shareCount);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Update Post",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/posts/{{postId}}",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "content",
|
|
"value": "Updated post content with @{{targetUsername}} #live",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "taggedUserIds",
|
|
"value": "{{targetUserId}}",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "mentionUsernames",
|
|
"value": "{{targetUsername}}",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "location",
|
|
"value": "Jeddah, Saudi Arabia",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "latitude",
|
|
"value": "21.5433",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "longitude",
|
|
"value": "39.1728",
|
|
"type": "text"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.content).to.eql('Updated post content with @artist_one #live');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Create Video Post (Own)",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/posts",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "content",
|
|
"value": "Video post #music",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "visibility",
|
|
"value": "public",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "durationSeconds",
|
|
"value": "42",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "coverImageFile",
|
|
"type": "file",
|
|
"src": []
|
|
},
|
|
{
|
|
"key": "style",
|
|
"value": "Sharqi",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "maqam",
|
|
"value": "Hijaz",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "mentionUsernames",
|
|
"value": "{{targetUsername}}",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "rhythmSignature",
|
|
"value": "6/8",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "location",
|
|
"value": "Riyadh, Saudi Arabia",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "latitude",
|
|
"value": "24.7136",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "longitude",
|
|
"value": "46.6753",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "videoFile",
|
|
"type": "file",
|
|
"src": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"if (!pm.environment.get('accessToken')) { throw new Error('Missing environment var: accessToken'); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.postType).to.eql('video');",
|
|
"pm.expect(json.media.thumbnailUrl).to.be.a('string');",
|
|
"pm.expect(json.media.preferredPlaybackUrl).to.be.a('string');",
|
|
"if (json.hlsUrl) { pm.expect(json.media.preferredPlaybackUrl).to.eql(json.hlsUrl); }",
|
|
"pm.expect(json.processingStatus).to.eql('ready');",
|
|
"pm.expect(json.media).to.be.an('object');",
|
|
"pm.expect(json.media.mediaType).to.eql(json.postType);",
|
|
"pm.expect(json.durationSeconds).to.eql(42);",
|
|
"if (json.thumbnailUrl) { pm.expect(json.thumbnailUrl).to.be.a('string'); }",
|
|
"pm.expect(json.style).to.eql('Sharqi');",
|
|
"pm.expect(json.maqam).to.eql('Hijaz');",
|
|
"pm.expect(json.rhythmSignature).to.eql('6/8');",
|
|
"pm.environment.set('postId', json._id || json.id);",
|
|
"pm.environment.set('ownPostId', json._id || json.id);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Create Reel (Video First)",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/posts/reels",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "content",
|
|
"value": "New reel from oud session #reel",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "visibility",
|
|
"value": "public",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "durationSeconds",
|
|
"value": "30",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "coverImageFile",
|
|
"type": "file",
|
|
"src": []
|
|
},
|
|
{
|
|
"key": "style",
|
|
"value": "Sharqi",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "maqam",
|
|
"value": "Hijaz",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "rhythmSignature",
|
|
"value": "6/8",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "videoFile",
|
|
"type": "file",
|
|
"src": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"if (!pm.environment.get('accessToken')) { throw new Error('Missing environment var: accessToken'); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.postType).to.eql('video');",
|
|
"pm.expect(json.media.thumbnailUrl).to.be.a('string');",
|
|
"pm.expect(json.media.preferredPlaybackUrl).to.be.a('string');",
|
|
"if (json.hlsUrl) { pm.expect(json.media.preferredPlaybackUrl).to.eql(json.hlsUrl); }",
|
|
"pm.expect(json.processingStatus).to.eql('ready');",
|
|
"pm.expect(json.media).to.be.an('object');",
|
|
"pm.expect(json.media.mediaType).to.eql(json.postType);",
|
|
"pm.expect(json.durationSeconds).to.eql(30);",
|
|
"if (json.thumbnailUrl) { pm.expect(json.thumbnailUrl).to.be.a('string'); }",
|
|
"pm.expect(json.style).to.eql('Sharqi');",
|
|
"pm.expect(json.maqam).to.eql('Hijaz');",
|
|
"pm.expect(json.rhythmSignature).to.eql('6/8');",
|
|
"pm.environment.set('postId', json._id || json.id);",
|
|
"pm.environment.set('ownPostId', json._id || json.id);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get Reels",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/posts/reels?visibility={{postVisibility}}&authorId={{userId}}&sortBy={{postSortBy}}&sortOrder={{listSortOrder}}&page=1&limit=10"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get Reels Filtered",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/posts/reels?visibility={{postVisibility}}&authorId={{userId}}&q={{reelQuery}}&sortBy={{postSortBy}}&sortOrder={{listSortOrder}}&page=1&limit=10"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Create Audio Post (Own)",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/posts",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "content",
|
|
"value": "Audio post #oud",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "visibility",
|
|
"value": "public",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "durationSeconds",
|
|
"value": "54",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "coverImageFile",
|
|
"type": "file",
|
|
"src": []
|
|
},
|
|
{
|
|
"key": "style",
|
|
"value": "Sharqi",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "maqam",
|
|
"value": "Hijaz",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "rhythmSignature",
|
|
"value": "6/8",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "audioFile",
|
|
"type": "file",
|
|
"src": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"if (!pm.environment.get('accessToken')) { throw new Error('Missing environment var: accessToken'); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.postType).to.eql('audio');",
|
|
"pm.expect(json.media.audioUrl).to.be.a('string');",
|
|
"pm.expect(json.media.waveformPeaks).to.be.an('array');",
|
|
"pm.expect(json.media.durationSeconds).to.exist;",
|
|
"pm.expect(json.processingStatus).to.eql('ready');",
|
|
"pm.expect(json.media).to.be.an('object');",
|
|
"pm.expect(json.media.mediaType).to.eql(json.postType);",
|
|
"pm.expect(json.durationSeconds).to.eql(54);",
|
|
"if (json.thumbnailUrl) { pm.expect(json.thumbnailUrl).to.be.a('string'); }",
|
|
"pm.expect(json.style).to.eql('Sharqi');",
|
|
"pm.expect(json.maqam).to.eql('Hijaz');",
|
|
"pm.expect(json.rhythmSignature).to.eql('6/8');",
|
|
"pm.environment.set('postId', json._id || json.id);",
|
|
"pm.environment.set('ownPostId', json._id || json.id);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Create Audio Post (URL + Waveform)",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/posts",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "content",
|
|
"value": "Audio post with waveform #oud #hijaz",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "audioUrl",
|
|
"value": "https://cdn.example.com/audio-sample.mp3",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "durationSeconds",
|
|
"value": "54",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "thumbnailUrl",
|
|
"value": "https://cdn.example.com/audio-cover.jpg",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "style",
|
|
"value": "Sharqi",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "maqam",
|
|
"value": "Hijaz",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "rhythmSignature",
|
|
"value": "6/8",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "waveformPeaks",
|
|
"value": "[12,38,27,49,22,44]",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "visibility",
|
|
"value": "public",
|
|
"type": "text"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"if (!pm.environment.get('accessToken')) { throw new Error('Missing environment var: accessToken'); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.postType).to.eql('audio');",
|
|
"pm.expect(json.media.audioUrl).to.be.a('string');",
|
|
"pm.expect(json.media.waveformPeaks).to.be.an('array');",
|
|
"pm.expect(json.media.durationSeconds).to.exist;",
|
|
"pm.expect(json.processingStatus).to.eql('ready');",
|
|
"pm.expect(json.media).to.be.an('object');",
|
|
"pm.expect(json.media.mediaType).to.eql(json.postType);",
|
|
"pm.expect(json.waveformPeaks).to.be.an('array');",
|
|
"pm.expect(json.waveformPeaks.length).to.eql(6);",
|
|
"pm.expect(json.maqam).to.eql('Hijaz');",
|
|
"pm.environment.set('postId', json._id || json.id);",
|
|
"pm.environment.set('ownPostId', json._id || json.id);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Register Post Play (Audio/Video)",
|
|
"request": {
|
|
"method": "POST",
|
|
"url": "{{baseUrl}}/posts/{{postId}}/play",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
]
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.success).to.eql(true);",
|
|
"pm.expect(json).to.have.property('playCount');",
|
|
"pm.environment.set('lastPlayCount', json.playCount);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Create Invalid Post (Video+Audio)",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/posts",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "content",
|
|
"value": "Invalid post",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "videoUrl",
|
|
"value": "https://cdn.example.com/video.mp4",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "audioUrl",
|
|
"value": "https://cdn.example.com/audio.mp3",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "visibility",
|
|
"value": "public",
|
|
"type": "text"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"if (!pm.environment.get('accessToken')) { throw new Error('Missing environment var: accessToken'); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 400', function () { pm.response.to.have.status(400); });"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Update Post Video (Form-Data)",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/posts/{{postId}}",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "content",
|
|
"value": "Updated with video file",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "durationSeconds",
|
|
"value": "58",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "coverImageFile",
|
|
"type": "file",
|
|
"src": []
|
|
},
|
|
{
|
|
"key": "style",
|
|
"value": "Contemporary",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "maqam",
|
|
"value": "Bayati",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "rhythmSignature",
|
|
"value": "4/4",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "videoFile",
|
|
"type": "file",
|
|
"src": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"const missing = [];",
|
|
"if (!pm.environment.get('accessToken')) missing.push('accessToken');",
|
|
"if (!pm.environment.get('postId')) missing.push('postId');",
|
|
"if (missing.length) { throw new Error('Missing environment vars: ' + missing.join(', ')); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.postType).to.eql('video');",
|
|
"pm.expect(json.durationSeconds).to.eql(58);",
|
|
"if (json.thumbnailUrl) { pm.expect(json.thumbnailUrl).to.be.a('string'); }",
|
|
"pm.expect(json.style).to.eql('Contemporary');",
|
|
"pm.expect(json.maqam).to.eql('Bayati');",
|
|
"pm.expect(json.rhythmSignature).to.eql('4/4');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Update Post Audio (Form-Data)",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/posts/{{postId}}",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "content",
|
|
"value": "Updated with audio file",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "durationSeconds",
|
|
"value": "61",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "coverImageFile",
|
|
"type": "file",
|
|
"src": []
|
|
},
|
|
{
|
|
"key": "style",
|
|
"value": "Tarab",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "maqam",
|
|
"value": "Nahawand",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "rhythmSignature",
|
|
"value": "6/8",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "audioFile",
|
|
"type": "file",
|
|
"src": []
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"const missing = [];",
|
|
"if (!pm.environment.get('accessToken')) missing.push('accessToken');",
|
|
"if (!pm.environment.get('postId')) missing.push('postId');",
|
|
"if (missing.length) { throw new Error('Missing environment vars: ' + missing.join(', ')); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.postType).to.eql('audio');",
|
|
"pm.expect(json.durationSeconds).to.eql(61);",
|
|
"if (json.thumbnailUrl) { pm.expect(json.thumbnailUrl).to.be.a('string'); }",
|
|
"pm.expect(json.style).to.eql('Tarab');",
|
|
"pm.expect(json.maqam).to.eql('Nahawand');",
|
|
"pm.expect(json.rhythmSignature).to.eql('6/8');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Delete Post (Cleanup - Run Last)",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/posts/{{postId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.success).to.eql(true);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Repost Post",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/posts/{{postId}}/repost",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"content\": \"\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"pm.environment.set('repostId', json._id || json.id);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Quote Post",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/posts/{{postId}}/repost",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"content\": \"My take on this post\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"pm.environment.set('quotePostId', json._id || json.id);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Update Post Comment Settings",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/posts/{{postId}}/comment-settings",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"posts",
|
|
"{{postId}}",
|
|
"comment-settings"
|
|
],
|
|
"query": []
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"commentsDisabled\": false,\n \"commentsFollowersOnly\": true,\n \"commentFilterKeywords\": [\n \"{{commentKeyword}}\",\n \"offensive\"\n ]\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Pin Post To Profile",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/posts/{{postId}}/pin-profile",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"posts",
|
|
"{{postId}}",
|
|
"pin-profile"
|
|
],
|
|
"query": []
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Unpin Post From Profile",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/posts/{{postId}}/unpin-profile",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"posts",
|
|
"{{postId}}",
|
|
"unpin-profile"
|
|
],
|
|
"query": []
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Archive Post",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/posts/{{postId}}/archive",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"posts",
|
|
"{{postId}}",
|
|
"archive"
|
|
],
|
|
"query": []
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Restore Archived Post",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/posts/{{postId}}/restore-archive",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"posts",
|
|
"{{postId}}",
|
|
"restore-archive"
|
|
],
|
|
"query": []
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Create Carousel Post With Metadata",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/posts",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"posts"
|
|
],
|
|
"query": []
|
|
},
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "content",
|
|
"value": "Carousel caption #oud",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "imageUrls",
|
|
"value": "https://cdn.example.com/1.jpg,https://cdn.example.com/2.jpg",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "imageCaptions",
|
|
"value": "First image,Second image",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "imageAltTexts",
|
|
"value": "Oud on stage,Audience closeup",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "collaboratorIds",
|
|
"value": "{{collaboratorId}}",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "commentsDisabled",
|
|
"value": "false",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "commentsFollowersOnly",
|
|
"value": "false",
|
|
"type": "text"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test(\"Request succeeded\", function () { pm.expect(pm.response.code).to.be.oneOf([200, 201]); });",
|
|
"const json = pm.response.json();",
|
|
"const value = json.item;",
|
|
"if (value) pm.environment.set(\"postId\", value._id || value.id || value);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Update Carousel Alt Text",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/posts/{{postId}}",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"posts",
|
|
"{{postId}}"
|
|
],
|
|
"query": []
|
|
},
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "imageUrls",
|
|
"value": "https://cdn.example.com/1.jpg,https://cdn.example.com/2.jpg",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "imageCaptions",
|
|
"value": "Updated first,Updated second",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "imageAltTexts",
|
|
"value": "Updated oud alt,Updated audience alt",
|
|
"type": "text"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Disable Comments On Post",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/posts/{{postId}}/comment-settings",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"posts",
|
|
"{{postId}}",
|
|
"comment-settings"
|
|
],
|
|
"query": []
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"commentsDisabled\": true,\n \"commentsFollowersOnly\": false,\n \"commentFilterKeywords\": []\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Enable Comments On Post",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/posts/{{postId}}/comment-settings",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"posts",
|
|
"{{postId}}",
|
|
"comment-settings"
|
|
],
|
|
"query": []
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"commentsDisabled\": false,\n \"commentsFollowersOnly\": false,\n \"commentFilterKeywords\": []\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Admin Get Posts Moderation",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/posts/admin/moderation?page=1&limit=20&moderationStatus=flagged",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"posts",
|
|
"admin",
|
|
"moderation"
|
|
],
|
|
"query": [
|
|
{
|
|
"key": "page",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "limit",
|
|
"value": "20"
|
|
},
|
|
{
|
|
"key": "moderationStatus",
|
|
"value": "flagged"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Collaboration Requests",
|
|
"item": [
|
|
{
|
|
"name": "Create Collaboration Request",
|
|
"request": {
|
|
"method": "POST",
|
|
"url": "{{baseUrl}}/posts/{{postId}}/collaboration-requests",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"targetUserId\": \"{{targetUserId}}\",\n \"collaborationType\": \"{{collaborationType}}\",\n \"message\": \"{{collaborationMessage}}\",\n \"attachmentUrl\": \"{{collaborationAttachmentUrl}}\",\n \"attachmentType\": \"{{collaborationAttachmentType}}\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200 or 201', function () { pm.expect([200, 201]).to.include(pm.response.code); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('request');",
|
|
"pm.environment.set('collaborationRequestId', json.request._id || json.request.id);",
|
|
"pm.test('Rich collaboration fields are accepted', function () {",
|
|
" pm.expect(json.request).to.have.property('collaborationType');",
|
|
" pm.expect(json.request).to.have.property('message');",
|
|
" pm.expect(json.request).to.have.property('attachmentUrl');",
|
|
" pm.expect(json.request).to.have.property('attachmentType');",
|
|
"});"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "List My Collaboration Requests",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/collaboration-requests?page=1&limit=20",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
]
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('items');",
|
|
"pm.expect(json).to.have.property('pagination');",
|
|
"if (json.items.length) {",
|
|
" pm.environment.set('collaborationRequestId', json.items[0]._id || json.items[0].id);",
|
|
" pm.expect(json.items[0]).to.have.property('status');",
|
|
" pm.expect(json.items[0]).to.have.property('collaborationType');",
|
|
"}"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Approve Collaboration Request",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"url": "{{baseUrl}}/collaboration-requests/{{collaborationRequestId}}/approve",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
]
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('approved', true);",
|
|
"pm.expect(json).to.have.property('request');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Reject Collaboration Request",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"url": "{{baseUrl}}/collaboration-requests/{{collaborationRequestId}}/reject",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
]
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('rejected', true);",
|
|
"pm.expect(json).to.have.property('request');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Comments",
|
|
"item": [
|
|
{
|
|
"name": "Create Comment",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
},
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/comments",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"postId\": \"{{postId}}\",\n \"content\": \"Awesome post!\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"const missing = [];",
|
|
"if (!pm.environment.get('accessToken')) missing.push('accessToken');",
|
|
"if (!pm.environment.get('postId')) missing.push('postId');",
|
|
"if (missing.length) { throw new Error('Missing environment vars: ' + missing.join(', ')); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"const cid = json._id || json.id;",
|
|
"pm.environment.set('commentId', cid);",
|
|
"pm.environment.set('ownCommentId', cid);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Create Comment With Mention",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
},
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/comments",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"postId\": \"{{postId}}\",\n \"content\": \"Awesome post @{{targetUsername}}!\",\n \"mentionUsernames\": [\"{{targetUsername}}\"]\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"const missing = [];",
|
|
"if (!pm.environment.get('accessToken')) missing.push('accessToken');",
|
|
"if (!pm.environment.get('postId')) missing.push('postId');",
|
|
"if (!pm.environment.get('targetUsername')) missing.push('targetUsername');",
|
|
"if (missing.length) { throw new Error('Missing environment vars: ' + missing.join(', ')); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"const cid = json._id || json.id;",
|
|
"pm.environment.set('commentId', cid);",
|
|
"pm.expect(json.mentionUsernames || []).to.include(pm.environment.get('targetUsername').toLowerCase());"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get Post Comments",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/comments/post/{{postId}}?page=1&limit=10&sortBy={{commentSortBy}}&sortOrder={{listSortOrder}}",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
]
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Create Comment Reply",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/comments/{{commentId}}/replies",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"comments",
|
|
"{{commentId}}",
|
|
"replies"
|
|
],
|
|
"query": []
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"content\": \"Reply to comment\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test(\"Request succeeded\", function () { pm.expect(pm.response.code).to.be.oneOf([200, 201]); });",
|
|
"const json = pm.response.json();",
|
|
"const value = json.item;",
|
|
"if (value) pm.environment.set(\"replyCommentId\", value._id || value.id || value);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get Comment Replies",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/comments/{{commentId}}/replies?page=1&limit=10&sortBy={{commentSortBy}}&sortOrder={{listSortOrder}}",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
]
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Update Comment",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
},
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/comments/{{commentId}}",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"content\": \"Edited comment @{{secondaryUsername}}\",\n \"mentionUsernames\": [\"{{secondaryUsername}}\"]\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.content).to.include('Edited comment');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Delete Comment",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/comments/{{commentId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Admin Delete Comment",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/comments/admin/{{commentId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.success).to.eql(true);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Pin Comment",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/comments/{{commentId}}/pin",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"comments",
|
|
"{{commentId}}",
|
|
"pin"
|
|
],
|
|
"query": []
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Unpin Comment",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/comments/{{commentId}}/unpin",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"comments",
|
|
"{{commentId}}",
|
|
"unpin"
|
|
],
|
|
"query": []
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Create Comment Hidden By Filter",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/comments",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"comments"
|
|
],
|
|
"query": []
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"postId\": \"{{postId}}\",\n \"content\": \"This contains {{commentKeyword}} keyword\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get Post Comments - Top",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/comments/post/{{postId}}?page=1&limit=20&sortBy=top&sortOrder=desc",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"comments",
|
|
"post",
|
|
"{{postId}}"
|
|
],
|
|
"query": [
|
|
{
|
|
"key": "page",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "limit",
|
|
"value": "20"
|
|
},
|
|
{
|
|
"key": "sortBy",
|
|
"value": "top"
|
|
},
|
|
{
|
|
"key": "sortOrder",
|
|
"value": "desc"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get Post Comments - Newest",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/comments/post/{{postId}}?page=1&limit=20&sortBy=createdAt&sortOrder=desc",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"comments",
|
|
"post",
|
|
"{{postId}}"
|
|
],
|
|
"query": [
|
|
{
|
|
"key": "page",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "limit",
|
|
"value": "20"
|
|
},
|
|
{
|
|
"key": "sortBy",
|
|
"value": "createdAt"
|
|
},
|
|
{
|
|
"key": "sortOrder",
|
|
"value": "desc"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Admin List Comments",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/comments/admin?page=1&limit=20&moderationStatus=flagged",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"comments",
|
|
"admin"
|
|
],
|
|
"query": [
|
|
{
|
|
"key": "page",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "limit",
|
|
"value": "20"
|
|
},
|
|
{
|
|
"key": "moderationStatus",
|
|
"value": "flagged"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Likes",
|
|
"item": [
|
|
{
|
|
"name": "Like Post (Set liked=true)",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
},
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/likes",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"targetId\": \"{{postId}}\",\n \"targetType\": \"post\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"const missing = [];",
|
|
"if (!pm.environment.get('accessToken')) missing.push('accessToken');",
|
|
"if (!pm.environment.get('postId')) missing.push('postId');",
|
|
"if (missing.length) { throw new Error('Missing environment vars: ' + missing.join(', ')); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.liked).to.eql(true);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Unlike Post (Set liked=false)",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/likes/post/{{postId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.liked).to.eql(false);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get Post Like Status",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/likes/status/post/{{postId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('liked');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Like Comment",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
},
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/likes",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"targetId\": \"{{commentId}}\",\n \"targetType\": \"comment\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.liked).to.eql(true);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Unlike Comment",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/likes/comment/{{commentId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.liked).to.eql(false);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get Comment Like Status",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/likes/status/comment/{{commentId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('liked');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "React To Post",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
},
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/likes",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"targetId\": \"{{postId}}\",\n \"targetType\": \"post\",\n \"reactionType\": \"{{reactionType}}\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.reactionType).to.exist;"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Reaction Status - Post",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/likes/status/post/{{postId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('reactionSummary');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Toggle Like",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/likes/toggle",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"likes",
|
|
"toggle"
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"targetType\": \"post\",\n \"targetId\": \"{{postId}}\",\n \"reactionType\": \"like\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Saves",
|
|
"item": [
|
|
{
|
|
"name": "Save Post (Set saved=true)",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
},
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/saves",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"postId\": \"{{postId}}\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"const missing = [];",
|
|
"if (!pm.environment.get('accessToken')) missing.push('accessToken');",
|
|
"if (!pm.environment.get('postId')) missing.push('postId');",
|
|
"if (missing.length) { throw new Error('Missing environment vars: ' + missing.join(', ')); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.saved).to.eql(true);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Unsave Post (Set saved=false)",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/saves/{{postId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.saved).to.eql(false);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get Save Status",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/saves/status/{{postId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('saved');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get My Saved Posts",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/saves/me?page=1&limit=10&sortOrder={{listSortOrder}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Toggle Save",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/saves/toggle",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"saves",
|
|
"toggle"
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"postId\": \"{{postId}}\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Follows",
|
|
"item": [
|
|
{
|
|
"name": "Toggle Follow User",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
},
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/follows/toggle",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"targetUserId\": \"{{targetUserId}}\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"const missing = [];",
|
|
"if (!pm.environment.get('accessToken')) missing.push('accessToken');",
|
|
"if (!pm.environment.get('targetUserId')) missing.push('targetUserId');",
|
|
"if (missing.length) { throw new Error('Missing environment vars: ' + missing.join(', ')); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('following');",
|
|
"pm.environment.set('lastFollowingState', json.following ? 'following' : 'not_following');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get Followers",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/follows/followers/{{userId}}?page=1&limit=10&sortOrder={{listSortOrder}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get Following",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/follows/following/{{userId}}?page=1&limit=10&sortOrder={{listSortOrder}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get Follow Status",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/follows/status/{{targetUserId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('following');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get Follow Suggestions",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/follows/suggestions?page=1&limit=10&sortOrder={{listSortOrder}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "List Follow Requests",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/follows/requests?page=1&limit=20"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"if (json.items && json.items.length) { pm.environment.set('followRequestId', json.items[0]._id || json.items[0].id); }"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Approve Follow Request",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/follows/requests/{{followRequestId}}/approve"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Reject Follow Request",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/follows/requests/{{followRequestId}}/reject"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Notifications",
|
|
"item": [
|
|
{
|
|
"name": "Get My Notifications",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/notifications?read={{notificationRead}}&sortOrder={{listSortOrder}}&page=1&limit=20"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;",
|
|
"if (json.items && json.items.length > 0) {",
|
|
" pm.environment.set('notificationId', json.items[0]._id || json.items[0].id);",
|
|
" pm.expect(json.items[0]).to.have.property('title');",
|
|
" pm.expect(json.items[0]).to.have.property('resourceType');",
|
|
" pm.expect(json.items[0]).to.have.property('deepLink');",
|
|
"}"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get My Notifications Filtered",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/notifications?read={{notificationRead}}&type={{notificationType}}&resourceType={{notificationResourceType}}&sortOrder={{listSortOrder}}&page=1&limit=20"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get Target User Notifications",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{targetAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/notifications?page=1&limit=20&read=false&sortOrder={{listSortOrder}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;",
|
|
"pm.environment.set('notificationUnreadCount', json.unreadCount || 0);",
|
|
"const followNotification = (json.items || []).find(item => item.type === 'follow');",
|
|
"if (followNotification) {",
|
|
" pm.environment.set('notificationId', followNotification._id || followNotification.id);",
|
|
" pm.expect(followNotification).to.have.property('title');",
|
|
" pm.expect(followNotification).to.have.property('resourceType');",
|
|
" pm.expect(followNotification).to.have.property('deepLink');",
|
|
"}"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get Unread Notifications Count",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/notifications/unread-count"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('unreadCount');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get Target User Unread Notifications Count",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{targetAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/notifications/unread-count"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('unreadCount');",
|
|
"pm.environment.set('notificationUnreadCount', json.unreadCount || 0);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Mark Notification Read",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/notifications/{{notificationId}}/read"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('unreadCount');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Mark Target Notification Read",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{targetAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/notifications/{{notificationId}}/read"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('unreadCount');",
|
|
"pm.environment.set('notificationUnreadCount', json.unreadCount || 0);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Mark All Notifications Read",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/notifications/read-all"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.unreadCount).to.eql(0);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Mark All Target Notifications Read",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{targetAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/notifications/read-all"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.unreadCount).to.eql(0);",
|
|
"pm.environment.set('notificationUnreadCount', 0);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "SuperAdmin Notifications",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/notifications/superadmin?page=1&limit=20&type={{notificationType}}",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"notifications",
|
|
"superadmin"
|
|
],
|
|
"query": [
|
|
{
|
|
"key": "page",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "limit",
|
|
"value": "20"
|
|
},
|
|
{
|
|
"key": "type",
|
|
"value": "{{notificationType}}"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Chat",
|
|
"item": [
|
|
{
|
|
"name": "Create Conversation",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
},
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/chat/conversations",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"participantIds\": [\"{{targetUserId}}\"],\n \"isGroup\": false\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"const missing = [];",
|
|
"if (!pm.environment.get('accessToken')) missing.push('accessToken');",
|
|
"if (!pm.environment.get('targetUserId')) missing.push('targetUserId');",
|
|
"if (missing.length) { throw new Error('Missing environment vars: ' + missing.join(', ')); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"pm.environment.set('conversationId', json._id || json.id);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get My Conversations",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/chat/conversations?limit=20&cursor={{chatConversationsCursor}}&sortOrder={{listSortOrder}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.pagination).to.exist;",
|
|
"if (json.items && json.items.length > 0) { pm.environment.set('conversationId', json.items[0]._id || json.items[0].id); }",
|
|
"pm.environment.set('chatConversationsCursor', json.nextCursor || '');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Send Message",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/chat/messages",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"chat",
|
|
"messages"
|
|
],
|
|
"query": []
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"conversationId\": \"{{conversationId}}\",\n \"content\": \"Hello from Postman\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test(\"Request succeeded\", function () { pm.expect(pm.response.code).to.be.oneOf([200, 201]); });",
|
|
"const json = pm.response.json();",
|
|
"const value = json.item;",
|
|
"if (value) pm.environment.set(\"messageId\", value._id || value.id || value);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get Conversation Messages",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/chat/conversations/{{conversationId}}/messages?limit=20&cursor={{chatMessagesCursor}}&sortOrder={{listSortOrder}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.pagination).to.exist;",
|
|
"pm.environment.set('chatMessagesCursor', json.nextCursor || '');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Mark Message Seen",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/chat/messages/{{messageId}}/seen"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Unsend Message",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/chat/messages/{{messageId}}/unsend"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Block User In Chat",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/chat/blocks/{{targetUserId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.blocked).to.eql(true);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Unblock User In Chat",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/chat/blocks/{{targetUserId}}/unblock"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get Chat Block Status",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/chat/blocks/status/{{targetUserId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('iBlocked');",
|
|
"pm.expect(json).to.have.property('blockedMe');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get My Chat Blocks",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/chat/blocks"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Send Reply Message",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/chat/messages",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"chat",
|
|
"messages"
|
|
],
|
|
"query": []
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"conversationId\": \"{{conversationId}}\",\n \"content\": \"Replying to a message\",\n \"replyToMessageId\": \"{{replyToMessageId}}\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test(\"Request succeeded\", function () { pm.expect(pm.response.code).to.be.oneOf([200, 201]); });",
|
|
"const json = pm.response.json();",
|
|
"const value = json.item;",
|
|
"if (value) pm.environment.set(\"messageId\", value._id || value.id || value);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Send Message Media Upload",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/chat/messages/upload",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"chat",
|
|
"messages",
|
|
"upload"
|
|
],
|
|
"query": []
|
|
},
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "conversationId",
|
|
"value": "{{conversationId}}",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "content",
|
|
"value": "Media message caption",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "replyToMessageId",
|
|
"value": "{{replyToMessageId}}",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "mediaFile",
|
|
"type": "file",
|
|
"src": "{{mediaFilePath}}"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test(\"Request succeeded\", function () { pm.expect(pm.response.code).to.be.oneOf([200, 201]); });",
|
|
"const json = pm.response.json();",
|
|
"const value = json.item;",
|
|
"if (value) pm.environment.set(\"messageId\", value._id || value.id || value);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "React To Message",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/chat/messages/{{messageId}}/reaction",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"chat",
|
|
"messages",
|
|
"{{messageId}}",
|
|
"reaction"
|
|
],
|
|
"query": []
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"reactionType\": \"love\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Delete Message For Me",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/chat/messages/{{messageId}}/delete-for-me",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"chat",
|
|
"messages",
|
|
"{{messageId}}",
|
|
"delete-for-me"
|
|
],
|
|
"query": []
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Feed",
|
|
"item": [
|
|
{
|
|
"name": "Get My Feed Mixed Home",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/feed/me?page=1&limit=20&includeSuggestions={{feedIncludeSuggestions}}&suggestionInterval={{feedSuggestionInterval}}&followingOnly={{feedFollowingOnly}}&radiusKm={{feedRadiusKm}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"if (json.items && json.items.length > 0) {",
|
|
" pm.expect(json.items[0]).to.have.property('feedItemType');",
|
|
"}",
|
|
"const hasMixedItems = (json.items || []).some(item => item.feedItemType === 'suggested_users' || item.feedItemType === 'featured_marketplace');",
|
|
"pm.environment.set('homeFeedHasMixedItems', hasMixedItems ? 'true' : 'false');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get My Feed",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/feed/me?limit=20&cursor={{feedCursor}}&followingOnly={{feedFollowingOnly}}&radiusKm={{feedRadiusKm}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;",
|
|
"const firstPost = (json.items || []).find(item => item.feedItemType === 'post');",
|
|
"if (firstPost) {",
|
|
" pm.expect(firstPost).to.have.property('likedByMe');",
|
|
" pm.expect(firstPost).to.have.property('savedByMe');",
|
|
" pm.expect(firstPost).to.have.property('engagement');",
|
|
"}",
|
|
"pm.environment.set('feedCursor', json.nextCursor || '');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get My Feed Preferred Type",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/feed/me?limit=20&cursor={{feedCursor}}&preferredPostType={{feedPreferredPostType}}&followingOnly={{feedFollowingOnly}}&radiusKm={{feedRadiusKm}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.pagination).to.exist;",
|
|
"const firstPost = (json.items || []).find(item => item.feedItemType === 'post');",
|
|
"if (firstPost) { pm.expect(firstPost).to.have.property('engagement'); }",
|
|
"pm.environment.set('feedCursor', json.nextCursor || '');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get Trending Feed",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/feed/trending?limit=20&cursor={{feedCursor}}&preferredPostType={{feedPreferredPostType}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;",
|
|
"const firstPost = (json.items || []).find(item => item.feedItemType === 'post');",
|
|
"if (firstPost) {",
|
|
" pm.expect(firstPost).to.have.property('likedByMe');",
|
|
" pm.expect(firstPost).to.have.property('savedByMe');",
|
|
"}",
|
|
"pm.environment.set('feedCursor', json.nextCursor || '');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Explore Feed",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/feed/explore?page=1&limit=20"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Smoke",
|
|
"item": [
|
|
{
|
|
"name": "Login (Smoke)",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/auth/login",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"email\": \"{{registerEmail}}\",\n \"password\": \"StrongPass123!\"\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"const uid = json.user._id || json.user.id;",
|
|
"pm.environment.set('accessToken', json.accessToken);",
|
|
"pm.environment.set('refreshToken', json.refreshToken);",
|
|
"pm.environment.set('userId', uid);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Get User Posts (Smoke)",
|
|
"request": {
|
|
"method": "GET",
|
|
"url": "{{baseUrl}}/posts/user/{{userId}}?page=1&limit=10",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"name": "Get My Feed (Smoke)",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/feed/me?limit=20&cursor={{feedCursor}}&radiusKm=30"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Full E2E",
|
|
"item": [
|
|
{
|
|
"name": "Create Post (Own) - E2E",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/posts",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "content",
|
|
"value": "E2E text post",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "visibility",
|
|
"value": "public",
|
|
"type": "text"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Create Comment - E2E",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
},
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/comments",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"postId\": \"{{postId}}\",\n \"content\": \"E2E comment\"\n}"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Like Post - E2E",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
},
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/likes",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"targetId\": \"{{postId}}\",\n \"targetType\": \"post\"\n}"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Save Post - E2E",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
},
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/saves",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"postId\": \"{{postId}}\"\n}"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Delete Post - E2E Cleanup",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/posts/{{postId}}"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Negative Tests",
|
|
"item": [
|
|
{
|
|
"name": "Create Invalid Post (Video+Audio) - Negative",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/posts",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "content",
|
|
"value": "Invalid post",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "videoUrl",
|
|
"value": "https://cdn.example.com/video.mp4",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "audioUrl",
|
|
"value": "https://cdn.example.com/audio.mp3",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "visibility",
|
|
"value": "public",
|
|
"type": "text"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 400', function () { pm.response.to.have.status(400); });"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Create Post Without Token - Negative",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [],
|
|
"url": "{{baseUrl}}/posts",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "content",
|
|
"value": "No token request",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "visibility",
|
|
"value": "public",
|
|
"type": "text"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 401', function () { pm.response.to.have.status(401); });"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Cleanup",
|
|
"item": [
|
|
{
|
|
"name": "Delete Own Comment (if exists)",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/comments/{{ownCommentId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"if (!pm.environment.get('ownCommentId')) { postman.setNextRequest('Delete Own Post (if exists)'); }"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Delete Own Post (if exists)",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/posts/{{ownPostId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"if (!pm.environment.get('ownPostId')) { postman.setNextRequest('Delete Instrument (if exists)'); }"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Delete Instrument (if exists)",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{adminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/marketplace/admin/instruments/{{instrumentId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"if (!pm.environment.get('instrumentId')) { postman.setNextRequest(null); }"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "AI Music",
|
|
"item": [
|
|
{
|
|
"name": "Generate Music From Text (Gemini)",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
},
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/media/ai/text-to-music",
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"prompt\": \"{{aiMusicPrompt}}\",\n \"durationSeconds\": {{aiMusicDuration}},\n \"seed\": {{aiMusicSeed}}\n}"
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"if (!pm.environment.get('aiMusicPrompt')) { pm.environment.set('aiMusicPrompt', 'Calm oud melody with light percussion and emotional Arabic mood'); }",
|
|
"if (!pm.environment.get('aiMusicDuration')) { pm.environment.set('aiMusicDuration', '12'); }",
|
|
"if (!pm.environment.get('aiMusicSeed')) { pm.environment.set('aiMusicSeed', '42'); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.audioUrl).to.exist;",
|
|
"pm.expect(json.mimeType).to.exist;",
|
|
"pm.expect(json.sizeBytes).to.be.a('number');",
|
|
"pm.environment.set('generatedMusicUrl', json.audioUrl);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Marketplace",
|
|
"item": [
|
|
{
|
|
"name": "01 Marketplace Overview",
|
|
"item": [
|
|
{
|
|
"name": "Public Marketplace Home",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": "{{baseUrl}}/marketplace/home?listingsLimit=4&instrumentsLimit=4&repairShopsLimit=3&onlyActive=true"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('categories');",
|
|
"pm.expect(json).to.have.property('summary');",
|
|
"pm.expect(json).to.have.property('featuredShops');",
|
|
"pm.expect(json.filters).to.have.property('listingCategories');",
|
|
"pm.expect(json.sections).to.have.property('listings');",
|
|
"pm.expect(json.sections).to.have.property('musicalInstruments');",
|
|
"pm.expect(json.sections).to.have.property('repairShops');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "02 Shop Profile",
|
|
"item": [
|
|
{
|
|
"name": "Admin",
|
|
"item": [
|
|
{
|
|
"name": "Admin Update Shop Profile",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{adminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/marketplace/admin/shop-profile",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "shopName",
|
|
"value": "Awtarna Store",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "shopDescription",
|
|
"value": "Trusted marketplace shop profile",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "shopLocation",
|
|
"value": "Riyadh",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "shopLatitude",
|
|
"value": "24.7136",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "shopLongitude",
|
|
"value": "46.6753",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "shopImageFiles",
|
|
"type": "file",
|
|
"src": [],
|
|
"disabled": true
|
|
},
|
|
{
|
|
"key": "shopImageFiles",
|
|
"type": "file",
|
|
"src": [],
|
|
"disabled": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"if (!pm.environment.get('adminAccessToken')) { throw new Error('Missing environment var: adminAccessToken'); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.shopName).to.eql('Oudelaa Music Store');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Admin Get My Shop Profile",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{adminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/marketplace/admin/shop-profile/me"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('shopName');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Public",
|
|
"item": [
|
|
{
|
|
"name": "Public Get Shop By Admin Id",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": "{{baseUrl}}/marketplace/shops/{{adminUserId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json).to.have.property('shopName');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "03 Repair Shops",
|
|
"item": [
|
|
{
|
|
"name": "Admin",
|
|
"item": [
|
|
{
|
|
"name": "Admin Create Repair Shop (One Shop Per Admin)",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{adminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/marketplace/admin/repair-shops",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "name",
|
|
"value": "Fix Strings Workshop",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "description",
|
|
"value": "Repair shop for oud and violin",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "services",
|
|
"value": "repair,setup,cleaning",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "phone",
|
|
"value": "+966500000000",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "whatsapp",
|
|
"value": "+966500000000",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "location",
|
|
"value": "Riyadh",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "latitude",
|
|
"value": "24.7136",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "longitude",
|
|
"value": "46.6753",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "isActive",
|
|
"value": "true",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "imageFiles",
|
|
"type": "file",
|
|
"src": [],
|
|
"disabled": true
|
|
},
|
|
{
|
|
"key": "imageFiles",
|
|
"type": "file",
|
|
"src": [],
|
|
"disabled": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"if (!pm.environment.get('adminAccessToken')) { throw new Error('Missing environment var: adminAccessToken'); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"pm.environment.set('repairShopId', json._id || json.id);",
|
|
"pm.expect(json.name).to.eql('Oudelaa Repair Center');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Admin Create Second Repair Shop Should Fail",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{adminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/marketplace/admin/repair-shops",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "name",
|
|
"value": "Fix Strings Workshop",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "description",
|
|
"value": "Repair shop for oud and violin",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "services",
|
|
"value": "repair,setup,cleaning",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "phone",
|
|
"value": "+966500000000",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "whatsapp",
|
|
"value": "+966500000000",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "location",
|
|
"value": "Riyadh",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "latitude",
|
|
"value": "24.7136",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "longitude",
|
|
"value": "46.6753",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "isActive",
|
|
"value": "true",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "imageFiles",
|
|
"type": "file",
|
|
"src": [],
|
|
"disabled": true
|
|
},
|
|
{
|
|
"key": "imageFiles",
|
|
"type": "file",
|
|
"src": [],
|
|
"disabled": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"if (!pm.environment.get('adminAccessToken')) { throw new Error('Missing environment var: adminAccessToken'); }",
|
|
"if (!pm.environment.get('repairShopId')) { throw new Error('Create the first repair shop before running this negative test.'); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 400', function () { pm.response.to.have.status(400); });",
|
|
"const json = pm.response.json();",
|
|
"const messages = Array.isArray(json.message) ? json.message : [json.message];",
|
|
"pm.expect(messages.join(' ')).to.include('Each admin can create one marketplace shop only');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Admin Update Repair Shop",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{adminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/marketplace/admin/repair-shops/{{repairShopId}}",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "name",
|
|
"value": "Updated Fix Strings Workshop",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "description",
|
|
"value": "Updated repair shop description",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "services",
|
|
"value": "repair,setup,polishing",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "phone",
|
|
"value": "+966511111111",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "whatsapp",
|
|
"value": "+966511111111",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "location",
|
|
"value": "Jeddah",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "latitude",
|
|
"value": "21.5433",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "longitude",
|
|
"value": "39.1728",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "isActive",
|
|
"value": "true",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "imageFiles",
|
|
"type": "file",
|
|
"src": [],
|
|
"disabled": true
|
|
},
|
|
{
|
|
"key": "imageFiles",
|
|
"type": "file",
|
|
"src": [],
|
|
"disabled": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Admin Get My Repair Shops",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{adminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/marketplace/admin/repair-shops/me?q={{repairShopQuery}}&isActive={{repairShopIsActive}}&sortBy={{repairShopSortBy}}&sortOrder={{listSortOrder}}&page=1&limit=20"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;",
|
|
"if (json.items && json.items.length > 0) { pm.environment.set('repairShopId', json.items[0]._id || json.items[0].id); }"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Admin Delete Repair Shop",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{adminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/marketplace/admin/repair-shops/{{repairShopId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.success).to.eql(true);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Public",
|
|
"item": [
|
|
{
|
|
"name": "Public List Repair Shops",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": "{{baseUrl}}/marketplace/repair-shops?q={{repairShopQuery}}&isActive={{repairShopIsActive}}&sortBy={{repairShopSortBy}}&sortOrder={{listSortOrder}}&page=1&limit=20"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;",
|
|
"if (json.items && json.items.length > 0) { pm.environment.set('repairShopId', json.items[0]._id || json.items[0].id); }"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Public Get Repair Shop By Id",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": "{{baseUrl}}/marketplace/repair-shops/{{repairShopId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "04 Musical Instruments",
|
|
"item": [
|
|
{
|
|
"name": "Admin",
|
|
"item": [
|
|
{
|
|
"name": "Admin Create Instrument",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{adminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/marketplace/admin/instruments",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "title",
|
|
"value": "Concert Guitar",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "description",
|
|
"value": "Acoustic guitar in excellent condition",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "price",
|
|
"value": "2100",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "currency",
|
|
"value": "SAR",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "quantity",
|
|
"value": "1",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "condition",
|
|
"value": "used",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "instrumentType",
|
|
"value": "Guitar",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "imageFiles",
|
|
"type": "file",
|
|
"src": [],
|
|
"disabled": true
|
|
},
|
|
{
|
|
"key": "imageFiles",
|
|
"type": "file",
|
|
"src": [],
|
|
"disabled": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"if (!pm.environment.get('adminAccessToken')) { throw new Error('Missing environment var: adminAccessToken'); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"pm.environment.set('instrumentId', json._id || json.id);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Admin Update Instrument",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{adminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/marketplace/admin/instruments/{{instrumentId}}",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "title",
|
|
"value": "Updated Concert Guitar",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "description",
|
|
"value": "Updated instrument description",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "price",
|
|
"value": "2400",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "currency",
|
|
"value": "SAR",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "quantity",
|
|
"value": "1",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "condition",
|
|
"value": "used",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "instrumentType",
|
|
"value": "Violin",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "imageFiles",
|
|
"type": "file",
|
|
"src": [],
|
|
"disabled": true
|
|
},
|
|
{
|
|
"key": "imageFiles",
|
|
"type": "file",
|
|
"src": [],
|
|
"disabled": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Admin Get My Instruments",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{adminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/marketplace/admin/instruments/me?q={{marketplaceQuery}}&minPrice={{marketplaceMinPrice}}&maxPrice={{marketplaceMaxPrice}}&isActive={{marketplaceIsActive}}&condition={{marketplaceCondition}}&instrumentType={{marketplaceInstrumentType}}&sortBy={{marketplaceSortBy}}&sortOrder={{listSortOrder}}&page=1&limit=20"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;",
|
|
"if (json.items && json.items.length > 0) { pm.environment.set('instrumentId', json.items[0]._id || json.items[0].id); }"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Admin Delete Instrument",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{adminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/marketplace/admin/instruments/{{instrumentId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.success).to.eql(true);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Public",
|
|
"item": [
|
|
{
|
|
"name": "Public List Instruments",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": "{{baseUrl}}/marketplace/instruments?q={{marketplaceQuery}}&minPrice={{marketplaceMinPrice}}&maxPrice={{marketplaceMaxPrice}}&isActive={{marketplaceIsActive}}&condition={{marketplaceCondition}}&instrumentType={{marketplaceInstrumentType}}&sortBy={{marketplaceSortBy}}&sortOrder={{listSortOrder}}&page=1&limit=20"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;",
|
|
"if (json.items && json.items.length > 0) { pm.environment.set('instrumentId', json.items[0]._id || json.items[0].id); }"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Public Get Instrument By Id",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": "{{baseUrl}}/marketplace/instruments/{{instrumentId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "05 General Marketplace",
|
|
"item": [
|
|
{
|
|
"name": "Admin",
|
|
"item": [
|
|
{
|
|
"name": "Admin Create Listing",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{adminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/marketplace/admin/listings",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "title",
|
|
"value": "Microphone SM58",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "description",
|
|
"value": "Durable dynamic microphone for studio and stage",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "price",
|
|
"value": "450",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "currency",
|
|
"value": "SAR",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "quantity",
|
|
"value": "1",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "condition",
|
|
"value": "used",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "instrumentType",
|
|
"value": "Microphone",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "listingCategory",
|
|
"value": "audio_gear",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "isActive",
|
|
"value": "true",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "imageFiles",
|
|
"type": "file",
|
|
"src": [],
|
|
"disabled": true
|
|
},
|
|
{
|
|
"key": "imageFiles",
|
|
"type": "file",
|
|
"src": [],
|
|
"disabled": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "prerequest",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"if (!pm.environment.get('adminAccessToken')) { throw new Error('Missing environment var: adminAccessToken'); }"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });",
|
|
"const json = pm.response.json();",
|
|
"pm.environment.set('listingId', json._id || json.id);",
|
|
"pm.expect(json.listingCategory).to.eql('accessory');"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Admin Update Listing",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{adminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/marketplace/admin/listings/{{listingId}}",
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "title",
|
|
"value": "Updated Microphone SM58",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "description",
|
|
"value": "Updated marketplace listing description",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "price",
|
|
"value": "500",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "currency",
|
|
"value": "SAR",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "quantity",
|
|
"value": "1",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "condition",
|
|
"value": "used",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "instrumentType",
|
|
"value": "Microphone",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "listingCategory",
|
|
"value": "audio_gear",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "isActive",
|
|
"value": "true",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "imageFiles",
|
|
"type": "file",
|
|
"src": [],
|
|
"disabled": true
|
|
},
|
|
{
|
|
"key": "imageFiles",
|
|
"type": "file",
|
|
"src": [],
|
|
"disabled": true
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Admin Get My Listings",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{adminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/marketplace/admin/listings/me?q={{marketplaceQuery}}&minPrice={{marketplaceMinPrice}}&maxPrice={{marketplaceMaxPrice}}&isActive={{marketplaceIsActive}}&listingCategory={{marketplaceListingCategory}}&condition={{marketplaceCondition}}&instrumentType={{marketplaceInstrumentType}}&sortBy={{marketplaceSortBy}}&sortOrder={{listSortOrder}}&page=1&limit=20"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;",
|
|
"if (json.items && json.items.length > 0) { pm.environment.set('listingId', json.items[0]._id || json.items[0].id); }"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Admin Delete Listing",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{adminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/marketplace/admin/listings/{{listingId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.success).to.eql(true);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Public",
|
|
"item": [
|
|
{
|
|
"name": "Public List Listings",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": "{{baseUrl}}/marketplace/listings?q={{marketplaceQuery}}&minPrice={{marketplaceMinPrice}}&maxPrice={{marketplaceMaxPrice}}&isActive={{marketplaceIsActive}}&listingCategory={{marketplaceListingCategory}}&condition={{marketplaceCondition}}&instrumentType={{marketplaceInstrumentType}}&sortBy={{marketplaceSortBy}}&sortOrder={{listSortOrder}}&page=1&limit=20"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });",
|
|
"const json = pm.response.json();",
|
|
"pm.expect(json.items).to.be.an('array');",
|
|
"pm.expect(json.pagination).to.exist;",
|
|
"if (json.items && json.items.length > 0) { pm.environment.set('listingId', json.items[0]._id || json.items[0].id); }"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Public Get Listing By Id",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": "{{baseUrl}}/marketplace/listings/{{listingId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "SuperAdmin List Marketplace Listings",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/marketplace/superadmin/listings?page=1&limit=20",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"marketplace",
|
|
"superadmin",
|
|
"listings"
|
|
],
|
|
"query": [
|
|
{
|
|
"key": "page",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "limit",
|
|
"value": "20"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "SuperAdmin Update Listing Status",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/marketplace/superadmin/listings/{{id}}/status",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"marketplace",
|
|
"superadmin",
|
|
"listings",
|
|
"{{id}}",
|
|
"status"
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"isActive\": false,\n \"moderationStatus\": \"flagged\",\n \"moderationReason\": \"Needs marketplace review\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "SuperAdmin Delete Listing",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/marketplace/superadmin/listings/{{id}}",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"marketplace",
|
|
"superadmin",
|
|
"listings",
|
|
"{{id}}"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "SuperAdmin List Repair Shops",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/marketplace/superadmin/repair-shops?page=1&limit=20",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"marketplace",
|
|
"superadmin",
|
|
"repair-shops"
|
|
],
|
|
"query": [
|
|
{
|
|
"key": "page",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "limit",
|
|
"value": "20"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "SuperAdmin Update Repair Shop Status",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/marketplace/superadmin/repair-shops/{{id}}/status",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"marketplace",
|
|
"superadmin",
|
|
"repair-shops",
|
|
"{{id}}",
|
|
"status"
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"isActive\": false,\n \"moderationStatus\": \"flagged\",\n \"moderationReason\": \"Needs marketplace review\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "SuperAdmin Delete Repair Shop",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/marketplace/superadmin/repair-shops/{{id}}",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"marketplace",
|
|
"superadmin",
|
|
"repair-shops",
|
|
"{{id}}"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "SuperAdmin Create Listing For Admin",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/marketplace/superadmin/admins/{{adminId}}/listings",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"marketplace",
|
|
"superadmin",
|
|
"admins",
|
|
"{{adminId}}",
|
|
"listings"
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "title",
|
|
"value": "Superadmin listing",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "description",
|
|
"value": "Created by superadmin",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "price",
|
|
"value": "1000",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "currency",
|
|
"value": "SAR",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "quantity",
|
|
"value": "1",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "listingCategory",
|
|
"value": "general",
|
|
"type": "text"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "SuperAdmin Create Instrument For Admin",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/marketplace/superadmin/admins/{{adminId}}/instruments",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"marketplace",
|
|
"superadmin",
|
|
"admins",
|
|
"{{adminId}}",
|
|
"instruments"
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "title",
|
|
"value": "Superadmin instrument",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "description",
|
|
"value": "Created by superadmin",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "price",
|
|
"value": "1200",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "currency",
|
|
"value": "SAR",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "quantity",
|
|
"value": "1",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "instrumentType",
|
|
"value": "Oud",
|
|
"type": "text"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "SuperAdmin Create Repair Shop For Admin",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/marketplace/superadmin/admins/{{adminId}}/repair-shops",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"marketplace",
|
|
"superadmin",
|
|
"admins",
|
|
"{{adminId}}",
|
|
"repair-shops"
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "name",
|
|
"value": "Superadmin Repair Shop",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "description",
|
|
"value": "Created by superadmin",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "services",
|
|
"value": "oud repair,string replacement",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "location",
|
|
"value": "Riyadh",
|
|
"type": "text"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "SuperAdmin Update Admin Shop Profile",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/marketplace/superadmin/admins/{{adminId}}/shop-profile",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"marketplace",
|
|
"superadmin",
|
|
"admins",
|
|
"{{adminId}}",
|
|
"shop-profile"
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "formdata",
|
|
"formdata": [
|
|
{
|
|
"key": "shopName",
|
|
"value": "Superadmin Shop",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "shopDescription",
|
|
"value": "Updated by superadmin",
|
|
"type": "text"
|
|
},
|
|
{
|
|
"key": "shopLocation",
|
|
"value": "Riyadh",
|
|
"type": "text"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Blocks",
|
|
"item": [
|
|
{
|
|
"name": "Block User",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/blocks/{{targetUserId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 201', function () { pm.response.to.have.status(201); });"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Block Status",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/blocks/status/{{targetUserId}}"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Unblock User",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/blocks/{{targetUserId}}/unblock"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Reports",
|
|
"item": [
|
|
{
|
|
"name": "Report Post",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/reports",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"reports"
|
|
],
|
|
"query": []
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"targetType\": \"post\",\n \"targetId\": \"{{postId}}\",\n \"reason\": \"spam\",\n \"details\": \"This content looks suspicious\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test(\"Request succeeded\", function () { pm.expect(pm.response.code).to.be.oneOf([200, 201]); });",
|
|
"const json = pm.response.json();",
|
|
"const value = json.item;",
|
|
"if (value) pm.environment.set(\"reportId\", value._id || value.id || value);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "My Reports",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/reports/me?page=1&limit=20"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Superadmin Reports",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": "{{baseUrl}}/reports/superadmin?status=open"
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test('Status is 200', function () { pm.response.to.have.status(200); });"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Superadmin Update Report Status",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/reports/superadmin/{{reportId}}/status",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"reports",
|
|
"superadmin",
|
|
"{{reportId}}",
|
|
"status"
|
|
],
|
|
"query": []
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"status\": \"in_review\",\n \"resolutionNote\": \"Under review\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Report Post - Fixed Reason",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/reports",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"reports"
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"targetType\": \"post\",\n \"targetId\": \"{{postId}}\",\n \"reason\": \"{{reportReason}}\",\n \"details\": \"Reported from Postman\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Report User And Block",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/reports",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"reports"
|
|
],
|
|
"query": []
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"targetType\": \"user\",\n \"targetId\": \"{{targetUserId}}\",\n \"reason\": \"harassment\",\n \"details\": \"Unsafe interaction\",\n \"blockTarget\": true\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test(\"Request succeeded\", function () { pm.expect(pm.response.code).to.be.oneOf([200, 201]); });",
|
|
"const json = pm.response.json();",
|
|
"const value = json.item;",
|
|
"if (value) pm.environment.set(\"reportId\", value._id || value.id || value);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Report Comment",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{accessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/reports",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"reports"
|
|
],
|
|
"query": []
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"targetType\": \"comment\",\n \"targetId\": \"{{commentId}}\",\n \"reason\": \"harassment\",\n \"details\": \"Offensive comment\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"event": [
|
|
{
|
|
"listen": "test",
|
|
"script": {
|
|
"type": "text/javascript",
|
|
"exec": [
|
|
"pm.test(\"Request succeeded\", function () { pm.expect(pm.response.code).to.be.oneOf([200, 201]); });",
|
|
"const json = pm.response.json();",
|
|
"const value = json.item;",
|
|
"if (value) pm.environment.set(\"reportId\", value._id || value.id || value);"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Health",
|
|
"item": [
|
|
{
|
|
"name": "Health Check",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": []
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "Audit",
|
|
"item": [
|
|
{
|
|
"name": "SuperAdmin Audit Logs",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/audit/superadmin/logs?page=1&limit=20&action={{auditAction}}",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"audit",
|
|
"superadmin",
|
|
"logs"
|
|
],
|
|
"query": [
|
|
{
|
|
"key": "page",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "limit",
|
|
"value": "20"
|
|
},
|
|
{
|
|
"key": "action",
|
|
"value": "{{auditAction}}"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "SuperAdmin",
|
|
"item": [
|
|
{
|
|
"name": "Get SuperAdmin Session",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/superadmin/session",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"superadmin",
|
|
"session"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get SuperAdmin Overview",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/superadmin/overview",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"superadmin",
|
|
"overview"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get SuperAdmin Charts",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/superadmin/charts?range=30d",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"superadmin",
|
|
"charts"
|
|
],
|
|
"query": [
|
|
{
|
|
"key": "range",
|
|
"value": "30d"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get SuperAdmin Recent Activity",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/superadmin/recent-activity?page=1&limit=20",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"superadmin",
|
|
"recent-activity"
|
|
],
|
|
"query": [
|
|
{
|
|
"key": "page",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "limit",
|
|
"value": "20"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get SuperAdmin Reports",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/superadmin/reports?range=30d",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"superadmin",
|
|
"reports"
|
|
],
|
|
"query": [
|
|
{
|
|
"key": "range",
|
|
"value": "30d"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get SuperAdmin Ops",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/superadmin/ops",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"superadmin",
|
|
"ops"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "List SuperAdmin Cases",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/superadmin/cases?page=1&limit=20&status=open",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"superadmin",
|
|
"cases"
|
|
],
|
|
"query": [
|
|
{
|
|
"key": "page",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "limit",
|
|
"value": "20"
|
|
},
|
|
{
|
|
"key": "status",
|
|
"value": "open"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Create SuperAdmin Case",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/superadmin/cases",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"superadmin",
|
|
"cases"
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"title\": \"Manual review\",\n \"description\": \"Created from Postman\",\n \"targetType\": \"post\",\n \"targetId\": \"{{postId}}\",\n \"priority\": \"medium\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Update SuperAdmin Case",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/superadmin/cases/{{caseId}}",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"superadmin",
|
|
"cases",
|
|
"{{caseId}}"
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"status\": \"in_review\",\n \"resolutionNote\": \"Updated from Postman\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Perform SuperAdmin Bulk Action",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/superadmin/bulk-actions",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"superadmin",
|
|
"bulk-actions"
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"targetType\": \"post\",\n \"targetIds\": [\n \"{{bulkActionTargetId}}\"\n ],\n \"action\": \"flag\",\n \"reason\": \"Bulk moderation from Postman\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get SuperAdmin Settings",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/superadmin/settings",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"superadmin",
|
|
"settings"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Get SuperAdmin Settings History",
|
|
"request": {
|
|
"method": "GET",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/superadmin/settings/history?page=1&limit=20",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"superadmin",
|
|
"settings",
|
|
"history"
|
|
],
|
|
"query": [
|
|
{
|
|
"key": "page",
|
|
"value": "1"
|
|
},
|
|
{
|
|
"key": "limit",
|
|
"value": "20"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Update SuperAdmin Settings",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/superadmin/settings",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"superadmin",
|
|
"settings"
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"maintenanceMode\": false\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Restore SuperAdmin Settings Version",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/superadmin/settings/history/{{historyId}}/restore",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"superadmin",
|
|
"settings",
|
|
"history",
|
|
"{{historyId}}",
|
|
"restore"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Update Post Moderation Status",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/superadmin/posts/{{postId}}/status",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"superadmin",
|
|
"posts",
|
|
"{{postId}}",
|
|
"status"
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"status\": \"flagged\",\n \"reason\": \"Needs review\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Delete Post By SuperAdmin",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/superadmin/posts/{{postId}}",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"superadmin",
|
|
"posts",
|
|
"{{postId}}"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Restore Post By SuperAdmin",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/superadmin/posts/{{postId}}/restore",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"superadmin",
|
|
"posts",
|
|
"{{postId}}",
|
|
"restore"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Update Comment Moderation Status",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/superadmin/comments/{{commentId}}/status",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"superadmin",
|
|
"comments",
|
|
"{{commentId}}",
|
|
"status"
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"status\": \"flagged\",\n \"reason\": \"Needs review\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Delete Comment By SuperAdmin",
|
|
"request": {
|
|
"method": "DELETE",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/superadmin/comments/{{commentId}}",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"superadmin",
|
|
"comments",
|
|
"{{commentId}}"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Restore Comment By SuperAdmin",
|
|
"request": {
|
|
"method": "POST",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/superadmin/comments/{{commentId}}/restore",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"superadmin",
|
|
"comments",
|
|
"{{commentId}}",
|
|
"restore"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"name": "Update User Status By SuperAdmin",
|
|
"request": {
|
|
"method": "PATCH",
|
|
"header": [
|
|
{
|
|
"key": "Authorization",
|
|
"value": "Bearer {{superAdminAccessToken}}"
|
|
},
|
|
{
|
|
"key": "Content-Type",
|
|
"value": "application/json"
|
|
}
|
|
],
|
|
"url": {
|
|
"raw": "{{baseUrl}}/superadmin/users/{{userId}}/status",
|
|
"host": [
|
|
"{{baseUrl}}"
|
|
],
|
|
"path": [
|
|
"superadmin",
|
|
"users",
|
|
"{{userId}}",
|
|
"status"
|
|
]
|
|
},
|
|
"body": {
|
|
"mode": "raw",
|
|
"raw": "{\n \"isDisabled\": true,\n \"reason\": \"Policy violation\"\n}",
|
|
"options": {
|
|
"raw": {
|
|
"language": "json"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"variable": [
|
|
{
|
|
"key": "baseUrl",
|
|
"value": "http://localhost:4000/api/v1",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "accessToken",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "refreshToken",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "superAdminAccessToken",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "superAdminRefreshToken",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "targetAccessToken",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "targetRefreshToken",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "userId",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "currentUserId",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "targetUserId",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "targetUsername",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "lastFollowingState",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "notificationUnreadCount",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "notificationId",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "postId",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "ownPostId",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "targetPostId",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "adminPostId",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "commentId",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "ownCommentId",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "replyCommentId",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "conversationId",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "messageId",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "sessionJti",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "registerEmail",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "registerUsername",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "adminUserId",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "targetLoginEmail",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "targetLoginPassword",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "resetCode",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "resetToken",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "emailVerificationCode",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "googleIdToken",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "newPassword",
|
|
"value": "NewStrongPass123!",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "feedCursor",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "chatConversationsCursor",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "chatMessagesCursor",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "adminAccessToken",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "adminRefreshToken",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "adminEmail",
|
|
"value": "store_admin@example.com",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "adminUsername",
|
|
"value": "store_admin_01",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "adminPassword",
|
|
"value": "AdminStrongPass123!",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "usersQuery",
|
|
"value": "user",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "usersVerified",
|
|
"value": "true",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "usersSortBy",
|
|
"value": "createdAt",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "listSortOrder",
|
|
"value": "desc",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "commentSortBy",
|
|
"value": "createdAt",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "postVisibility",
|
|
"value": "public",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "postSortBy",
|
|
"value": "createdAt",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "postTypeFilter",
|
|
"value": "image",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "postSearchQuery",
|
|
"value": "music",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "postHashtag",
|
|
"value": "music",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "reelQuery",
|
|
"value": "reel",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "notificationRead",
|
|
"value": "false",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "notificationType",
|
|
"value": "mention",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "notificationResourceType",
|
|
"value": "post",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "feedPreferredPostType",
|
|
"value": "video",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "feedIncludeSuggestions",
|
|
"value": "true",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "feedSuggestionInterval",
|
|
"value": "4",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "feedFollowingOnly",
|
|
"value": "false",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "feedRadiusKm",
|
|
"value": "30",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "homeFeedHasMixedItems",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "lastViewCount",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "lastPlayCount",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "lastShareCount",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "marketplaceQuery",
|
|
"value": "oud",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "marketplaceMinPrice",
|
|
"value": "1000",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "marketplaceMaxPrice",
|
|
"value": "5000",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "marketplaceIsActive",
|
|
"value": "true",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "marketplaceSortBy",
|
|
"value": "price",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "repairShopQuery",
|
|
"value": "riyadh",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "repairShopIsActive",
|
|
"value": "true",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "repairShopSortBy",
|
|
"value": "name",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "instrumentId",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "repairShopId",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "generatedMusicUrl",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "aiMusicPrompt",
|
|
"value": "Calm oud melody with light percussion and emotional Arabic mood",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "aiMusicDuration",
|
|
"value": "12",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "aiMusicSeed",
|
|
"value": "42",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "listingId",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "marketplaceListingCategory",
|
|
"value": "accessory",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "marketplaceCondition",
|
|
"value": "used",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "marketplaceInstrumentType",
|
|
"value": "oud",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "talentRole",
|
|
"value": "instrumentalist",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "talentExperienceLevel",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "usersHasAvatar",
|
|
"value": "true",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "reactionType",
|
|
"value": "love",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "followRequestId",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "reportId",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "repostId",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "quotePostId",
|
|
"value": "",
|
|
"type": "string"
|
|
},
|
|
{
|
|
"key": "replyToMessageId",
|
|
"value": ""
|
|
},
|
|
{
|
|
"key": "mediaFilePath",
|
|
"value": ""
|
|
},
|
|
{
|
|
"key": "collaboratorId",
|
|
"value": ""
|
|
},
|
|
{
|
|
"key": "commentKeyword",
|
|
"value": "spam"
|
|
},
|
|
{
|
|
"key": "reportReason",
|
|
"value": "spam"
|
|
},
|
|
{
|
|
"key": "sessionId",
|
|
"value": ""
|
|
},
|
|
{
|
|
"key": "caseId",
|
|
"value": ""
|
|
},
|
|
{
|
|
"key": "historyId",
|
|
"value": ""
|
|
},
|
|
{
|
|
"key": "bulkActionTargetId",
|
|
"value": ""
|
|
},
|
|
{
|
|
"key": "auditAction",
|
|
"value": ""
|
|
},
|
|
{
|
|
"key": "searchQuery",
|
|
"value": "music"
|
|
},
|
|
{
|
|
"key": "searchType",
|
|
"value": "all"
|
|
},
|
|
{
|
|
"key": "searchLimit",
|
|
"value": "20"
|
|
},
|
|
{
|
|
"key": "searchSuggestionLimit",
|
|
"value": "5"
|
|
},
|
|
{
|
|
"key": "collaborationType",
|
|
"value": "duet"
|
|
},
|
|
{
|
|
"key": "collaborationMessage",
|
|
"value": "I want to collaborate on this piece"
|
|
},
|
|
{
|
|
"key": "collaborationAttachmentUrl",
|
|
"value": ""
|
|
},
|
|
{
|
|
"key": "collaborationAttachmentType",
|
|
"value": "audio"
|
|
}
|
|
]
|
|
}
|