{
"info": {
"_postman_id": "4d4f5a7d-6bbf-4b02-9b2c-8de8c9b0b6f1",
"name": "CosLogin Local API",
"description": "Postman collection for CosLogin Local API. Set `local_token` from Settings > Local API in the desktop client before sending requests.",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"variable": [
{
"key": "base_url",
"value": "http://127.0.0.1:54345",
"type": "string"
},
{
"key": "local_token",
"value": "YOUR_LOCAL_TOKEN",
"type": "string"
},
{
"key": "browser_id",
"value": "10001",
"type": "string"
},
{
"key": "browser_uuid",
"value": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "string"
},
{
"key": "browser_config",
"value": "{}",
"type": "string"
},
{
"key": "group_id",
"value": "0",
"type": "string"
},
{
"key": "tag_id",
"value": "3001",
"type": "string"
}
],
"item": [
{
"name": "Browser",
"item": [
{
"name": "Open Browser",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"uuid\": \"{{browser_uuid}}\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/browser/open",
"host": [
"{{base_url}}"
],
"path": [
"browser",
"open"
]
},
"description": "Open one browser by `uuid` or `id`."
}
},
{
"name": "Close Browser",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"uuid\": \"{{browser_uuid}}\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/browser/close",
"host": [
"{{base_url}}"
],
"path": [
"browser",
"close"
]
},
"description": "Close one browser by `uuid` or `id`."
}
},
{
"name": "Create Browser",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"Postman Test Browser\",\n \"groupId\": \"{{group_id}}\",\n \"remark\": \"Created by Local API Postman collection\",\n \"proxyMethod\": \"2\",\n \"proxyType\": \"noproxy\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/browser/update",
"host": [
"{{base_url}}"
],
"path": [
"browser",
"update"
]
},
"description": "Create a browser. To edit an existing browser, include `id` or `uuid` and a full `config` object from `/browser/detail`."
}
},
{
"name": "Update Existing Browser - Requires Real UUID And Detail Config",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"uuid\": \"{{browser_uuid}}\",\n \"name\": \"Postman Updated Browser\",\n \"remark\": \"Updated by Local API Postman collection\",\n \"config\": {{browser_config}}\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/browser/update",
"host": [
"{{base_url}}"
],
"path": [
"browser",
"update"
]
},
"description": "Edit an existing browser. Run `List Browsers` to get a real `browser_uuid`, then run `Get Browser Detail` to save `browser_config`. Do not use the default placeholder UUID."
},
"event": [
{
"listen": "prerequest",
"script": {
"type": "text/javascript",
"exec": [
"const uuid = pm.variables.get('browser_uuid') || '';",
"const config = pm.variables.get('browser_config') || '';",
"",
"if (!uuid || uuid.includes('xxxx')) {",
" throw new Error('请先通过 List Browsers 获取真实 browser_uuid,或手动填写真实 UUID。创建窗口请使用 Create Browser 请求,body 中不要带 uuid/id。');",
"}",
"",
"if (!config || config === '{}') {",
" throw new Error('请先运行 Get Browser Detail 保存 browser_config,或手动把详情接口返回的 data.config 填入请求 body。');",
"}"
]
}
}
]
},
{
"name": "Batch Create Browsers",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"createCount\": 2,\n \"namePrefix\": \"Postman Batch Browser-\",\n \"groupId\": \"{{group_id}}\",\n \"remark\": \"Batch created by Local API\",\n \"proxyMethod\": \"2\",\n \"proxyType\": \"noproxy\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/browser/create/batch",
"host": [
"{{base_url}}"
],
"path": [
"browser",
"create",
"batch"
]
},
"description": "Batch create browsers by count. Compatible aliases in Local API: `/browser/batch-create`, `/browser/createBatch`."
}
},
{
"name": "Batch Create Browsers By Items",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"namePrefix\": \"Postman Item Browser-\",\n \"items\": [\n {\n \"name\": \"Postman Item Browser 1\",\n \"groupId\": \"{{group_id}}\",\n \"remark\": \"Created from items\",\n \"proxyMethod\": \"2\",\n \"proxyType\": \"noproxy\"\n },\n {\n \"name\": \"Postman Item Browser 2\",\n \"groupId\": \"{{group_id}}\",\n \"remark\": \"Created from items\",\n \"proxyMethod\": \"2\",\n \"proxyType\": \"noproxy\"\n }\n ]\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/browser/create/batch",
"host": [
"{{base_url}}"
],
"path": [
"browser",
"create",
"batch"
]
},
"description": "Batch create browsers by item list."
}
},
{
"name": "Batch Update Browser Config",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"ids\": [\"{{browser_id}}\"],\n \"remark\": \"Batch updated remark\",\n \"config\": {\n \"syncCookies\": true\n },\n \"configFields\": [\n \"syncCookies\"\n ],\n \"updateFields\": [\n \"syncCookies\"\n ],\n \"checkedFields\": [\n \"syncCookies\"\n ]\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/browser/update/partial",
"host": [
"{{base_url}}"
],
"path": [
"browser",
"update",
"partial"
]
},
"description": "Batch update browser config fields, group, tags, or remark."
}
},
{
"name": "List Browsers",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"page\": 1,\n \"pageSize\": 20,\n \"scope\": \"all\",\n \"status\": 1\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/browser/list",
"host": [
"{{base_url}}"
],
"path": [
"browser",
"list"
]
},
"description": "List browsers. Use `backend_id` or `browserId` from the response for batch operations when available."
}
},
{
"name": "Get Browser Detail",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"uuid\": \"{{browser_uuid}}\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/browser/detail",
"host": [
"{{base_url}}"
],
"path": [
"browser",
"detail"
]
},
"description": "Get browser detail by `uuid` or `id`. Use the returned `config` when editing a browser."
}
},
{
"name": "Delete Browser",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"uuid\": \"{{browser_uuid}}\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/browser/delete",
"host": [
"{{base_url}}"
],
"path": [
"browser",
"delete"
]
},
"description": "Delete one or more browsers by `id`, `ids`, or `uuid`."
}
},
{
"name": "Batch Delete Browsers",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"ids\": [\"{{browser_id}}\"]\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/browser/delete/ids",
"host": [
"{{base_url}}"
],
"path": [
"browser",
"delete",
"ids"
]
},
"description": "Batch delete browsers by id list."
}
},
{
"name": "Update Browser Group",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"ids\": [\"{{browser_id}}\"],\n \"groupId\": \"{{group_id}}\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/browser/group/update",
"host": [
"{{base_url}}"
],
"path": [
"browser",
"group",
"update"
]
},
"description": "Move browsers to a group. If you only have UUIDs, send `uuids` instead of `ids`."
}
},
{
"name": "Update Browser Remark",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"ids\": [\"{{browser_id}}\"],\n \"remark\": \"Updated by Postman\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/browser/remark/update",
"host": [
"{{base_url}}"
],
"path": [
"browser",
"remark",
"update"
]
},
"description": "Update remarks for browsers. If you only have UUIDs, send `uuids` instead of `ids`."
}
},
{
"name": "Update Browser Proxy - No Proxy",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"ids\": [\"{{browser_id}}\"],\n \"proxyMethod\": \"2\",\n \"proxyType\": \"noproxy\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/browser/proxy/update",
"host": [
"{{base_url}}"
],
"path": [
"browser",
"proxy",
"update"
]
},
"description": "Set browsers to no proxy. If you only have UUIDs, send `uuids` instead of `ids`."
}
},
{
"name": "Update Browser Proxy - Custom HTTP",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"ids\": [\"{{browser_id}}\"],\n \"proxyMethod\": \"2\",\n \"proxyType\": \"http\",\n \"host\": \"127.0.0.1\",\n \"port\": \"7890\",\n \"proxyUserName\": \"\",\n \"proxyPassword\": \"\",\n \"ipCheckService\": \"ipapi\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/browser/proxy/update",
"host": [
"{{base_url}}"
],
"path": [
"browser",
"proxy",
"update"
]
},
"description": "Set custom HTTP proxy for browsers."
}
},
{
"name": "Update Browser Proxy - API Extract",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"ids\": [\"{{browser_id}}\"],\n \"proxyMethod\": \"3\",\n \"dynamicIpUrl\": \"https://example.com/extract-proxy\",\n \"dynamicIpChannel\": \"general\",\n \"ipCheckService\": \"ipapi\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/browser/proxy/update",
"host": [
"{{base_url}}"
],
"path": [
"browser",
"proxy",
"update"
]
},
"description": "Set API extraction proxy for browsers. Replace `dynamicIpUrl` with your extraction URL."
}
},
{
"name": "Update Browser Proxy - Proxy Manager",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"ids\": [\"{{browser_id}}\"],\n \"proxyMethod\": \"4\",\n \"proxyId\": \"1\",\n \"ipCheckService\": \"ipapi\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/browser/proxy/update",
"host": [
"{{base_url}}"
],
"path": [
"browser",
"proxy",
"update"
]
},
"description": "Set proxy from Proxy IP Manager for browsers. Replace `proxyId` with a real proxy id."
}
}
]
},
{
"name": "Group",
"item": [
{
"name": "List Groups",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"page\": 1,\n \"pageSize\": 100,\n \"all\": true\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/group/list",
"host": [
"{{base_url}}"
],
"path": [
"group",
"list"
]
},
"description": "List browser groups."
}
},
{
"name": "Add Group",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"groupName\": \"Postman Test Group\",\n \"parentCode\": 0,\n \"sortNum\": 0\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/group/add",
"host": [
"{{base_url}}"
],
"path": [
"group",
"add"
]
},
"description": "Create a browser group."
}
},
{
"name": "Edit Group",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"id\": \"{{group_id}}\",\n \"groupName\": \"Postman Updated Group\",\n \"parentCode\": 0,\n \"sortNum\": 0\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/group/edit",
"host": [
"{{base_url}}"
],
"path": [
"group",
"edit"
]
},
"description": "Edit a browser group."
}
},
{
"name": "Delete Group",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"id\": \"{{group_id}}\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/group/delete",
"host": [
"{{base_url}}"
],
"path": [
"group",
"delete"
]
},
"description": "Delete a browser group."
}
},
{
"name": "Get Group Detail",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"id\": \"{{group_id}}\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/group/detail",
"host": [
"{{base_url}}"
],
"path": [
"group",
"detail"
]
},
"description": "Get browser group detail by group id."
}
}
]
},
{
"name": "Browser Tag",
"item": [
{
"name": "List Tags",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"page\": 1,\n \"pageSize\": 10000,\n \"keyword\": \"\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/browserTag/list",
"host": [
"{{base_url}}"
],
"path": [
"browserTag",
"list"
]
},
"description": "List browser tags."
}
},
{
"name": "Create Tag",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"tagName\": \"Postman Test Tag\",\n \"color\": \"#409EFF\",\n \"sortNum\": 0\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/browserTag/create",
"host": [
"{{base_url}}"
],
"path": [
"browserTag",
"create"
]
},
"description": "Create a browser tag."
}
},
{
"name": "Update Tag",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"id\": \"{{tag_id}}\",\n \"tagName\": \"Postman Updated Tag\",\n \"color\": \"#67C23A\",\n \"sortNum\": 0\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/browserTag/update",
"host": [
"{{base_url}}"
],
"path": [
"browserTag",
"update"
]
},
"description": "Update a browser tag."
}
},
{
"name": "Delete Tag",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"id\": \"{{tag_id}}\"\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/browserTag/delete",
"host": [
"{{base_url}}"
],
"path": [
"browserTag",
"delete"
]
},
"description": "Delete one tag by `id`. Send `ids` to delete multiple tags."
}
},
{
"name": "Update Browser Tag Relation",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Cos-Local-Token",
"value": "{{local_token}}"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"uuid\": \"{{browser_uuid}}\",\n \"addTagIds\": [\"{{tag_id}}\"],\n \"removeTagIds\": []\n}",
"options": {
"raw": {
"language": "json"
}
}
},
"url": {
"raw": "{{base_url}}/browserTag/updateRelation",
"host": [
"{{base_url}}"
],
"path": [
"browserTag",
"updateRelation"
]
},
"description": "Add or remove tag relations for a browser. Use `uuid` or `browserId`."
}
}
]
}
],
"event": [
{
"listen": "test",
"script": {
"type": "text/javascript",
"exec": [
"pm.test('HTTP status is 200', function () {",
" pm.response.to.have.status(200);",
"});",
"",
"let json = {};",
"try {",
" json = pm.response.json();",
"} catch (error) {",
" json = {};",
"}",
"",
"if (json && json.data) {",
" if (json.data.uuid) pm.collectionVariables.set('browser_uuid', json.data.uuid);",
" if (json.data.browserId) pm.collectionVariables.set('browser_uuid', json.data.browserId);",
" if (json.data.config) pm.collectionVariables.set('browser_config', JSON.stringify(json.data.config, null, 2));",
" if (json.data.id && pm.info.requestName.toLowerCase().includes('browser')) pm.collectionVariables.set('browser_id', String(json.data.id));",
" if (json.data.id && pm.info.requestName.toLowerCase().includes('group')) pm.collectionVariables.set('group_id', String(json.data.id));",
" if (json.data.id && pm.info.requestName.toLowerCase().includes('tag')) pm.collectionVariables.set('tag_id', String(json.data.id));",
"}"
]
}
}
]
}