@SpeedTopPmpProdServer = https://pmp.speedtop.io/api/v1/pmp @SpeedTopPmpTestServer = https://speedtop-pmp.golink.dev/api/v1/pmp @FkeyPmpProdServer = https://pmp.fkey.win/api/v1/pmp @FkeyPmpTestServer = https://fkey-pmp.golink.dev/api/v1/pmp @RingPlusPmpProdServer = https://pmp.ringplus.ai/api/v1/pmp @ShortDramaPmpProdServer = https://pmp.zipdrama.io/api/v1/pmp @SpeedTopPmpProdAccessToken = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTg1OTYzODgsImlhdCI6MTc1ODUwOTk4OCwidXNlcklkIjoxfQ.bc_YJmpj0l2TpOwzPKqZVXdG_otjBZ8cfjTHElbQN8g @SpeedTopPmpProdRefreshToken = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTkxMTQ3ODgsImlhdCI6MTc1ODUwOTk4OCwiaXNSZWZyZXNoVG9rZW4iOjEsInVzZXJJZCI6MX0.WxR5pjxWWu8iGEVJ5zVpONE0BlNb9CE2saAuIztEIIo @SpeedTopPmpTestAccessToken = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTg1OTY2ODksImlhdCI6MTc1ODUxMDI4OSwidXNlcklkIjoxfQ.KKZkPXhT9qELxslEczDvBbTIiFABuFZZU0sdYmwLCaM @SpeedTopPmpTestRefreshToken = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTkxMTUwODksImlhdCI6MTc1ODUxMDI4OSwiaXNSZWZyZXNoVG9rZW4iOjEsInVzZXJJZCI6MX0.XZoYZF1VSqJHhBTQEqFQSDQOANWGq7F50zixThGKRrw @FkeyPmpProdAccessToken = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTg2MTU2NzQsImlhdCI6MTc1ODUyOTI3NCwidXNlcklkIjoxM30.t0nVIL17yo4i1hA0W5S1FuasnveSUwR1K8YnsgXF-eo @FkeyPmpProdRefreshToken = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTkxMzQwNzQsImlhdCI6MTc1ODUyOTI3NCwiaXNSZWZyZXNoVG9rZW4iOjEsInVzZXJJZCI6MTN9._uljRnIIlfFXkhtixElOUBlWR1xDRJTIcGp5SEc6gQY @FkeyPmpTestAccessToken = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTg2MTkyODEsImlhdCI6MTc1ODUzMjg4MSwidXNlcklkIjo3fQ.48OHh6X0yn8zoJzhHlTZ7rlLI8z-UZYC2Z0EqTRLF-g @FkeyPmpTestRefreshToken = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTkxMzc2ODEsImlhdCI6MTc1ODUzMjg4MSwiaXNSZWZyZXNoVG9rZW4iOjEsInVzZXJJZCI6N30.PolhbJtSpdLdD2rDN6WqgKMz0mW-VdwjA--IztBwYuc @RingPlusPmpProdAccessToken = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTg2ODEwNDksImlhdCI6MTc1ODU5NDY0OSwidXNlcklkIjoxMX0.TGXxI15dCaw8e0l1j0jn1eihYNvakmJEPrPp1rP8O5Y @RingPlusPmpProdRefreshToken = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTkxOTk0NDksImlhdCI6MTc1ODU5NDY0OSwiaXNSZWZyZXNoVG9rZW4iOjEsInVzZXJJZCI6MTF9.UtAlPVIgHszg7QydRyOxsq5NOfWrVX2hm-gwIHvT180 @ShortDramaPmpProdAccessToken = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTg2OTQ3NTQsImlhdCI6MTc1ODYwODM1NCwidXNlcklkIjoxOX0.FM0m5JAXObwYzxUvNbR5tS2Dnn4dWexCUzX61B6jUvY @ShortDramaPmpProdRefreshToken = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3NTkyMTMxNTQsImlhdCI6MTc1ODYwODM1NCwiaXNSZWZyZXNoVG9rZW4iOjEsInVzZXJJZCI6MTl9.gp0l5ZtRp97afl5qGeJ0BI6rxZ0Qq-vWMAG03G1QuOM @PMP_SERVER = {{ShortDramaPmpProdServer}} @STAT_SERVER = https://metrics-api.speedtop.io/api/v1/pmp @ACCESS_TOKEN = {{ShortDramaPmpProdAccessToken}} @REFRESH_TOKEN = {{ShortDramaPmpProdRefreshToken}} @PRODUCT_CODE = zipdrama ### 作业批处理管理接口 ### 获取作业批处理列表 POST {{PMP_SERVER}}/jobBatch/list Content-Type: application/json Authorization: Bearer {{ACCESS_TOKEN}} { "current": 1, "pageSize": 20, "keyword": "", "ids": [], "excludeIds": [], "startedTimeRange": { "start": 1755518760, "end": 1755605160 }, "finishedTimeRange": { "start": 1755518760, "end": 1755605160 }, "statuses": ["Pending", "Running", "Completed"], "name": "VPN服务器部署任务", "type": "deploy", "initParams": "{\"template\": \"vpn-deploy\", \"version\": \"1.0.0\"}", "contextData": "{\"deployConfig\": {\"region\": \"CN\", \"instanceType\": \"t2.micro\"}}", "beginHandler": "https://api.example.com/job/begin", "afterHandler": "https://api.example.com/job/after", "concurrency": 5, "retryPolicy": "{\"maxRetries\": 3, \"delay\": 5000}", "startedTime": 1755518760, "finishedTime": 1755605160, "result": "AllSucceeded", "status": "Completed", "remark": "VPN服务器批量部署任务", "createAt": 1, "updateAt": 1, "createTime": 1755518760, "updateTime": 1755605160 } ### 添加作业批处理 POST {{PMP_SERVER}}/jobBatch/add Content-Type: application/json Authorization: Bearer {{ACCESS_TOKEN}} { "name": "VPN服务器部署任务", "type": "deploy", "initParams": "{\"template\": \"vpn-deploy\", \"version\": \"1.0.0\"}", "contextData": "{\"deployConfig\": {\"region\": \"CN\", \"instanceType\": \"t2.micro\"}}", "beginHandler": "https://api.example.com/job/begin", "afterHandler": "https://api.example.com/job/after", "concurrency": 5, "retryPolicy": "{\"maxRetries\": 3, \"delay\": 5000}", "remark": "VPN服务器批量部署任务" } ### 更新作业批处理 POST {{PMP_SERVER}}/jobBatch/update Content-Type: application/json Authorization: Bearer {{ACCESS_TOKEN}} { "id": 1, "name": "VPN服务器部署任务", "type": "deploy", "initParams": "{\"template\": \"vpn-deploy\", \"version\": \"1.1.0\"}", "contextData": "{\"deployConfig\": {\"region\": \"CN\", \"instanceType\": \"t2.small\"}}", "beginHandler": "https://api.example.com/job/begin", "afterHandler": "https://api.example.com/job/after", "concurrency": 10, "retryPolicy": "{\"maxRetries\": 5, \"delay\": 10000}", "startedTime": 1755518760, "finishedTime": 1755605160, "result": "AllSucceeded", "status": "Completed", "remark": "更新后的VPN服务器批量部署任务", "createAt": 1, "updateAt": 1, "createTime": 1755518760, "updateTime": 1755605160 } ### 删除作业批处理 POST {{PMP_SERVER}}/jobBatch/del Content-Type: application/json Authorization: Bearer {{ACCESS_TOKEN}} { "ids": [1, 2, 3] } ### 获取作业批处理详情 POST {{PMP_SERVER}}/jobBatch/get Content-Type: application/json Authorization: Bearer {{ACCESS_TOKEN}} { "id": 1 } ### 添加作业批处理(包含任务) POST {{PMP_SERVER}}/jobBatch/addWithTasks Content-Type: application/json Authorization: Bearer {{ACCESS_TOKEN}} { "jobBatch": { "name": "VPN服务器部署任务", "type": "deploy", "initParams": "{\"template\": \"vpn-deploy\", \"version\": \"1.0.0\"}", "contextData": "{\"deployConfig\": {\"region\": \"CN\", \"instanceType\": \"t2.micro\"}}", "beginHandler": "https://api.example.com/job/begin", "afterHandler": "https://api.example.com/job/after", "concurrency": 5, "retryPolicy": "{\"maxRetries\": 3, \"delay\": 5000}", "remark": "VPN服务器批量部署任务" }, "jobTasks": [ { "name": "部署VPN服务器1", "type": "deploy", "params": "{\"serverId\": 1, \"region\": \"CN\"}", "status": "Pending", "remark": "部署第一台VPN服务器" }, { "name": "部署VPN服务器2", "type": "deploy", "params": "{\"serverId\": 2, \"region\": \"CN\"}", "status": "Pending", "remark": "部署第二台VPN服务器" } ] } ### 获取作业批处理详情(包含任务) POST {{PMP_SERVER}}/jobBatch/getWithTasks Content-Type: application/json Authorization: Bearer {{ACCESS_TOKEN}} { "id": 1 } ### 获取作业批处理列表(包含任务) POST {{PMP_SERVER}}/jobBatch/listWithTasks Content-Type: application/json Authorization: Bearer {{ACCESS_TOKEN}} { "current": 1, "pageSize": 20, "keyword": "", "ids": [], "excludeIds": [], "startedTimeRange": { "start": 1755518760, "end": 1755605160 }, "finishedTimeRange": { "start": 1755518760, "end": 1755605160 }, "statuses": ["Pending", "Running", "Completed"], "name": "VPN服务器部署任务", "type": "deploy" } ### 部署批处理管理接口 ### 添加部署批处理 POST {{PMP_SERVER}}/deployBatch/add Content-Type: application/json Authorization: Bearer {{ACCESS_TOKEN}} { "awxTemplateId": 1, "awxTemplateName": "vpn-deploy-template", "awxJobExtraVars": { "deploy_version": "1.0.0", "region": "CN", "instance_type": "t2.micro" }, "hosts": [ { "instanceId": 1, "ip": "192.168.1.100", "sshPort": 22, "sshUser": "ubuntu", "sshPassword": "password123" }, { "instanceId": 2, "ip": "192.168.1.101", "sshPort": 22, "sshUser": "ubuntu", "sshPassword": "password123" } ], "concurrency": 5, "remark": "VPN服务器批量部署任务" } ### 获取部署批处理列表(包含任务) POST {{PMP_SERVER}}/deployBatch/list Content-Type: application/json Authorization: Bearer {{ACCESS_TOKEN}} { "current": 1, "pageSize": 20, "keyword": "", "ids": [], "excludeIds": [], "startedTimeRange": { "start": 1755518760, "end": 1755605160 }, "finishedTimeRange": { "start": 1755518760, "end": 1755605160 }, "statuses": ["Pending", "Running", "Completed"], "name": "VPN服务器部署任务", "type": "deploy" }