Files
iddaai-be/mds/suggest-bet-platform.postman_collection.json
T
fahricansecer 9bb8f39bca
Deploy Iddaai Backend / build-and-deploy (push) Successful in 2m45s
gg
2026-05-05 14:06:20 +03:00

6163 lines
224 KiB
JSON

{
"info": {
"name": "Suggest-Bet Platform API",
"description": "Auto-generated Postman collection for Nest backend and AI engine endpoints.",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"variable": [
{
"key": "beBaseUrl",
"value": "http://localhost:3005"
},
{
"key": "aiBaseUrl",
"value": "http://localhost:8000"
},
{
"key": "accessToken",
"value": ""
},
{
"key": "match_id",
"value": "sample-match-id"
}
],
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "{{accessToken}}",
"type": "string"
}
]
},
"item": [
{
"name": "Nest API",
"item": [
{
"name": "Admin",
"item": [
{
"name": "Get all app settings",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Get all app settings",
"url": {
"raw": "{{beBaseUrl}}/api/admin/settings",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"admin",
"settings"
],
"query": []
}
},
"response": [
{
"name": "GET /api/admin/settings - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/admin/settings",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"admin",
"settings"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
}
]
},
{
"name": "Get all usage limits",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Get all usage limits",
"url": {
"raw": "{{beBaseUrl}}/api/admin/usage-limits",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"admin",
"usage-limits"
],
"query": [
{
"key": "page",
"value": "1",
"description": "Page number",
"disabled": true
},
{
"key": "limit",
"value": "10",
"description": "Items per page",
"disabled": true
},
{
"key": "sortBy",
"value": "",
"description": "Field to sort by",
"disabled": true
},
{
"key": "sortOrder",
"value": "desc",
"description": "Sort order",
"disabled": true
},
{
"key": "search",
"value": "",
"description": "Search query",
"disabled": true
}
]
}
},
"response": [
{
"name": "GET /api/admin/usage-limits - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/admin/usage-limits",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"admin",
"usage-limits"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "[\n \"string\"\n]"
}
]
},
{
"name": "Get all users (admin)",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Get all users (admin)",
"url": {
"raw": "{{beBaseUrl}}/api/admin/users",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"admin",
"users"
],
"query": [
{
"key": "page",
"value": "1",
"description": "Page number",
"disabled": true
},
{
"key": "limit",
"value": "10",
"description": "Items per page",
"disabled": true
},
{
"key": "sortBy",
"value": "",
"description": "Field to sort by",
"disabled": true
},
{
"key": "sortOrder",
"value": "desc",
"description": "Sort order",
"disabled": true
},
{
"key": "search",
"value": "",
"description": "Search query",
"disabled": true
}
]
}
},
"response": [
{
"name": "GET /api/admin/users - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/admin/users",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"admin",
"users"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "[\n \"string\"\n]"
}
]
},
{
"name": "Get system analytics overview",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Get system analytics overview",
"url": {
"raw": "{{beBaseUrl}}/api/admin/analytics/overview",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"admin",
"analytics",
"overview"
],
"query": []
}
},
"response": [
{
"name": "GET /api/admin/analytics/overview - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/admin/analytics/overview",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"admin",
"analytics",
"overview"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
}
]
},
{
"name": "Get user by ID",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Get user by ID",
"url": {
"raw": "{{beBaseUrl}}/api/admin/users/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"admin",
"users",
"{id}"
],
"query": []
}
},
"response": [
{
"name": "GET /api/admin/users/{id} - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/admin/users/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"admin",
"users",
"{id}"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
}
]
},
{
"name": "Reset all usage limits",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Reset all usage limits",
"url": {
"raw": "{{beBaseUrl}}/api/admin/usage-limits/reset-all",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"admin",
"usage-limits",
"reset-all"
],
"query": []
}
},
"response": [
{
"name": "POST /api/admin/usage-limits/reset-all - 200",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/admin/usage-limits/reset-all",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"admin",
"usage-limits",
"reset-all"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"count\": 1\n}"
}
]
},
{
"name": "Soft delete a user",
"request": {
"method": "DELETE",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Soft delete a user",
"url": {
"raw": "{{beBaseUrl}}/api/admin/users/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"admin",
"users",
"{id}"
],
"query": []
}
},
"response": [
{
"name": "DELETE /api/admin/users/{id} - 200",
"originalRequest": {
"method": "DELETE",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/admin/users/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"admin",
"users",
"{id}"
]
}
},
"status": "User deleted",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
},
{
"name": "Toggle user active status",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Toggle user active status",
"url": {
"raw": "{{beBaseUrl}}/api/admin/users/{{id}}/toggle-active",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"admin",
"users",
"{id}",
"toggle-active"
],
"query": []
}
},
"response": [
{
"name": "PUT /api/admin/users/{id}/toggle-active - 200",
"originalRequest": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/admin/users/{{id}}/toggle-active",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"admin",
"users",
"{id}",
"toggle-active"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
}
]
},
{
"name": "Update an app setting",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Update an app setting",
"url": {
"raw": "{{beBaseUrl}}/api/admin/settings/{{key}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"admin",
"settings",
"{key}"
],
"query": []
}
},
"response": [
{
"name": "PUT /api/admin/settings/{key} - 200",
"originalRequest": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/admin/settings/{{key}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"admin",
"settings",
"{key}"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"key\": \"string\",\n \"value\": \"string\"\n}"
}
]
},
{
"name": "Update user role",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Update user role",
"url": {
"raw": "{{beBaseUrl}}/api/admin/users/{{id}}/role",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"admin",
"users",
"{id}",
"role"
],
"query": []
}
},
"response": [
{
"name": "PUT /api/admin/users/{id}/role - 200",
"originalRequest": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/admin/users/{{id}}/role",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"admin",
"users",
"{id}",
"role"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
}
]
},
{
"name": "Update user subscription",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Update user subscription",
"url": {
"raw": "{{beBaseUrl}}/api/admin/users/{{id}}/subscription",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"admin",
"users",
"{id}",
"subscription"
],
"query": []
}
},
"response": [
{
"name": "PUT /api/admin/users/{id}/subscription - 200",
"originalRequest": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/admin/users/{{id}}/subscription",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"admin",
"users",
"{id}",
"subscription"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
}
]
}
]
},
{
"name": "AiProxy",
"item": [
{
"name": "DELETE /api/ai-engine/{path}",
"request": {
"method": "DELETE",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "",
"url": {
"raw": "{{beBaseUrl}}/api/ai-engine/{{path}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"ai-engine",
"{path}"
],
"query": []
}
},
"response": [
{
"name": "DELETE /api/ai-engine/{path} - 200",
"originalRequest": {
"method": "DELETE",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/ai-engine/{{path}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"ai-engine",
"{path}"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
},
{
"name": "GET /api/ai-engine/{path}",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "",
"url": {
"raw": "{{beBaseUrl}}/api/ai-engine/{{path}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"ai-engine",
"{path}"
],
"query": []
}
},
"response": [
{
"name": "GET /api/ai-engine/{path} - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/ai-engine/{{path}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"ai-engine",
"{path}"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
},
{
"name": "PATCH /api/ai-engine/{path}",
"request": {
"method": "PATCH",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "",
"url": {
"raw": "{{beBaseUrl}}/api/ai-engine/{{path}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"ai-engine",
"{path}"
],
"query": []
}
},
"response": [
{
"name": "PATCH /api/ai-engine/{path} - 200",
"originalRequest": {
"method": "PATCH",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/ai-engine/{{path}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"ai-engine",
"{path}"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
},
{
"name": "POST /api/ai-engine/{path}",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "",
"url": {
"raw": "{{beBaseUrl}}/api/ai-engine/{{path}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"ai-engine",
"{path}"
],
"query": []
}
},
"response": [
{
"name": "POST /api/ai-engine/{path} - 200",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/ai-engine/{{path}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"ai-engine",
"{path}"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
},
{
"name": "PUT /api/ai-engine/{path}",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "",
"url": {
"raw": "{{beBaseUrl}}/api/ai-engine/{{path}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"ai-engine",
"{path}"
],
"query": []
}
},
"response": [
{
"name": "PUT /api/ai-engine/{path} - 200",
"originalRequest": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/ai-engine/{{path}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"ai-engine",
"{path}"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
}
]
},
{
"name": "Analysis",
"item": [
{
"name": "Analyze multiple matches for coupon",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Analyze multiple matches for coupon",
"url": {
"raw": "{{beBaseUrl}}/api/analysis/analyze-matches",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"analysis",
"analyze-matches"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "{\n \"matchIds\": [\n \"string\"\n ]\n}"
}
},
"response": [
{
"name": "POST /api/analysis/analyze-matches - 200",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"matchIds\": [\n \"string\"\n ]\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/analysis/analyze-matches",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"analysis",
"analyze-matches"
]
}
},
"status": "Analysis successful",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"success\": true,\n \"data\": \"string\",\n \"message\": \"string\"\n}"
},
{
"name": "POST /api/analysis/analyze-matches - 400",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"matchIds\": [\n \"string\"\n ]\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/analysis/analyze-matches",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"analysis",
"analyze-matches"
]
}
},
"status": "Invalid input",
"code": 400,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
},
{
"name": "POST /api/analysis/analyze-matches - 429",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"matchIds\": [\n \"string\"\n ]\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/analysis/analyze-matches",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"analysis",
"analyze-matches"
]
}
},
"status": "Usage limit exceeded",
"code": 429,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
},
{
"name": "Analyze multiple matches for coupon (alias)",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Analyze multiple matches for coupon (alias)",
"url": {
"raw": "{{beBaseUrl}}/api/analysis/analyze",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"analysis",
"analyze"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "{\n \"matchIds\": [\n \"string\"\n ]\n}"
}
},
"response": [
{
"name": "POST /api/analysis/analyze - 200",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"matchIds\": [\n \"string\"\n ]\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/analysis/analyze",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"analysis",
"analyze"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
},
{
"name": "Get analysis history",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Get analysis history",
"url": {
"raw": "{{beBaseUrl}}/api/analysis/history",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"analysis",
"history"
],
"query": []
}
},
"response": [
{
"name": "GET /api/analysis/history - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/analysis/history",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"analysis",
"history"
]
}
},
"status": "History retrieved",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"success\": true,\n \"data\": [\n \"string\"\n ]\n}"
}
]
}
]
},
{
"name": "Auth",
"item": [
{
"name": "Login with email and password",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Login with email and password",
"url": {
"raw": "{{beBaseUrl}}/api/auth/login",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"auth",
"login"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "{\n \"email\": \"user@example.com\",\n \"password\": \"password123\"\n}"
}
},
"response": [
{
"name": "POST /api/auth/login - 200",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"email\": \"user@example.com\",\n \"password\": \"password123\"\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/auth/login",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"auth",
"login"
]
}
},
"status": "Login successful",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"accessToken\": \"string\",\n \"refreshToken\": \"string\",\n \"expiresIn\": 1,\n \"user\": {\n \"id\": \"string\",\n \"email\": \"string\",\n \"firstName\": \"string\",\n \"lastName\": \"string\",\n \"roles\": [\n \"string\"\n ]\n }\n}"
}
]
},
{
"name": "Logout and invalidate refresh token",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Logout and invalidate refresh token",
"url": {
"raw": "{{beBaseUrl}}/api/auth/logout",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"auth",
"logout"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "{\n \"refreshToken\": \"string\"\n}"
}
},
"response": [
{
"name": "POST /api/auth/logout - 200",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"refreshToken\": \"string\"\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/auth/logout",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"auth",
"logout"
]
}
},
"status": "Logout successful",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"success\": true,\n \"message\": \"string\",\n \"data\": \"string\"\n}"
}
]
},
{
"name": "Refresh access token",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Refresh access token",
"url": {
"raw": "{{beBaseUrl}}/api/auth/refresh",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"auth",
"refresh"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "{\n \"refreshToken\": \"string\"\n}"
}
},
"response": [
{
"name": "POST /api/auth/refresh - 200",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"refreshToken\": \"string\"\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/auth/refresh",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"auth",
"refresh"
]
}
},
"status": "Token refreshed successfully",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"accessToken\": \"string\",\n \"refreshToken\": \"string\",\n \"expiresIn\": 1,\n \"user\": {\n \"id\": \"string\",\n \"email\": \"string\",\n \"firstName\": \"string\",\n \"lastName\": \"string\",\n \"roles\": [\n \"string\"\n ]\n }\n}"
}
]
},
{
"name": "Register a new user",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Register a new user",
"url": {
"raw": "{{beBaseUrl}}/api/auth/register",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"auth",
"register"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "{\n \"email\": \"user@example.com\",\n \"password\": \"password123\",\n \"firstName\": \"John\",\n \"lastName\": \"Doe\"\n}"
}
},
"response": [
{
"name": "POST /api/auth/register - 200",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"email\": \"user@example.com\",\n \"password\": \"password123\",\n \"firstName\": \"John\",\n \"lastName\": \"Doe\"\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/auth/register",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"auth",
"register"
]
}
},
"status": "User registered successfully",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"accessToken\": \"string\",\n \"refreshToken\": \"string\",\n \"expiresIn\": 1,\n \"user\": {\n \"id\": \"string\",\n \"email\": \"string\",\n \"firstName\": \"string\",\n \"lastName\": \"string\",\n \"roles\": [\n \"string\"\n ]\n }\n}"
}
]
}
]
},
{
"name": "Coupon",
"item": [
{
"name": "Analyze single match with V20 model",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Analyze single match with V20 model",
"url": {
"raw": "{{beBaseUrl}}/api/coupon/analyze-match",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"coupon",
"analyze-match"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "{\n \"matchId\": \"string\"\n}"
}
},
"response": [
{
"name": "POST /api/coupon/analyze-match - 200",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"matchId\": \"string\"\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/coupon/analyze-match",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"coupon",
"analyze-match"
]
}
},
"status": "Match analysis",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"success\": true,\n \"data\": \"string\",\n \"message\": \"string\"\n}"
}
]
},
{
"name": "Analyze single match with V20 model (alias)",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Analyze single match with V20 model (alias)",
"url": {
"raw": "{{beBaseUrl}}/api/coupon/analyze",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"coupon",
"analyze"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "{\n \"matchId\": \"string\"\n}"
}
},
"response": [
{
"name": "POST /api/coupon/analyze - 200",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"matchId\": \"string\"\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/coupon/analyze",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"coupon",
"analyze"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
},
{
"name": "Create and save a user coupon",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Create and save a user coupon",
"url": {
"raw": "{{beBaseUrl}}/api/coupon/create",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"coupon",
"create"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "\"string\""
}
},
"response": [
{
"name": "POST /api/coupon/create - 201",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "\"string\""
},
"url": {
"raw": "{{beBaseUrl}}/api/coupon/create",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"coupon",
"create"
]
}
},
"status": "Coupon created",
"code": 201,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"success\": true,\n \"data\": \"string\",\n \"message\": \"string\"\n}"
}
]
},
{
"name": "Create and save a user coupon (alias)",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Create and save a user coupon (alias)",
"url": {
"raw": "{{beBaseUrl}}/api/coupon",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"coupon"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "\"string\""
}
},
"response": [
{
"name": "POST /api/coupon - 201",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "\"string\""
},
"url": {
"raw": "{{beBaseUrl}}/api/coupon",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"coupon"
]
}
},
"status": "",
"code": 201,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
},
{
"name": "Generate a high-confidence banko combo (2 matches)",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Generate a high-confidence banko combo (2 matches)",
"url": {
"raw": "{{beBaseUrl}}/api/coupon/daily-banko",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"coupon",
"daily-banko"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "{\n \"matchIds\": [\n \"string\"\n ]\n}"
}
},
"response": [
{
"name": "POST /api/coupon/daily-banko - 200",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"matchIds\": [\n \"string\"\n ]\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/coupon/daily-banko",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"coupon",
"daily-banko"
]
}
},
"status": "Daily banko coupon",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"success\": true,\n \"data\": \"string\",\n \"message\": \"string\"\n}"
}
]
},
{
"name": "Generate frequency-based parlay coupon",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Scans upcoming matches, applies conditional frequency analysis (team odds-band performance), and builds 2-5 match combos with +EV calculation.",
"url": {
"raw": "{{beBaseUrl}}/api/coupon/frequency-coupon",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"coupon",
"frequency-coupon"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "{\n \"matchIds\": [\n \"string\"\n ],\n \"maxMatches\": 3,\n \"minSignal\": 0.7,\n \"markets\": [\n \"string\"\n ]\n}"
}
},
"response": [
{
"name": "POST /api/coupon/frequency-coupon - 200",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"matchIds\": [\n \"string\"\n ],\n \"maxMatches\": 3,\n \"minSignal\": 0.7,\n \"markets\": [\n \"string\"\n ]\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/coupon/frequency-coupon",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"coupon",
"frequency-coupon"
]
}
},
"status": "Frequency coupon generated",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
},
{
"name": "Get coupon history",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Get coupon history",
"url": {
"raw": "{{beBaseUrl}}/api/coupon/history",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"coupon",
"history"
],
"query": [
{
"key": "limit",
"value": "",
"description": "",
"disabled": false
}
]
}
},
"response": [
{
"name": "GET /api/coupon/history - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/coupon/history",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"coupon",
"history"
]
}
},
"status": "History retrieved",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"success\": true,\n \"data\": [\n \"string\"\n ],\n \"message\": \"string\"\n}"
}
]
},
{
"name": "Get user betting statistics",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Get user betting statistics",
"url": {
"raw": "{{beBaseUrl}}/api/coupon/my-stats",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"coupon",
"my-stats"
],
"query": []
}
},
"response": [
{
"name": "GET /api/coupon/my-stats - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/coupon/my-stats",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"coupon",
"my-stats"
]
}
},
"status": "User statistics",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"success\": true,\n \"data\": \"string\",\n \"message\": \"string\"\n}"
}
]
},
{
"name": "Suggest Smart Coupon",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Suggest Smart Coupon",
"url": {
"raw": "{{beBaseUrl}}/api/coupon/suggest",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"coupon",
"suggest"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "{\n \"matchIds\": [\n \"string\"\n ],\n \"strategy\": \"BALANCED\",\n \"maxMatches\": 5,\n \"minConfidence\": 60\n}"
}
},
"response": [
{
"name": "POST /api/coupon/suggest - 200",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"matchIds\": [\n \"string\"\n ],\n \"strategy\": \"BALANCED\",\n \"maxMatches\": 5,\n \"minConfidence\": 60\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/coupon/suggest",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"coupon",
"suggest"
]
}
},
"status": "Smart Coupon generated",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"success\": true,\n \"data\": \"string\",\n \"message\": \"string\"\n}"
}
]
}
]
},
{
"name": "Health",
"item": [
{
"name": "Basic health check",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Basic health check",
"url": {
"raw": "{{beBaseUrl}}/api/health",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"health"
],
"query": []
}
},
"response": [
{
"name": "GET /api/health - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/health",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"health"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
},
{
"name": "Dependency-level health details",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Dependency-level health details",
"url": {
"raw": "{{beBaseUrl}}/api/health/dependencies",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"health",
"dependencies"
],
"query": []
}
},
"response": [
{
"name": "GET /api/health/dependencies - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/health/dependencies",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"health",
"dependencies"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
},
{
"name": "Liveness check",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Liveness check",
"url": {
"raw": "{{beBaseUrl}}/api/health/live",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"health",
"live"
],
"query": []
}
},
"response": [
{
"name": "GET /api/health/live - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/health/live",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"health",
"live"
]
}
},
"status": "System liveness",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"status\": \"string\",\n \"timestamp\": \"string\"\n}"
}
]
},
{
"name": "Readiness check (includes database)",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Readiness check (includes database)",
"url": {
"raw": "{{beBaseUrl}}/api/health/ready",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"health",
"ready"
],
"query": []
}
},
"response": [
{
"name": "GET /api/health/ready - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/health/ready",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"health",
"ready"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
}
]
},
{
"name": "Leagues",
"item": [
{
"name": "Get all countries",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Get all countries",
"url": {
"raw": "{{beBaseUrl}}/api/leagues/countries",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"leagues",
"countries"
],
"query": []
}
},
"response": [
{
"name": "GET /api/leagues/countries - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/leagues/countries",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"leagues",
"countries"
]
}
},
"status": "List of countries",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "[\n \"string\"\n]"
}
]
},
{
"name": "Get all leagues",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Get all leagues",
"url": {
"raw": "{{beBaseUrl}}/api/leagues",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"leagues"
],
"query": [
{
"key": "sport",
"value": "",
"description": "",
"disabled": true
}
]
}
},
"response": [
{
"name": "GET /api/leagues - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/leagues",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"leagues"
]
}
},
"status": "List of leagues",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "[\n \"string\"\n]"
}
]
},
{
"name": "Get country by ID with leagues",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Get country by ID with leagues",
"url": {
"raw": "{{beBaseUrl}}/api/leagues/countries/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"leagues",
"countries",
"{id}"
],
"query": []
}
},
"response": [
{
"name": "GET /api/leagues/countries/{id} - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/leagues/countries/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"leagues",
"countries",
"{id}"
]
}
},
"status": "Country details",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
}
]
},
{
"name": "Get head-to-head matches between two teams",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Get head-to-head matches between two teams",
"url": {
"raw": "{{beBaseUrl}}/api/leagues/teams/h2h",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"leagues",
"teams",
"h2h"
],
"query": [
{
"key": "team1",
"value": "",
"description": "",
"disabled": false
},
{
"key": "team2",
"value": "",
"description": "",
"disabled": false
},
{
"key": "limit",
"value": "",
"description": "",
"disabled": true
}
]
}
},
"response": [
{
"name": "GET /api/leagues/teams/h2h - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/leagues/teams/h2h",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"leagues",
"teams",
"h2h"
]
}
},
"status": "Head-to-head matches",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "[\n \"string\"\n]"
}
]
},
{
"name": "Get league by ID",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Get league by ID",
"url": {
"raw": "{{beBaseUrl}}/api/leagues/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"leagues",
"{id}"
],
"query": []
}
},
"response": [
{
"name": "GET /api/leagues/{id} - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/leagues/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"leagues",
"{id}"
]
}
},
"status": "League details",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
}
]
},
{
"name": "Get team by ID",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Get team by ID",
"url": {
"raw": "{{beBaseUrl}}/api/leagues/teams/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"leagues",
"teams",
"{id}"
],
"query": []
}
},
"response": [
{
"name": "GET /api/leagues/teams/{id} - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/leagues/teams/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"leagues",
"teams",
"{id}"
]
}
},
"status": "Team details",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
}
]
},
{
"name": "Get team's recent matches (paginated)",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Get team's recent matches (paginated)",
"url": {
"raw": "{{beBaseUrl}}/api/leagues/teams/{{id}}/matches",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"leagues",
"teams",
"{id}",
"matches"
],
"query": [
{
"key": "page",
"value": "",
"description": "Page number (default: 1)",
"disabled": true
},
{
"key": "limit",
"value": "",
"description": "Items per page (default: 20)",
"disabled": true
},
{
"key": "season",
"value": "",
"description": "Season (e.g. 2024-2025)",
"disabled": true
}
]
}
},
"response": [
{
"name": "GET /api/leagues/teams/{id}/matches - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/leagues/teams/{{id}}/matches",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"leagues",
"teams",
"{id}",
"matches"
]
}
},
"status": "Paginated list of matches",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"data\": [\n \"string\"\n ],\n \"meta\": \"string\"\n}"
}
]
},
{
"name": "Search teams by name",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Search teams by name",
"url": {
"raw": "{{beBaseUrl}}/api/leagues/teams/search",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"leagues",
"teams",
"search"
],
"query": [
{
"key": "q",
"value": "",
"description": "Search query",
"disabled": false
},
{
"key": "sport",
"value": "",
"description": "",
"disabled": true
}
]
}
},
"response": [
{
"name": "GET /api/leagues/teams/search - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/leagues/teams/search",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"leagues",
"teams",
"search"
]
}
},
"status": "List of teams matching search",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "[\n \"string\"\n]"
}
]
}
]
},
{
"name": "Matches",
"item": [
{
"name": "Advanced match query with filters",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Advanced match query with filters",
"url": {
"raw": "{{beBaseUrl}}/api/matches/query",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"matches",
"query"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "{\n \"sport\": \"football\",\n \"limit\": 50,\n \"leagueId\": \"string\",\n \"status\": \"string\",\n \"date\": \"string\",\n \"team\": {\n \"id\": \"string\",\n \"role\": \"home\"\n },\n \"odds\": [\n {\n \"categoryName\": \"Maç Sonucu\",\n \"selectionName\": \"1\",\n \"value\": 1.5,\n \"tolerance\": 0.1\n }\n ],\n \"dateRange\": {\n \"from\": \"string\",\n \"to\": \"string\"\n }\n}"
}
},
"response": [
{
"name": "POST /api/matches/query - 200",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"sport\": \"football\",\n \"limit\": 50,\n \"leagueId\": \"string\",\n \"status\": \"string\",\n \"date\": \"string\",\n \"team\": {\n \"id\": \"string\",\n \"role\": \"home\"\n },\n \"odds\": [\n {\n \"categoryName\": \"Maç Sonucu\",\n \"selectionName\": \"1\",\n \"value\": 1.5,\n \"tolerance\": 0.1\n }\n ],\n \"dateRange\": {\n \"from\": \"string\",\n \"to\": \"string\"\n }\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/matches/query",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"matches",
"query"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "[\n {\n \"id\": \"string\",\n \"name\": \"string\",\n \"code\": \"string\",\n \"country\": \"string\",\n \"sport\": \"string\",\n \"matches\": [\n {\n \"id\": \"string\",\n \"matchName\": \"string\",\n \"matchSlug\": \"string\",\n \"mstUtc\": 1,\n \"status\": \"string\",\n \"state\": \"string\",\n \"scoreHome\": 1,\n \"scoreAway\": 1,\n \"htScoreHome\": 1,\n \"htScoreAway\": 1,\n \"homeTeamName\": \"string\",\n \"homeTeamLogo\": \"string\",\n \"awayTeamName\": \"string\",\n \"awayTeamLogo\": \"string\",\n \"leagueName\": \"string\",\n \"countryName\": \"string\",\n \"odds\": [\n null\n ]\n }\n ]\n }\n]"
}
]
},
{
"name": "Get active leagues with upcoming/live matches",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Get active leagues with upcoming/live matches",
"url": {
"raw": "{{beBaseUrl}}/api/matches/leagues/active",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"matches",
"leagues",
"active"
],
"query": [
{
"key": "sport",
"value": "",
"description": "",
"disabled": true
}
]
}
},
"response": [
{
"name": "GET /api/matches/leagues/active - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/matches/leagues/active",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"matches",
"leagues",
"active"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "[\n {\n \"id\": \"string\",\n \"name\": \"string\",\n \"code\": \"string\",\n \"countryName\": \"string\",\n \"countryFlag\": \"string\",\n \"matchCount\": 1,\n \"liveCount\": 1\n }\n]"
}
]
},
{
"name": "Get full match details by ID",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Get full match details by ID",
"url": {
"raw": "{{beBaseUrl}}/api/matches/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"matches",
"{id}"
],
"query": []
}
},
"response": [
{
"name": "GET /api/matches/{id} - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/matches/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"matches",
"{id}"
]
}
},
"status": "Match details with lineups, stats, odds, events",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
},
{
"name": "GET /api/matches/{id} - 404",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/matches/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"matches",
"{id}"
]
}
},
"status": "Match not found",
"code": 404,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
},
{
"name": "List matches with pagination",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "List matches with pagination",
"url": {
"raw": "{{beBaseUrl}}/api/matches",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"matches"
],
"query": [
{
"key": "page",
"value": "",
"description": "",
"disabled": true
},
{
"key": "limit",
"value": "",
"description": "",
"disabled": true
},
{
"key": "sport",
"value": "",
"description": "",
"disabled": true
}
]
}
},
"response": [
{
"name": "GET /api/matches - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/matches",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"matches"
]
}
},
"status": "Paginated list of matches",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"data\": [\n \"string\"\n ],\n \"meta\": \"string\"\n}"
}
]
}
]
},
{
"name": "Predictions",
"item": [
{
"name": "Check AI Engine health status",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Check AI Engine health status",
"url": {
"raw": "{{beBaseUrl}}/api/predictions/health",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"predictions",
"health"
],
"query": []
}
},
"response": [
{
"name": "GET /api/predictions/health - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/predictions/health",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"predictions",
"health"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"status\": \"string\",\n \"modelLoaded\": true,\n \"predictionServiceReady\": true,\n \"aiEngineReachable\": true,\n \"circuitState\": \"closed\",\n \"consecutiveFailures\": 0,\n \"endpoint\": \"string\",\n \"detail\": \"string\",\n \"mode\": \"string\"\n}"
}
]
},
{
"name": "Generate prediction with provided match data",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Generate prediction with provided match data",
"url": {
"raw": "{{beBaseUrl}}/api/predictions/generate",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"predictions",
"generate"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "{\n \"matchId\": \"string\"\n}"
}
},
"response": [
{
"name": "POST /api/predictions/generate - 200",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"matchId\": \"string\"\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/predictions/generate",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"predictions",
"generate"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"model_version\": \"string\",\n \"calibration_version\": \"string\",\n \"shadow_engine_version\": \"string\",\n \"decision_trace_id\": \"string\",\n \"match_info\": {\n \"match_id\": \"string\",\n \"match_name\": \"string\",\n \"home_team\": \"string\",\n \"away_team\": \"string\",\n \"league\": \"string\",\n \"match_date_ms\": 1,\n \"league_id\": \"string\",\n \"is_top_league\": false,\n \"sport\": \"football\"\n },\n \"data_quality\": {\n \"label\": \"HIGH\",\n \"score\": 1,\n \"home_lineup_count\": 1,\n \"away_lineup_count\": 1,\n \"lineup_source\": \"none\",\n \"flags\": [\n \"string\"\n ]\n },\n \"risk\": {\n \"level\": \"LOW\",\n \"score\": 1,\n \"is_surprise_risk\": true,\n \"surprise_type\": \"string\",\n \"surprise_score\": 0,\n \"surprise_comment\": \"string\",\n \"surprise_reasons\": [\n \"string\"\n ],\n \"warnings\": [\n \"string\"\n ]\n },\n \"engine_breakdown\": {\n \"team\": 1,\n \"player\": 1,\n \"odds\": 1,\n \"referee\": 1\n },\n \"main_pick\": {\n \"market\": \"string\",\n \"strategy_channel\": \"standard\",\n \"pick\": \"string\",\n \"probability\": 1,\n \"confidence\": 1,\n \"odds\": 1,\n \"raw_confidence\": 1,\n \"calibrated_confidence\": 1,\n \"min_required_confidence\": 1,\n \"edge\": 1,\n \"ev_edge\": 0,\n \"implied_prob\": 0,\n \"play_score\": 1,\n \"playable\": true,\n \"bet_grade\": \"A\",\n \"stake_units\": 1,\n \"decision_reasons\": [\n \"string\"\n ],\n \"confidence_interval\": {\n \"lower\": 1,\n \"upper\": 1,\n \"width\": 1,\n \"band\": \"HIGH\",\n \"threshold_met\": true\n },\n \"signal_tier\": \"CORE\"\n },\n \"value_pick\": {\n \"market\": \"string\",\n \"strategy_channel\": \"standard\",\n \"pick\": \"string\",\n \"probability\": 1,\n \"confidence\": 1,\n \"odds\": 1,\n \"raw_confidence\": 1,\n \"calibrated_confidence\": 1,\n \"min_required_confidence\": 1,\n \"edge\": 1,\n \"ev_edge\": 0,\n \"implied_prob\": 0,\n \"play_score\": 1,\n \"playable\": true,\n \"bet_grade\": \"A\",\n \"stake_units\": 1,\n \"decision_reasons\": [\n \"string\"\n ],\n \"confidence_interval\": {\n \"lower\": 1,\n \"upper\": 1,\n \"width\": 1,\n \"band\": \"HIGH\",\n \"threshold_met\": true\n },\n \"signal_tier\": \"CORE\"\n },\n \"surprise_pick\": {\n \"market\": \"string\",\n \"strategy_channel\": \"standard\",\n \"pick\": \"string\",\n \"probability\": 1,\n \"confidence\": 1,\n \"odds\": 1,\n \"raw_confidence\": 1,\n \"calibrated_confidence\": 1,\n \"min_required_confidence\": 1,\n \"edge\": 1,\n \"ev_edge\": 0,\n \"implied_prob\": 0,\n \"play_score\": 1,\n \"playable\": true,\n \"bet_grade\": \"A\",\n \"stake_units\": 1,\n \"decision_reasons\": [\n \"string\"\n ],\n \"confidence_interval\": {\n \"lower\": 1,\n \"upper\": 1,\n \"width\": 1,\n \"band\": \"HIGH\",\n \"threshold_met\": true\n },\n \"signal_tier\": \"CORE\"\n },\n \"bet_advice\": {\n \"playable\": true,\n \"suggested_stake_units\": 1,\n \"reason\": \"string\",\n \"confidence_band\": \"HIGH\",\n \"min_confidence_for_play\": 1,\n \"signal_tier\": \"CORE\"\n },\n \"bet_summary\": [\n {\n \"market\": \"string\",\n \"pick\": \"string\",\n \"raw_confidence\": 1,\n \"calibrated_confidence\": 1,\n \"bet_grade\": \"A\",\n \"playable\": true,\n \"stake_units\": 1,\n \"play_score\": 1,\n \"ev_edge\": 0,\n \"implied_prob\": 0,\n \"odds\": 0,\n \"reasons\": [\n \"string\"\n ],\n \"confidence_interval\": {\n \"lower\": 1,\n \"upper\": 1,\n \"width\": 1,\n \"band\": \"HIGH\",\n \"threshold_met\": true\n },\n \"signal_tier\": \"CORE\"\n }\n ],\n \"supporting_picks\": [\n {\n \"market\": \"string\",\n \"strategy_channel\": \"standard\",\n \"pick\": \"string\",\n \"probability\": 1,\n \"confidence\": 1,\n \"odds\": 1,\n \"raw_confidence\": 1,\n \"calibrated_confidence\": 1,\n \"min_required_confidence\": 1,\n \"edge\": 1,\n \"ev_edge\": 0,\n \"implied_prob\": 0,\n \"play_score\": 1,\n \"playable\": true,\n \"bet_grade\": \"A\",\n \"stake_units\": 1,\n \"decision_reasons\": [\n \"string\"\n ],\n \"confidence_interval\": {\n \"lower\": 1,\n \"upper\": 1,\n \"width\": 1,\n \"band\": \"HIGH\",\n \"threshold_met\": true\n },\n \"signal_tier\": \"CORE\"\n }\n ],\n \"aggressive_pick\": {\n \"market\": \"string\",\n \"pick\": \"string\",\n \"probability\": 1,\n \"confidence\": 1,\n \"odds\": 1,\n \"raw_confidence\": 1,\n \"calibrated_confidence\": 1,\n \"min_required_confidence\": 1,\n \"edge\": 1,\n \"ev_edge\": 0,\n \"implied_prob\": 0,\n \"play_score\": 1,\n \"playable\": true,\n \"bet_grade\": \"A\",\n \"stake_units\": 1,\n \"decision_reasons\": [\n \"string\"\n ],\n \"confidence_interval\": {\n \"lower\": 1,\n \"upper\": 1,\n \"width\": 1,\n \"band\": \"HIGH\",\n \"threshold_met\": true\n }\n },\n \"htft\": {\n \"1/1\": 1,\n \"1/X\": 1,\n \"1/2\": 1,\n \"X/1\": 1,\n \"X/X\": 1,\n \"X/2\": 1,\n \"2/1\": 1,\n \"2/X\": 1,\n \"2/2\": 1,\n \"pick\": \"string\",\n \"confidence\": 1\n },\n \"scenario_top5\": [\n {\n \"scenario\": \"string\",\n \"score\": 1,\n \"probability\": 1\n }\n ],\n \"score_prediction\": {\n \"ft\": \"string\",\n \"ht\": \"string\",\n \"xg_home\": 1,\n \"xg_away\": 1,\n \"xg_total\": 1\n },\n \"market_board\": \"string\",\n \"reasoning_factors\": [\n \"string\"\n ],\n \"market_reliability\": \"string\",\n \"shadow_engine\": \"string\",\n \"surprise_hunter\": \"string\",\n \"v27_engine\": \"string\"\n}"
}
]
},
{
"name": "Generate Smart Coupon with V20 AI recommendations",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Generate Smart Coupon with V20 AI recommendations",
"url": {
"raw": "{{beBaseUrl}}/api/predictions/smart-coupon",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"predictions",
"smart-coupon"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "{\n \"matchIds\": [\n \"string\"\n ],\n \"strategy\": \"BALANCED\",\n \"maxMatches\": 5,\n \"minConfidence\": 60\n}"
}
},
"response": [
{
"name": "POST /api/predictions/smart-coupon - 200",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"matchIds\": [\n \"string\"\n ],\n \"strategy\": \"BALANCED\",\n \"maxMatches\": 5,\n \"minConfidence\": 60\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/predictions/smart-coupon",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"predictions",
"smart-coupon"
]
}
},
"status": "Smart coupon generated successfully",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
}
]
},
{
"name": "Get prediction for a specific match",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Get prediction for a specific match",
"url": {
"raw": "{{beBaseUrl}}/api/predictions/{{matchId}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"predictions",
"{matchId}"
],
"query": []
}
},
"response": [
{
"name": "GET /api/predictions/{matchId} - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/predictions/{{matchId}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"predictions",
"{matchId}"
]
}
},
"status": "Match prediction",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"model_version\": \"string\",\n \"calibration_version\": \"string\",\n \"shadow_engine_version\": \"string\",\n \"decision_trace_id\": \"string\",\n \"match_info\": {\n \"match_id\": \"string\",\n \"match_name\": \"string\",\n \"home_team\": \"string\",\n \"away_team\": \"string\",\n \"league\": \"string\",\n \"match_date_ms\": 1,\n \"league_id\": \"string\",\n \"is_top_league\": false,\n \"sport\": \"football\"\n },\n \"data_quality\": {\n \"label\": \"HIGH\",\n \"score\": 1,\n \"home_lineup_count\": 1,\n \"away_lineup_count\": 1,\n \"lineup_source\": \"none\",\n \"flags\": [\n \"string\"\n ]\n },\n \"risk\": {\n \"level\": \"LOW\",\n \"score\": 1,\n \"is_surprise_risk\": true,\n \"surprise_type\": \"string\",\n \"surprise_score\": 0,\n \"surprise_comment\": \"string\",\n \"surprise_reasons\": [\n \"string\"\n ],\n \"warnings\": [\n \"string\"\n ]\n },\n \"engine_breakdown\": {\n \"team\": 1,\n \"player\": 1,\n \"odds\": 1,\n \"referee\": 1\n },\n \"main_pick\": {\n \"market\": \"string\",\n \"strategy_channel\": \"standard\",\n \"pick\": \"string\",\n \"probability\": 1,\n \"confidence\": 1,\n \"odds\": 1,\n \"raw_confidence\": 1,\n \"calibrated_confidence\": 1,\n \"min_required_confidence\": 1,\n \"edge\": 1,\n \"ev_edge\": 0,\n \"implied_prob\": 0,\n \"play_score\": 1,\n \"playable\": true,\n \"bet_grade\": \"A\",\n \"stake_units\": 1,\n \"decision_reasons\": [\n \"string\"\n ],\n \"confidence_interval\": {\n \"lower\": 1,\n \"upper\": 1,\n \"width\": 1,\n \"band\": \"HIGH\",\n \"threshold_met\": true\n },\n \"signal_tier\": \"CORE\"\n },\n \"value_pick\": {\n \"market\": \"string\",\n \"strategy_channel\": \"standard\",\n \"pick\": \"string\",\n \"probability\": 1,\n \"confidence\": 1,\n \"odds\": 1,\n \"raw_confidence\": 1,\n \"calibrated_confidence\": 1,\n \"min_required_confidence\": 1,\n \"edge\": 1,\n \"ev_edge\": 0,\n \"implied_prob\": 0,\n \"play_score\": 1,\n \"playable\": true,\n \"bet_grade\": \"A\",\n \"stake_units\": 1,\n \"decision_reasons\": [\n \"string\"\n ],\n \"confidence_interval\": {\n \"lower\": 1,\n \"upper\": 1,\n \"width\": 1,\n \"band\": \"HIGH\",\n \"threshold_met\": true\n },\n \"signal_tier\": \"CORE\"\n },\n \"surprise_pick\": {\n \"market\": \"string\",\n \"strategy_channel\": \"standard\",\n \"pick\": \"string\",\n \"probability\": 1,\n \"confidence\": 1,\n \"odds\": 1,\n \"raw_confidence\": 1,\n \"calibrated_confidence\": 1,\n \"min_required_confidence\": 1,\n \"edge\": 1,\n \"ev_edge\": 0,\n \"implied_prob\": 0,\n \"play_score\": 1,\n \"playable\": true,\n \"bet_grade\": \"A\",\n \"stake_units\": 1,\n \"decision_reasons\": [\n \"string\"\n ],\n \"confidence_interval\": {\n \"lower\": 1,\n \"upper\": 1,\n \"width\": 1,\n \"band\": \"HIGH\",\n \"threshold_met\": true\n },\n \"signal_tier\": \"CORE\"\n },\n \"bet_advice\": {\n \"playable\": true,\n \"suggested_stake_units\": 1,\n \"reason\": \"string\",\n \"confidence_band\": \"HIGH\",\n \"min_confidence_for_play\": 1,\n \"signal_tier\": \"CORE\"\n },\n \"bet_summary\": [\n {\n \"market\": \"string\",\n \"pick\": \"string\",\n \"raw_confidence\": 1,\n \"calibrated_confidence\": 1,\n \"bet_grade\": \"A\",\n \"playable\": true,\n \"stake_units\": 1,\n \"play_score\": 1,\n \"ev_edge\": 0,\n \"implied_prob\": 0,\n \"odds\": 0,\n \"reasons\": [\n \"string\"\n ],\n \"confidence_interval\": {\n \"lower\": 1,\n \"upper\": 1,\n \"width\": 1,\n \"band\": \"HIGH\",\n \"threshold_met\": true\n },\n \"signal_tier\": \"CORE\"\n }\n ],\n \"supporting_picks\": [\n {\n \"market\": \"string\",\n \"strategy_channel\": \"standard\",\n \"pick\": \"string\",\n \"probability\": 1,\n \"confidence\": 1,\n \"odds\": 1,\n \"raw_confidence\": 1,\n \"calibrated_confidence\": 1,\n \"min_required_confidence\": 1,\n \"edge\": 1,\n \"ev_edge\": 0,\n \"implied_prob\": 0,\n \"play_score\": 1,\n \"playable\": true,\n \"bet_grade\": \"A\",\n \"stake_units\": 1,\n \"decision_reasons\": [\n \"string\"\n ],\n \"confidence_interval\": {\n \"lower\": 1,\n \"upper\": 1,\n \"width\": 1,\n \"band\": \"HIGH\",\n \"threshold_met\": true\n },\n \"signal_tier\": \"CORE\"\n }\n ],\n \"aggressive_pick\": {\n \"market\": \"string\",\n \"pick\": \"string\",\n \"probability\": 1,\n \"confidence\": 1,\n \"odds\": 1,\n \"raw_confidence\": 1,\n \"calibrated_confidence\": 1,\n \"min_required_confidence\": 1,\n \"edge\": 1,\n \"ev_edge\": 0,\n \"implied_prob\": 0,\n \"play_score\": 1,\n \"playable\": true,\n \"bet_grade\": \"A\",\n \"stake_units\": 1,\n \"decision_reasons\": [\n \"string\"\n ],\n \"confidence_interval\": {\n \"lower\": 1,\n \"upper\": 1,\n \"width\": 1,\n \"band\": \"HIGH\",\n \"threshold_met\": true\n }\n },\n \"htft\": {\n \"1/1\": 1,\n \"1/X\": 1,\n \"1/2\": 1,\n \"X/1\": 1,\n \"X/X\": 1,\n \"X/2\": 1,\n \"2/1\": 1,\n \"2/X\": 1,\n \"2/2\": 1,\n \"pick\": \"string\",\n \"confidence\": 1\n },\n \"scenario_top5\": [\n {\n \"scenario\": \"string\",\n \"score\": 1,\n \"probability\": 1\n }\n ],\n \"score_prediction\": {\n \"ft\": \"string\",\n \"ht\": \"string\",\n \"xg_home\": 1,\n \"xg_away\": 1,\n \"xg_total\": 1\n },\n \"market_board\": \"string\",\n \"reasoning_factors\": [\n \"string\"\n ],\n \"market_reliability\": \"string\",\n \"shadow_engine\": \"string\",\n \"surprise_hunter\": \"string\",\n \"v27_engine\": \"string\"\n}"
},
{
"name": "GET /api/predictions/{matchId} - 404",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/predictions/{{matchId}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"predictions",
"{matchId}"
]
}
},
"status": "Match not found",
"code": 404,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
},
{
"name": "Get prediction history and accuracy statistics",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Get prediction history and accuracy statistics",
"url": {
"raw": "{{beBaseUrl}}/api/predictions/history",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"predictions",
"history"
],
"query": []
}
},
"response": [
{
"name": "GET /api/predictions/history - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/predictions/history",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"predictions",
"history"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"stats\": {\n \"totalPredictions\": 1,\n \"totalResolved\": 1,\n \"correctPredictions\": 1,\n \"accuracyRate\": 1\n },\n \"history\": [\n \"string\"\n ]\n}"
}
]
},
{
"name": "Get predictions for upcoming matches",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Get predictions for upcoming matches",
"url": {
"raw": "{{beBaseUrl}}/api/predictions/upcoming",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"predictions",
"upcoming"
],
"query": []
}
},
"response": [
{
"name": "GET /api/predictions/upcoming - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/predictions/upcoming",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"predictions",
"upcoming"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"count\": 1,\n \"matches\": [\n {\n \"model_version\": \"string\",\n \"calibration_version\": \"string\",\n \"shadow_engine_version\": \"string\",\n \"decision_trace_id\": \"string\",\n \"match_info\": {\n \"match_id\": \"string\",\n \"match_name\": \"string\",\n \"home_team\": \"string\",\n \"away_team\": \"string\",\n \"league\": \"string\",\n \"match_date_ms\": 1,\n \"league_id\": \"string\",\n \"is_top_league\": false,\n \"sport\": \"football\"\n },\n \"data_quality\": {\n \"label\": \"HIGH\",\n \"score\": 1,\n \"home_lineup_count\": 1,\n \"away_lineup_count\": 1,\n \"lineup_source\": \"none\",\n \"flags\": [\n \"string\"\n ]\n },\n \"risk\": {\n \"level\": \"LOW\",\n \"score\": 1,\n \"is_surprise_risk\": true,\n \"surprise_type\": \"string\",\n \"surprise_score\": 0,\n \"surprise_comment\": \"string\",\n \"surprise_reasons\": [\n \"string\"\n ],\n \"warnings\": [\n \"string\"\n ]\n },\n \"engine_breakdown\": {\n \"team\": 1,\n \"player\": 1,\n \"odds\": 1,\n \"referee\": 1\n },\n \"main_pick\": {\n \"market\": \"string\",\n \"strategy_channel\": \"standard\",\n \"pick\": \"string\",\n \"probability\": 1,\n \"confidence\": 1,\n \"odds\": 1,\n \"raw_confidence\": 1,\n \"calibrated_confidence\": 1,\n \"min_required_confidence\": 1,\n \"edge\": 1,\n \"ev_edge\": 0,\n \"implied_prob\": 0,\n \"play_score\": 1,\n \"playable\": true,\n \"bet_grade\": \"A\",\n \"stake_units\": 1,\n \"decision_reasons\": [\n \"string\"\n ],\n \"confidence_interval\": {\n \"lower\": 1,\n \"upper\": 1,\n \"width\": 1,\n \"band\": \"HIGH\",\n \"threshold_met\": true\n },\n \"signal_tier\": \"CORE\"\n },\n \"value_pick\": {\n \"market\": \"string\",\n \"strategy_channel\": \"standard\",\n \"pick\": \"string\",\n \"probability\": 1,\n \"confidence\": 1,\n \"odds\": 1,\n \"raw_confidence\": 1,\n \"calibrated_confidence\": 1,\n \"min_required_confidence\": 1,\n \"edge\": 1,\n \"ev_edge\": 0,\n \"implied_prob\": 0,\n \"play_score\": 1,\n \"playable\": true,\n \"bet_grade\": \"A\",\n \"stake_units\": 1,\n \"decision_reasons\": [\n \"string\"\n ],\n \"confidence_interval\": {\n \"lower\": 1,\n \"upper\": 1,\n \"width\": 1,\n \"band\": \"HIGH\",\n \"threshold_met\": true\n },\n \"signal_tier\": \"CORE\"\n },\n \"surprise_pick\": {\n \"market\": \"string\",\n \"strategy_channel\": \"standard\",\n \"pick\": \"string\",\n \"probability\": 1,\n \"confidence\": 1,\n \"odds\": 1,\n \"raw_confidence\": 1,\n \"calibrated_confidence\": 1,\n \"min_required_confidence\": 1,\n \"edge\": 1,\n \"ev_edge\": 0,\n \"implied_prob\": 0,\n \"play_score\": 1,\n \"playable\": true,\n \"bet_grade\": \"A\",\n \"stake_units\": 1,\n \"decision_reasons\": [\n \"string\"\n ],\n \"confidence_interval\": {\n \"lower\": 1,\n \"upper\": 1,\n \"width\": 1,\n \"band\": \"HIGH\",\n \"threshold_met\": true\n },\n \"signal_tier\": \"CORE\"\n },\n \"bet_advice\": {\n \"playable\": true,\n \"suggested_stake_units\": 1,\n \"reason\": \"string\",\n \"confidence_band\": \"HIGH\",\n \"min_confidence_for_play\": 1,\n \"signal_tier\": \"CORE\"\n },\n \"bet_summary\": [\n {\n \"market\": \"string\",\n \"pick\": \"string\",\n \"raw_confidence\": 1,\n \"calibrated_confidence\": 1,\n \"bet_grade\": \"A\",\n \"playable\": true,\n \"stake_units\": 1,\n \"play_score\": 1,\n \"ev_edge\": 0,\n \"implied_prob\": 0,\n \"odds\": 0,\n \"reasons\": [\n \"string\"\n ],\n \"confidence_interval\": {\n \"lower\": 1,\n \"upper\": 1,\n \"width\": 1,\n \"band\": \"HIGH\",\n \"threshold_met\": true\n },\n \"signal_tier\": \"CORE\"\n }\n ],\n \"supporting_picks\": [\n {\n \"market\": \"string\",\n \"strategy_channel\": \"standard\",\n \"pick\": \"string\",\n \"probability\": 1,\n \"confidence\": 1,\n \"odds\": 1,\n \"raw_confidence\": 1,\n \"calibrated_confidence\": 1,\n \"min_required_confidence\": 1,\n \"edge\": 1,\n \"ev_edge\": 0,\n \"implied_prob\": 0,\n \"play_score\": 1,\n \"playable\": true,\n \"bet_grade\": \"A\",\n \"stake_units\": 1,\n \"decision_reasons\": [\n \"string\"\n ],\n \"confidence_interval\": {\n \"lower\": 1,\n \"upper\": 1,\n \"width\": 1,\n \"band\": \"HIGH\",\n \"threshold_met\": true\n },\n \"signal_tier\": \"CORE\"\n }\n ],\n \"aggressive_pick\": {\n \"market\": \"string\",\n \"pick\": \"string\",\n \"probability\": 1,\n \"confidence\": 1,\n \"odds\": 1,\n \"raw_confidence\": 1,\n \"calibrated_confidence\": 1,\n \"min_required_confidence\": 1,\n \"edge\": 1,\n \"ev_edge\": 0,\n \"implied_prob\": 0,\n \"play_score\": 1,\n \"playable\": true,\n \"bet_grade\": \"A\",\n \"stake_units\": 1,\n \"decision_reasons\": [\n \"string\"\n ],\n \"confidence_interval\": {\n \"lower\": 1,\n \"upper\": 1,\n \"width\": 1,\n \"band\": \"HIGH\",\n \"threshold_met\": true\n }\n },\n \"htft\": {\n \"1/1\": 1,\n \"1/X\": 1,\n \"1/2\": 1,\n \"X/1\": 1,\n \"X/X\": 1,\n \"X/2\": 1,\n \"2/1\": 1,\n \"2/X\": 1,\n \"2/2\": 1,\n \"pick\": \"string\",\n \"confidence\": 1\n },\n \"scenario_top5\": [\n {\n \"scenario\": \"string\",\n \"score\": 1,\n \"probability\": 1\n }\n ],\n \"score_prediction\": {\n \"ft\": \"string\",\n \"ht\": \"string\",\n \"xg_home\": 1,\n \"xg_away\": 1,\n \"xg_total\": 1\n },\n \"market_board\": \"string\",\n \"reasoning_factors\": [\n \"string\"\n ],\n \"market_reliability\": \"string\",\n \"shadow_engine\": \"string\",\n \"surprise_hunter\": \"string\",\n \"v27_engine\": \"string\"\n }\n ],\n \"modelVersion\": \"string\"\n}"
}
]
},
{
"name": "Get value betting opportunities (EV+)",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Get value betting opportunities (EV+)",
"url": {
"raw": "{{beBaseUrl}}/api/predictions/value-bets",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"predictions",
"value-bets"
],
"query": []
}
},
"response": [
{
"name": "GET /api/predictions/value-bets - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/predictions/value-bets",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"predictions",
"value-bets"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "[\n {\n \"matchId\": \"string\",\n \"matchName\": \"string\",\n \"betType\": \"string\",\n \"prediction\": \"string\",\n \"confidence\": 1,\n \"odd\": 1,\n \"expectedValue\": 1\n }\n]"
}
]
},
{
"name": "Refetch match data and get prediction",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Refetch match data and get prediction",
"url": {
"raw": "{{beBaseUrl}}/api/predictions/test/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"predictions",
"test",
"{id}"
],
"query": []
}
},
"response": [
{
"name": "GET /api/predictions/test/{id} - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/predictions/test/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"predictions",
"test",
"{id}"
]
}
},
"status": "Prediction details",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
}
]
}
]
},
{
"name": "Social Poster",
"item": [
{
"name": "GET /api/social-poster/preview/{matchId}",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "",
"url": {
"raw": "{{beBaseUrl}}/api/social-poster/preview/{{matchId}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"social-poster",
"preview",
"{matchId}"
],
"query": []
}
},
"response": [
{
"name": "GET /api/social-poster/preview/{matchId} - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/social-poster/preview/{{matchId}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"social-poster",
"preview",
"{matchId}"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
},
{
"name": "POST /api/social-poster/post/{matchId}",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "",
"url": {
"raw": "{{beBaseUrl}}/api/social-poster/post/{{matchId}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"social-poster",
"post",
"{matchId}"
],
"query": []
}
},
"response": [
{
"name": "POST /api/social-poster/post/{matchId} - 201",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/social-poster/post/{{matchId}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"social-poster",
"post",
"{matchId}"
]
}
},
"status": "",
"code": 201,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
}
]
},
{
"name": "Spor Toto",
"item": [
{
"name": "Create a bulletin manually",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Creates a new bulletin with 15 matches. Fails if gameCycleNo already exists.",
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/bulletins",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"bulletins"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "{\n \"gameCycleNo\": 333,\n \"programName\": \"27-29 Mart\",\n \"season\": \"2025-2026\",\n \"payinBeginDate\": \"2026-03-22T10:00:00\",\n \"payinEndDate\": \"2026-03-27T20:55:00\",\n \"matches\": [\n {\n \"matchOrder\": 1,\n \"homeTeamName\": \"Blackpool\",\n \"awayTeamName\": \"Burton Albion\",\n \"leagueName\": \"İN1\",\n \"kickoffTime\": \"2026-03-28T18:00:00\",\n \"matchId\": \"string\"\n }\n ]\n}"
}
},
"response": [
{
"name": "POST /api/spor-toto/bulletins - 201",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"gameCycleNo\": 333,\n \"programName\": \"27-29 Mart\",\n \"season\": \"2025-2026\",\n \"payinBeginDate\": \"2026-03-22T10:00:00\",\n \"payinEndDate\": \"2026-03-27T20:55:00\",\n \"matches\": [\n {\n \"matchOrder\": 1,\n \"homeTeamName\": \"Blackpool\",\n \"awayTeamName\": \"Burton Albion\",\n \"leagueName\": \"İN1\",\n \"kickoffTime\": \"2026-03-28T18:00:00\",\n \"matchId\": \"string\"\n }\n ]\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/bulletins",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"bulletins"
]
}
},
"status": "Created bulletin with matches",
"code": 201,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
},
{
"name": "POST /api/spor-toto/bulletins - 409",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"gameCycleNo\": 333,\n \"programName\": \"27-29 Mart\",\n \"season\": \"2025-2026\",\n \"payinBeginDate\": \"2026-03-22T10:00:00\",\n \"payinEndDate\": \"2026-03-27T20:55:00\",\n \"matches\": [\n {\n \"matchOrder\": 1,\n \"homeTeamName\": \"Blackpool\",\n \"awayTeamName\": \"Burton Albion\",\n \"leagueName\": \"İN1\",\n \"kickoffTime\": \"2026-03-28T18:00:00\",\n \"matchId\": \"string\"\n }\n ]\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/bulletins",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"bulletins"
]
}
},
"status": "Bulletin with this gameCycleNo already exists",
"code": 409,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
},
{
"name": "Evaluate columns against results",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Compares generated column strings against actual match results. Returns correct count per column and summary (15/14/13/12 bilen).",
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/columns/evaluate",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"columns",
"evaluate"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "{\n \"bulletinId\": \"string\",\n \"columns\": [\n \"string\"\n ]\n}"
}
},
"response": [
{
"name": "POST /api/spor-toto/columns/evaluate - 200",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"bulletinId\": \"string\",\n \"columns\": [\n \"string\"\n ]\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/columns/evaluate",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"columns",
"evaluate"
]
}
},
"status": "Evaluation results with correct counts per column",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
}
]
},
{
"name": "Generate AI predictions with contrarian strategy",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Analyzes bulletin matches via AI Engine V20+, applies contrarian parimutüel strategy, and generates optimized system coupons. Supports 4 strategies: CONSERVATIVE (100 cols), BALANCED (500), AGGRESSIVE (2500), FORMULA_6PCT (6% sampling).",
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/predict",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"predict"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "{\n \"bulletinId\": \"string\",\n \"strategy\": \"BALANCED\",\n \"maxBudget\": 500,\n \"maxColumns\": 200\n}"
}
},
"response": [
{
"name": "POST /api/spor-toto/predict - 200",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"bulletinId\": \"string\",\n \"strategy\": \"BALANCED\",\n \"maxBudget\": 500,\n \"maxColumns\": 200\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/predict",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"predict"
]
}
},
"status": "Prediction result with per-match analysis, system coupon, and EV report with play recommendation",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
}
]
},
{
"name": "Generate Spor Toto columns (full or reduced system)",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Takes match selections (1/X/2 per match) and generates columns via Cartesian product (full) or random sampling (reduced). Returns columns with cost calculation.",
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/columns/generate",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"columns",
"generate"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "{\n \"bulletinId\": \"string\",\n \"matchSelections\": [\n {\n \"matchOrder\": 1,\n \"selections\": [\n \"string\"\n ]\n }\n ],\n \"strategy\": \"FULL_SYSTEM\",\n \"maxColumns\": 100\n}"
}
},
"response": [
{
"name": "POST /api/spor-toto/columns/generate - 200",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"bulletinId\": \"string\",\n \"matchSelections\": [\n {\n \"matchOrder\": 1,\n \"selections\": [\n \"string\"\n ]\n }\n ],\n \"strategy\": \"FULL_SYSTEM\",\n \"maxColumns\": 100\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/columns/generate",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"columns",
"generate"
]
}
},
"status": "Generated columns with strategy, cost, and column strings",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
}
]
},
{
"name": "Get bulletin details",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Returns a single bulletin with all 15 matches, results, and dividend info.",
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/bulletins/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"bulletins",
"{id}"
],
"query": []
}
},
"response": [
{
"name": "GET /api/spor-toto/bulletins/{id} - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/bulletins/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"bulletins",
"{id}"
]
}
},
"status": "Bulletin with matches and results",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
},
{
"name": "GET /api/spor-toto/bulletins/{id} - 404",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/bulletins/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"bulletins",
"{id}"
]
}
},
"status": "Bulletin not found",
"code": 404,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
},
{
"name": "Get bulletin pool & EV statistics",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Returns pool distribution (35/20/20/25), expected value calculations, and rollover analysis for a bulletin.",
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/bulletins/{{id}}/stats",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"bulletins",
"{id}",
"stats"
],
"query": []
}
},
"response": [
{
"name": "GET /api/spor-toto/bulletins/{id}/stats - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/bulletins/{{id}}/stats",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"bulletins",
"{id}",
"stats"
]
}
},
"status": "Pool distribution and EV stats",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
}
]
},
{
"name": "Get rollover history and trends",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Returns the last N bulletins with rollover amounts and consecutive rollover streak.",
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/history",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"history"
],
"query": [
{
"key": "limit",
"value": "",
"description": "Number of results (default: 20)",
"disabled": true
}
]
}
},
"response": [
{
"name": "GET /api/spor-toto/history - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/history",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"history"
]
}
},
"status": "Rollover history with trend data",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
}
]
},
{
"name": "List Spor Toto bulletins",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Returns a paginated list of bulletins, optionally filtered by status.",
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/bulletins",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"bulletins"
],
"query": [
{
"key": "status",
"value": "",
"description": "Filter by bulletin status",
"disabled": true
},
{
"key": "limit",
"value": "",
"description": "Max results (default: 10)",
"disabled": true
}
]
}
},
"response": [
{
"name": "GET /api/spor-toto/bulletins - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/bulletins",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"bulletins"
]
}
},
"status": "Array of bulletins with matches and results",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
}
]
},
{
"name": "Sync current bulletin from Spor Toto API",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Fetches the latest bulletin from sportotov2.iddaa.com and upserts it into the database. Updates match results and dividends if already exists.",
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/sync",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"sync"
],
"query": []
}
},
"response": [
{
"name": "POST /api/spor-toto/sync - 200",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/sync",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"sync"
]
}
},
"status": "Sync result with action (created/updated/unchanged)",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
}
]
},
{
"name": "Update bulletin match results",
"request": {
"method": "PATCH",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Updates individual match results and optionally upserts dividend/prize data. Marks bulletin COMPLETED when all 15 results are entered.",
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/bulletins/{{id}}/results",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"bulletins",
"{id}",
"results"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "{\n \"results\": [\n {\n \"matchOrder\": 1,\n \"result\": \"HOME\",\n \"isCancelled\": false,\n \"drawResult\": \"HOME\"\n }\n ],\n \"winners15\": 1,\n \"prize15\": 1,\n \"winners14\": 1,\n \"prize14\": 1,\n \"winners13\": 1,\n \"prize13\": 1,\n \"winners12\": 1,\n \"prize12\": 1,\n \"rolloverNext\": 1\n}"
}
},
"response": [
{
"name": "PATCH /api/spor-toto/bulletins/{id}/results - 200",
"originalRequest": {
"method": "PATCH",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"results\": [\n {\n \"matchOrder\": 1,\n \"result\": \"HOME\",\n \"isCancelled\": false,\n \"drawResult\": \"HOME\"\n }\n ],\n \"winners15\": 1,\n \"prize15\": 1,\n \"winners14\": 1,\n \"prize14\": 1,\n \"winners13\": 1,\n \"prize13\": 1,\n \"winners12\": 1,\n \"prize12\": 1,\n \"rolloverNext\": 1\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/bulletins/{{id}}/results",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"bulletins",
"{id}",
"results"
]
}
},
"status": "Updated bulletin with results",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
},
{
"name": "PATCH /api/spor-toto/bulletins/{id}/results - 404",
"originalRequest": {
"method": "PATCH",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"results\": [\n {\n \"matchOrder\": 1,\n \"result\": \"HOME\",\n \"isCancelled\": false,\n \"drawResult\": \"HOME\"\n }\n ],\n \"winners15\": 1,\n \"prize15\": 1,\n \"winners14\": 1,\n \"prize14\": 1,\n \"winners13\": 1,\n \"prize13\": 1,\n \"winners12\": 1,\n \"prize12\": 1,\n \"rolloverNext\": 1\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/spor-toto/bulletins/{{id}}/results",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"spor-toto",
"bulletins",
"{id}",
"results"
]
}
},
"status": "Bulletin not found",
"code": 404,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
}
]
},
{
"name": "Users",
"item": [
{
"name": "Change current user password",
"request": {
"method": "PATCH",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Change current user password",
"url": {
"raw": "{{beBaseUrl}}/api/users/me/password",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"users",
"me",
"password"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "{\n \"currentPassword\": \"oldPassword123\",\n \"newPassword\": \"newPassword456\"\n}"
}
},
"response": [
{
"name": "PATCH /api/users/me/password - 200",
"originalRequest": {
"method": "PATCH",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"currentPassword\": \"oldPassword123\",\n \"newPassword\": \"newPassword456\"\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/users/me/password",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"users",
"me",
"password"
]
}
},
"status": "Password changed successfully",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
},
{
"name": "Get a record by ID",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Get a record by ID",
"url": {
"raw": "{{beBaseUrl}}/api/users/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"users",
"{id}"
],
"query": []
}
},
"response": [
{
"name": "GET /api/users/{id} - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/users/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"users",
"{id}"
]
}
},
"status": "Record retrieved successfully",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
},
{
"name": "GET /api/users/{id} - 404",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/users/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"users",
"{id}"
]
}
},
"status": "Record not found",
"code": 404,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
},
{
"name": "Get all records with pagination",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Get all records with pagination",
"url": {
"raw": "{{beBaseUrl}}/api/users",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"users"
],
"query": [
{
"key": "page",
"value": "1",
"description": "Page number",
"disabled": true
},
{
"key": "limit",
"value": "10",
"description": "Items per page",
"disabled": true
},
{
"key": "sortBy",
"value": "",
"description": "Field to sort by",
"disabled": true
},
{
"key": "sortOrder",
"value": "desc",
"description": "Sort order",
"disabled": true
},
{
"key": "search",
"value": "",
"description": "Search query",
"disabled": true
}
]
}
},
"response": [
{
"name": "GET /api/users - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/users",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"users"
]
}
},
"status": "Records retrieved successfully",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
},
{
"name": "Get current authenticated user profile",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Get current authenticated user profile",
"url": {
"raw": "{{beBaseUrl}}/api/users/me",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"users",
"me"
],
"query": []
}
},
"response": [
{
"name": "GET /api/users/me - 200",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/users/me",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"users",
"me"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
}
]
},
{
"name": "Restore a soft-deleted record",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Restore a soft-deleted record",
"url": {
"raw": "{{beBaseUrl}}/api/users/{{id}}/restore",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"users",
"{id}",
"restore"
],
"query": []
}
},
"response": [
{
"name": "POST /api/users/{id}/restore - 200",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/users/{{id}}/restore",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"users",
"{id}",
"restore"
]
}
},
"status": "Record restored successfully",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
},
{
"name": "Update an existing record",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Update an existing record",
"url": {
"raw": "{{beBaseUrl}}/api/users/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"users",
"{id}"
],
"query": []
}
},
"response": [
{
"name": "PUT /api/users/{id} - 200",
"originalRequest": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/users/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"users",
"{id}"
]
}
},
"status": "Record updated successfully",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
},
{
"name": "PUT /api/users/{id} - 404",
"originalRequest": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"url": {
"raw": "{{beBaseUrl}}/api/users/{{id}}",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"users",
"{id}"
]
}
},
"status": "Record not found",
"code": 404,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{}"
}
]
},
{
"name": "Update current user profile",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Bearer {{accessToken}}"
}
],
"description": "Update current user profile",
"url": {
"raw": "{{beBaseUrl}}/api/users/me",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"users",
"me"
],
"query": []
},
"body": {
"mode": "raw",
"raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\"\n}"
}
},
"response": [
{
"name": "PUT /api/users/me - 200",
"originalRequest": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"firstName\": \"John\",\n \"lastName\": \"Doe\"\n}"
},
"url": {
"raw": "{{beBaseUrl}}/api/users/me",
"host": [
"{{beBaseUrl}}"
],
"path": [
"api",
"users",
"me"
]
}
},
"status": "",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "\"string\""
}
]
}
]
}
]
},
{
"name": "AI Engine",
"item": [
{
"name": "V20+",
"item": [
{
"name": "Root",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "AI engine root status endpoint",
"url": {
"raw": "{{aiBaseUrl}}/",
"host": [
"{{aiBaseUrl}}"
],
"path": []
}
},
"response": [
{
"name": "GET /",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "AI engine root status endpoint",
"url": {
"raw": "{{aiBaseUrl}}/",
"host": [
"{{aiBaseUrl}}"
],
"path": []
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"status\": \"Suggest-Bet AI Engine v20+\",\n \"engine\": \"V20 Plus Single Match Orchestrator\"\n}"
}
]
},
{
"name": "Health",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "AI engine health endpoint",
"url": {
"raw": "{{aiBaseUrl}}/health",
"host": [
"{{aiBaseUrl}}"
],
"path": [
"health"
]
}
},
"response": [
{
"name": "GET /health",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "AI engine health endpoint",
"url": {
"raw": "{{aiBaseUrl}}/health",
"host": [
"{{aiBaseUrl}}"
],
"path": [
"health"
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"status\": \"healthy\",\n \"engine\": \"v20plus\",\n \"ready\": true\n}"
}
]
},
{
"name": "Analyze Match",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Full V20+ single match analysis",
"url": {
"raw": "{{aiBaseUrl}}/v20plus/analyze/{{match_id}}",
"host": [
"{{aiBaseUrl}}"
],
"path": [
"v20plus",
"analyze",
"{{match_id}}"
]
}
},
"response": [
{
"name": "POST /v20plus/analyze/{{match_id}}",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Full V20+ single match analysis",
"url": {
"raw": "{{aiBaseUrl}}/v20plus/analyze/{{match_id}}",
"host": [
"{{aiBaseUrl}}"
],
"path": [
"v20plus",
"analyze",
"{{match_id}}"
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"model_version\": \"v30.0\",\n \"match_info\": {\n \"match_id\": \"{{match_id}}\"\n },\n \"main_pick\": {\n \"market\": \"OU25\",\n \"pick\": \"2.5 Üst\"\n },\n \"market_board\": {}\n}"
}
]
},
{
"name": "Analyze HTMS",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Half-time result analysis endpoint",
"url": {
"raw": "{{aiBaseUrl}}/v20plus/analyze-htms/{{match_id}}",
"host": [
"{{aiBaseUrl}}"
],
"path": [
"v20plus",
"analyze-htms",
"{{match_id}}"
]
}
},
"response": [
{
"name": "GET /v20plus/analyze-htms/{{match_id}}",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Half-time result analysis endpoint",
"url": {
"raw": "{{aiBaseUrl}}/v20plus/analyze-htms/{{match_id}}",
"host": [
"{{aiBaseUrl}}"
],
"path": [
"v20plus",
"analyze-htms",
"{{match_id}}"
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"match_id\": \"{{match_id}}\",\n \"market\": \"HT\"\n}"
}
]
},
{
"name": "Analyze HTFT",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Half-time/full-time analysis endpoint",
"url": {
"raw": "{{aiBaseUrl}}/v20plus/analyze-htft/{{match_id}}",
"host": [
"{{aiBaseUrl}}"
],
"path": [
"v20plus",
"analyze-htft",
"{{match_id}}"
],
"query": [
{
"key": "timeout_sec",
"value": "30",
"description": "Timeout between 3 and 120 seconds"
}
]
}
},
"response": [
{
"name": "GET /v20plus/analyze-htft/{{match_id}}",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Half-time/full-time analysis endpoint",
"url": {
"raw": "{{aiBaseUrl}}/v20plus/analyze-htft/{{match_id}}",
"host": [
"{{aiBaseUrl}}"
],
"path": [
"v20plus",
"analyze-htft",
"{{match_id}}"
],
"query": [
{
"key": "timeout_sec",
"value": "30",
"description": "Timeout between 3 and 120 seconds"
}
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"engine\": \"v20plus.1\",\n \"match_info\": {\n \"match_id\": \"{{match_id}}\"\n },\n \"ht_ft_probs\": {\n \"1/1\": 0.25,\n \"X/X\": 0.18\n }\n}"
}
]
},
{
"name": "Generate Coupon",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Generate V20+ coupon from selected matches",
"url": {
"raw": "{{aiBaseUrl}}/v20plus/coupon",
"host": [
"{{aiBaseUrl}}"
],
"path": [
"v20plus",
"coupon"
]
},
"body": {
"mode": "raw",
"raw": "{\n \"match_ids\": [\n \"match-1\",\n \"match-2\"\n ],\n \"strategy\": \"BALANCED\",\n \"max_matches\": 4,\n \"min_confidence\": 55\n}"
}
},
"response": [
{
"name": "POST /v20plus/coupon",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Generate V20+ coupon from selected matches",
"url": {
"raw": "{{aiBaseUrl}}/v20plus/coupon",
"host": [
"{{aiBaseUrl}}"
],
"path": [
"v20plus",
"coupon"
]
},
"body": {
"mode": "raw",
"raw": "{\n \"match_ids\": [\n \"match-1\",\n \"match-2\"\n ],\n \"strategy\": \"BALANCED\",\n \"max_matches\": 4,\n \"min_confidence\": 55\n}"
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"success\": true,\n \"data\": {\n \"strategy\": \"BALANCED\",\n \"bets\": []\n }\n}"
}
]
},
{
"name": "Daily Banker",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Get daily banker picks",
"url": {
"raw": "{{aiBaseUrl}}/v20plus/daily-banker",
"host": [
"{{aiBaseUrl}}"
],
"path": [
"v20plus",
"daily-banker"
],
"query": [
{
"key": "count",
"value": "3",
"description": "Number of banker picks"
}
]
}
},
"response": [
{
"name": "GET /v20plus/daily-banker",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Get daily banker picks",
"url": {
"raw": "{{aiBaseUrl}}/v20plus/daily-banker",
"host": [
"{{aiBaseUrl}}"
],
"path": [
"v20plus",
"daily-banker"
],
"query": [
{
"key": "count",
"value": "3",
"description": "Number of banker picks"
}
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"count\": 3,\n \"bankers\": []\n}"
}
]
},
{
"name": "Reversal Watchlist",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Reversal watchlist candidates",
"url": {
"raw": "{{aiBaseUrl}}/v20plus/reversal-watchlist",
"host": [
"{{aiBaseUrl}}"
],
"path": [
"v20plus",
"reversal-watchlist"
],
"query": [
{
"key": "count",
"value": "20",
"description": "Result size"
},
{
"key": "horizon_hours",
"value": "72",
"description": "Future horizon"
},
{
"key": "min_score",
"value": "45",
"description": "Minimum score"
},
{
"key": "top_leagues_only",
"value": "false",
"description": "Filter to top leagues"
}
]
}
},
"response": [
{
"name": "GET /v20plus/reversal-watchlist",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "Reversal watchlist candidates",
"url": {
"raw": "{{aiBaseUrl}}/v20plus/reversal-watchlist",
"host": [
"{{aiBaseUrl}}"
],
"path": [
"v20plus",
"reversal-watchlist"
],
"query": [
{
"key": "count",
"value": "20",
"description": "Result size"
},
{
"key": "horizon_hours",
"value": "72",
"description": "Future horizon"
},
{
"key": "min_score",
"value": "45",
"description": "Minimum score"
},
{
"key": "top_leagues_only",
"value": "false",
"description": "Filter to top leagues"
}
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"count\": 0,\n \"items\": []\n}"
}
]
}
]
},
{
"name": "V2",
"item": [
{
"name": "V2 Health",
"request": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "V2 betting engine health",
"url": {
"raw": "{{aiBaseUrl}}/v2/health",
"host": [
"{{aiBaseUrl}}"
],
"path": [
"v2",
"health"
]
}
},
"response": [
{
"name": "GET /v2/health",
"originalRequest": {
"method": "GET",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "V2 betting engine health",
"url": {
"raw": "{{aiBaseUrl}}/v2/health",
"host": [
"{{aiBaseUrl}}"
],
"path": [
"v2",
"health"
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"status\": \"healthy\",\n \"engine\": \"v2.betting_engine\",\n \"models_loaded\": true\n}"
}
]
},
{
"name": "V2 Analyze Match",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "V2 leakage-free match analysis",
"url": {
"raw": "{{aiBaseUrl}}/v2/analyze/{{match_id}}",
"host": [
"{{aiBaseUrl}}"
],
"path": [
"v2",
"analyze",
"{{match_id}}"
]
}
},
"response": [
{
"name": "POST /v2/analyze/{{match_id}}",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"description": "V2 leakage-free match analysis",
"url": {
"raw": "{{aiBaseUrl}}/v2/analyze/{{match_id}}",
"host": [
"{{aiBaseUrl}}"
],
"path": [
"v2",
"analyze",
"{{match_id}}"
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": "json",
"header": [
{
"key": "Content-Type",
"value": "application/json"
}
],
"body": "{\n \"model_version\": \"v2.betting_engine\",\n \"match_info\": {\n \"match_id\": \"{{match_id}}\"\n },\n \"main_pick\": {\n \"market\": \"MS\",\n \"pick\": \"1\"\n },\n \"market_board\": {\n \"MS\": {\n \"pick\": \"1\",\n \"confidence\": 58.4\n }\n }\n}"
}
]
}
]
}
]
}
]
}