{
  "info": {
    "_postman_id": "ring2all-sbc-external-api",
    "name": "Ring2All SBC - 🛡️ External API",
    "description": "# Ring2All SBC — Unified External API Collection\n\nOfficial REST API collection for **Ring2All SBC** (Session Border Controller, Kamailio 6.1+, RTPEngine 12.5+, Perimeter Security, LCR Carrier Routing, SIP Tracing, and WebRTC Gateway).\n\n## 🏷️ Canonical Nomenclature\n- **Product**: Ring2All SBC\n- **Linux Package**: `softswitch-sbc` (`softswitch-sbc-api`, `softswitch-sbc-web`)\n\n## 🔐 Authentication\nInclude your Carrier or Administrator API Key in the headers:\n```http\nX-API-Key: {{sbc_api_key}}\n```\n\nOr authenticate via JWT Bearer Token retrieved via `/auth/login`:\n```http\nAuthorization: Bearer {{jwt_token}}\n```",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "apikey",
    "apikey": [
      {
        "key": "key",
        "value": "X-API-Key",
        "type": "string"
      },
      {
        "key": "value",
        "value": "{{sbc_api_key}}",
        "type": "string"
      },
      {
        "key": "in",
        "value": "header",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "sbc_base_url",
      "value": "http://192.168.10.32/api"
    }
  ],
  "item": [
    {
      "name": "🔐 Authentication & Carrier Keys",
      "description": "Administrator JWT login and high-throughput Carrier M2M API Keys (sbc_...) with RFC 2617 support.",
      "item": [
        {
          "name": "Administrator Login",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/auth/login",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "auth",
                "login"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"usernameOrEmail\": \"admin\",\n  \"password\": \"password\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "if (pm.response.code === 200) {",
                  "    try {",
                  "        const res = pm.response.json();",
                  "        const token = res.token || res.data?.token || res.accessToken;",
                  "        if (token) {",
                  "            pm.environment.set(\"jwt_token\", token);",
                  "            console.log(\"Auto-captured SBC jwt_token\");",
                  "        }",
                  "    } catch(e) {}",
                  "}"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Get Current Session & Permissions",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/auth/me",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "auth",
                "me"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "List API Keys",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/api-keys",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "api-keys"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1"
                },
                {
                  "key": "limit",
                  "value": "25"
                }
              ]
            },
            "description": "Retrieve paginated list of api keys.\n\n**Query Options:** `page`, `limit`, `search`"
          }
        },
        {
          "name": "Get API Key by ID",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/api-keys/{{api_key_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "api-keys",
                "{{api_key_id}}"
              ]
            },
            "description": "Retrieve details of a single api key by numeric ID."
          }
        },
        {
          "name": "Create API Key",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/api-keys",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "api-keys"
              ]
            },
            "description": "Create a new api key record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Monitoring NOC Agent Key\",\n  \"role_profile_id\": 1,\n  \"rate_limit_rpm\": 600\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "if (pm.response.code === 200 || pm.response.code === 201) {",
                  "    try {",
                  "        const res = pm.response.json();",
                  "        const newId = res.data?.id || res.id || res.data?.uuid || res.uuid;",
                  "        if (newId) {",
                  "            pm.environment.set(\"api_key_id\", newId);",
                  "            console.log(\"Auto-captured api_key_id: \" + newId);",
                  "        }",
                  "    } catch(e) {}",
                  "}"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Update API Key",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/api-keys/{{api_key_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "api-keys",
                "{{api_key_id}}"
              ]
            },
            "description": "Update an existing api key record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Monitoring NOC Agent Key - Production\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete API Key",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/api-keys/{{api_key_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "api-keys",
                "{{api_key_id}}"
              ]
            },
            "description": "Permanently remove this api key."
          }
        },
        {
          "name": "List Carrier API Keys",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/carrier-api-keys",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "carrier-api-keys"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1"
                },
                {
                  "key": "limit",
                  "value": "25"
                }
              ]
            },
            "description": "Retrieve paginated list of carrier api keys.\n\n**Query Options:** `page`, `limit`, `search`"
          }
        },
        {
          "name": "Get Carrier API Key by ID",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/carrier-api-keys/{{carrier_api_key_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "carrier-api-keys",
                "{{carrier_api_key_id}}"
              ]
            },
            "description": "Retrieve details of a single carrier api key by numeric ID."
          }
        },
        {
          "name": "Create Carrier API Key",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/carrier-api-keys",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "carrier-api-keys"
              ]
            },
            "description": "Create a new carrier api key record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Bandwidth Wholesale M2M\",\n  \"carrier_id\": 1,\n  \"allowed_ips\": [\n    \"67.231.1.0/24\"\n  ],\n  \"rate_limit_rpm\": 1200\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "if (pm.response.code === 200 || pm.response.code === 201) {",
                  "    try {",
                  "        const res = pm.response.json();",
                  "        const newId = res.data?.id || res.id || res.data?.uuid || res.uuid;",
                  "        if (newId) {",
                  "            pm.environment.set(\"carrier_api_key_id\", newId);",
                  "            console.log(\"Auto-captured carrier_api_key_id: \" + newId);",
                  "        }",
                  "    } catch(e) {}",
                  "}"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Update Carrier API Key",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/carrier-api-keys/{{carrier_api_key_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "carrier-api-keys",
                "{{carrier_api_key_id}}"
              ]
            },
            "description": "Update an existing carrier api key record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Bandwidth Wholesale M2M - Updated\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete Carrier API Key",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/carrier-api-keys/{{carrier_api_key_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "carrier-api-keys",
                "{{carrier_api_key_id}}"
              ]
            },
            "description": "Permanently remove this carrier api key."
          }
        }
      ]
    },
    {
      "name": "⚖️ Dispatcher & Load Balancing",
      "description": "Kamailio 6.1+ dispatcher module control, PBX backend clustering, weight balancing, and live health pings.",
      "item": [
        {
          "name": "List Dispatcher Nodes",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/dispatcher",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "dispatcher"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1"
                },
                {
                  "key": "limit",
                  "value": "25"
                }
              ]
            },
            "description": "Retrieve paginated list of dispatcher nodes.\n\n**Query Options:** `page`, `limit`, `search`"
          }
        },
        {
          "name": "Get Dispatcher Node by ID",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/dispatcher/{{dispatcher_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "dispatcher",
                "{{dispatcher_id}}"
              ]
            },
            "description": "Retrieve details of a single dispatcher node by numeric ID."
          }
        },
        {
          "name": "Create Dispatcher Node",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/dispatcher",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "dispatcher"
              ]
            },
            "description": "Create a new dispatcher node record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"setid\": 1,\n  \"destination\": \"sip:192.168.10.31:5060\",\n  \"flags\": 0,\n  \"priority\": 1,\n  \"description\": \"Ring2All PBX Primary Core 01\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "if (pm.response.code === 200 || pm.response.code === 201) {",
                  "    try {",
                  "        const res = pm.response.json();",
                  "        const newId = res.data?.id || res.id || res.data?.uuid || res.uuid;",
                  "        if (newId) {",
                  "            pm.environment.set(\"dispatcher_id\", newId);",
                  "            console.log(\"Auto-captured dispatcher_id: \" + newId);",
                  "        }",
                  "    } catch(e) {}",
                  "}"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Update Dispatcher Node",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/dispatcher/{{dispatcher_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "dispatcher",
                "{{dispatcher_id}}"
              ]
            },
            "description": "Update an existing dispatcher node record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"priority\": 2\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete Dispatcher Node",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/dispatcher/{{dispatcher_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "dispatcher",
                "{{dispatcher_id}}"
              ]
            },
            "description": "Permanently remove this dispatcher node."
          }
        },
        {
          "name": "List Dispatcher Destination Sets",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/dispatcher/sets",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "dispatcher",
                "sets"
              ]
            },
            "description": "Returns aggregated active/probing destinations grouped by setid."
          }
        },
        {
          "name": "Live Dispatcher Probe Status (AP/IP/DX)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/dispatcher/ds-list",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "dispatcher",
                "ds-list"
              ]
            },
            "description": "Direct binrpc/kamcli probe status query for live gateway health."
          }
        }
      ]
    },
    {
      "name": "🛤️ Outbound Routing & LCR",
      "description": "Least Cost Routing (LCR), prefix regex matching, failover trunk groups, and carrier endpoints.",
      "item": [
        {
          "name": "List Outbound Routes",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/outbound-routes",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "outbound-routes"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1"
                },
                {
                  "key": "limit",
                  "value": "25"
                }
              ]
            },
            "description": "Retrieve paginated list of outbound routes.\n\n**Query Options:** `page`, `limit`, `search`"
          }
        },
        {
          "name": "Get Outbound Route by ID",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/outbound-routes/{{outbound_route_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "outbound-routes",
                "{{outbound_route_id}}"
              ]
            },
            "description": "Retrieve details of a single outbound route by numeric ID."
          }
        },
        {
          "name": "Create Outbound Route",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/outbound-routes",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "outbound-routes"
              ]
            },
            "description": "Create a new outbound route record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"North America Wholesale LCR\",\n  \"prefix_pattern\": \"^1[2-9][0-9]{9}$\",\n  \"priority\": 10,\n  \"is_active\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "if (pm.response.code === 200 || pm.response.code === 201) {",
                  "    try {",
                  "        const res = pm.response.json();",
                  "        const newId = res.data?.id || res.id || res.data?.uuid || res.uuid;",
                  "        if (newId) {",
                  "            pm.environment.set(\"outbound_route_id\", newId);",
                  "            console.log(\"Auto-captured outbound_route_id: \" + newId);",
                  "        }",
                  "    } catch(e) {}",
                  "}"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Update Outbound Route",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/outbound-routes/{{outbound_route_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "outbound-routes",
                "{{outbound_route_id}}"
              ]
            },
            "description": "Update an existing outbound route record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"priority\": 5\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete Outbound Route",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/outbound-routes/{{outbound_route_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "outbound-routes",
                "{{outbound_route_id}}"
              ]
            },
            "description": "Permanently remove this outbound route."
          }
        },
        {
          "name": "Get Outbound Route Carrier Options",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/outbound-routes/carrier-options",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "outbound-routes",
                "carrier-options"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Get Outbound Route Options",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/outbound-routes/options",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "outbound-routes",
                "options"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "List Carriers",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/carriers",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "carriers"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1"
                },
                {
                  "key": "limit",
                  "value": "25"
                }
              ]
            },
            "description": "Retrieve paginated list of carriers.\n\n**Query Options:** `page`, `limit`, `search`"
          }
        },
        {
          "name": "Get Carrier by ID",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/carriers/{{carrier_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "carriers",
                "{{carrier_id}}"
              ]
            },
            "description": "Retrieve details of a single carrier by numeric ID."
          }
        },
        {
          "name": "Create Carrier",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/carriers",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "carriers"
              ]
            },
            "description": "Create a new carrier record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Telnyx Outbound SIP\",\n  \"ip_address\": \"sip.telnyx.com\",\n  \"port\": 5060,\n  \"transport\": \"UDP\",\n  \"is_active\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "if (pm.response.code === 200 || pm.response.code === 201) {",
                  "    try {",
                  "        const res = pm.response.json();",
                  "        const newId = res.data?.id || res.id || res.data?.uuid || res.uuid;",
                  "        if (newId) {",
                  "            pm.environment.set(\"carrier_id\", newId);",
                  "            console.log(\"Auto-captured carrier_id: \" + newId);",
                  "        }",
                  "    } catch(e) {}",
                  "}"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Update Carrier",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/carriers/{{carrier_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "carriers",
                "{{carrier_id}}"
              ]
            },
            "description": "Update an existing carrier record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Telnyx Outbound SIP - Primary\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete Carrier",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/carriers/{{carrier_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "carriers",
                "{{carrier_id}}"
              ]
            },
            "description": "Permanently remove this carrier."
          }
        },
        {
          "name": "List Carrier Groups",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/carriers/groups",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "carriers",
                "groups"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1"
                },
                {
                  "key": "limit",
                  "value": "25"
                }
              ]
            },
            "description": "Retrieve paginated list of carrier groups.\n\n**Query Options:** `page`, `limit`, `search`"
          }
        },
        {
          "name": "Get Carrier Group by ID",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/carriers/groups/{{carrier_group_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "carriers",
                "groups",
                "{{carrier_group_id}}"
              ]
            },
            "description": "Retrieve details of a single carrier group by numeric ID."
          }
        },
        {
          "name": "Create Carrier Group",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/carriers/groups",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "carriers",
                "groups"
              ]
            },
            "description": "Create a new carrier group record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"US Tier 1 Carriers\",\n  \"description\": \"Primary wholesale routing group\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "if (pm.response.code === 200 || pm.response.code === 201) {",
                  "    try {",
                  "        const res = pm.response.json();",
                  "        const newId = res.data?.id || res.id || res.data?.uuid || res.uuid;",
                  "        if (newId) {",
                  "            pm.environment.set(\"carrier_group_id\", newId);",
                  "            console.log(\"Auto-captured carrier_group_id: \" + newId);",
                  "        }",
                  "    } catch(e) {}",
                  "}"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Update Carrier Group",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/carriers/groups/{{carrier_group_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "carriers",
                "groups",
                "{{carrier_group_id}}"
              ]
            },
            "description": "Update an existing carrier group record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"description\": \"Updated wholesale routing group\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete Carrier Group",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/carriers/groups/{{carrier_group_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "carriers",
                "groups",
                "{{carrier_group_id}}"
              ]
            },
            "description": "Permanently remove this carrier group."
          }
        },
        {
          "name": "List PBX Endpoints",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/carriers/endpoints",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "carriers",
                "endpoints"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1"
                },
                {
                  "key": "limit",
                  "value": "25"
                }
              ]
            },
            "description": "Retrieve paginated list of pbx endpoints.\n\n**Query Options:** `page`, `limit`, `search`"
          }
        },
        {
          "name": "Get PBX Endpoint by ID",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/carriers/endpoints/{{endpoint_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "carriers",
                "endpoints",
                "{{endpoint_id}}"
              ]
            },
            "description": "Retrieve details of a single pbx endpoint by numeric ID."
          }
        },
        {
          "name": "Create PBX Endpoint",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/carriers/endpoints",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "carriers",
                "endpoints"
              ]
            },
            "description": "Create a new pbx endpoint record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"PBX Dallas Datacenter\",\n  \"ip\": \"192.168.10.31\",\n  \"port\": 5060,\n  \"is_active\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "if (pm.response.code === 200 || pm.response.code === 201) {",
                  "    try {",
                  "        const res = pm.response.json();",
                  "        const newId = res.data?.id || res.id || res.data?.uuid || res.uuid;",
                  "        if (newId) {",
                  "            pm.environment.set(\"endpoint_id\", newId);",
                  "            console.log(\"Auto-captured endpoint_id: \" + newId);",
                  "        }",
                  "    } catch(e) {}",
                  "}"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Update PBX Endpoint",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/carriers/endpoints/{{endpoint_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "carriers",
                "endpoints",
                "{{endpoint_id}}"
              ]
            },
            "description": "Update an existing pbx endpoint record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"port\": 5060\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete PBX Endpoint",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/carriers/endpoints/{{endpoint_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "carriers",
                "endpoints",
                "{{endpoint_id}}"
              ]
            },
            "description": "Permanently remove this pbx endpoint."
          }
        },
        {
          "name": "List Inbound Routes (DID to PBX)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/routing/inbound",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "routing",
                "inbound"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "List Outbound Routing Rules",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/routing/outbound",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "routing",
                "outbound"
              ]
            },
            "description": ""
          }
        }
      ]
    },
    {
      "name": "🏢 SIP Accounts & Domains",
      "description": "Tenant registration endpoints, PBX SIP trunk credentials, and multi-domain isolation.",
      "item": [
        {
          "name": "List SIP Accounts",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/sip-accounts",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "sip-accounts"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1"
                },
                {
                  "key": "limit",
                  "value": "25"
                }
              ]
            },
            "description": "Retrieve paginated list of sip accounts.\n\n**Query Options:** `page`, `limit`, `search`"
          }
        },
        {
          "name": "Get SIP Account by ID",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/sip-accounts/{{sip_account_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "sip-accounts",
                "{{sip_account_id}}"
              ]
            },
            "description": "Retrieve details of a single sip account by numeric ID."
          }
        },
        {
          "name": "Create SIP Account",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/sip-accounts",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "sip-accounts"
              ]
            },
            "description": "Create a new sip account record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"username\": \"pbx-trunk-tenant-01\",\n  \"domain\": \"sbc.ring2all.com\",\n  \"password\": \"SecretPassword123!\",\n  \"is_active\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "if (pm.response.code === 200 || pm.response.code === 201) {",
                  "    try {",
                  "        const res = pm.response.json();",
                  "        const newId = res.data?.id || res.id || res.data?.uuid || res.uuid;",
                  "        if (newId) {",
                  "            pm.environment.set(\"sip_account_id\", newId);",
                  "            console.log(\"Auto-captured sip_account_id: \" + newId);",
                  "        }",
                  "    } catch(e) {}",
                  "}"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Update SIP Account",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/sip-accounts/{{sip_account_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "sip-accounts",
                "{{sip_account_id}}"
              ]
            },
            "description": "Update an existing sip account record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"is_active\": false\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete SIP Account",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/sip-accounts/{{sip_account_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "sip-accounts",
                "{{sip_account_id}}"
              ]
            },
            "description": "Permanently remove this sip account."
          }
        },
        {
          "name": "Get SIP Account Options",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/sip-accounts/options",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "sip-accounts",
                "options"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Suspend SIP Account",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/sip-accounts/{{sip_account_id}}/suspend",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "sip-accounts",
                "{{sip_account_id}}",
                "suspend"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Reactivate SIP Account",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/sip-accounts/{{sip_account_id}}/reactivate",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "sip-accounts",
                "{{sip_account_id}}",
                "reactivate"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Regenerate SIP Password",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/sip-accounts/{{sip_account_id}}/regenerate-password",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "sip-accounts",
                "{{sip_account_id}}",
                "regenerate-password"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "List SIP Domains",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/domains",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "domains"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1"
                },
                {
                  "key": "limit",
                  "value": "25"
                }
              ]
            },
            "description": "Retrieve paginated list of sip domains.\n\n**Query Options:** `page`, `limit`, `search`"
          }
        },
        {
          "name": "Get SIP Domain by ID",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/domains/{{domain_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "domains",
                "{{domain_id}}"
              ]
            },
            "description": "Retrieve details of a single sip domain by numeric ID."
          }
        },
        {
          "name": "Create SIP Domain",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/domains",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "domains"
              ]
            },
            "description": "Create a new sip domain record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"domain\": \"sbc.ring2all.com\",\n  \"description\": \"Primary Core Realm\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "if (pm.response.code === 200 || pm.response.code === 201) {",
                  "    try {",
                  "        const res = pm.response.json();",
                  "        const newId = res.data?.id || res.id || res.data?.uuid || res.uuid;",
                  "        if (newId) {",
                  "            pm.environment.set(\"domain_id\", newId);",
                  "            console.log(\"Auto-captured domain_id: \" + newId);",
                  "        }",
                  "    } catch(e) {}",
                  "}"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Update SIP Domain",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/domains/{{domain_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "domains",
                "{{domain_id}}"
              ]
            },
            "description": "Update an existing sip domain record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"description\": \"Production SIP Realm\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete SIP Domain",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/domains/{{domain_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "domains",
                "{{domain_id}}"
              ]
            },
            "description": "Permanently remove this sip domain."
          }
        },
        {
          "name": "List DIDs",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/dids",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "dids"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1"
                },
                {
                  "key": "limit",
                  "value": "25"
                }
              ]
            },
            "description": "Retrieve paginated list of dids.\n\n**Query Options:** `page`, `limit`, `search`"
          }
        },
        {
          "name": "Get DID by ID",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/dids/{{did_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "dids",
                "{{did_id}}"
              ]
            },
            "description": "Retrieve details of a single did by numeric ID."
          }
        },
        {
          "name": "Create DID",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/dids",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "dids"
              ]
            },
            "description": "Create a new did record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"number\": \"13055551000\",\n  \"carrier_id\": 1,\n  \"is_active\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "if (pm.response.code === 200 || pm.response.code === 201) {",
                  "    try {",
                  "        const res = pm.response.json();",
                  "        const newId = res.data?.id || res.id || res.data?.uuid || res.uuid;",
                  "        if (newId) {",
                  "            pm.environment.set(\"did_id\", newId);",
                  "            console.log(\"Auto-captured did_id: \" + newId);",
                  "        }",
                  "    } catch(e) {}",
                  "}"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Update DID",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/dids/{{did_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "dids",
                "{{did_id}}"
              ]
            },
            "description": "Update an existing did record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"is_active\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete DID",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/dids/{{did_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "dids",
                "{{did_id}}"
              ]
            },
            "description": "Permanently remove this did."
          }
        }
      ]
    },
    {
      "name": "🔍 SIP Tracing & Visual Ladders",
      "description": "Realtime Kamailio sip_trace capture, On-Demand trace triggers, Call-ID search, Call Flow Ladders, and AI Analysis.",
      "item": [
        {
          "name": "Get On-Demand Capture Status",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/sip-trace/capture/status",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "sip-trace",
                "capture",
                "status"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Start On-Demand SIP Capture",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/sip-trace/capture/start",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "sip-trace",
                "capture",
                "start"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"duration_seconds\": 60,\n  \"target_ip\": \"192.168.10.31\",\n  \"account_id\": \"1001\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Stop On-Demand SIP Capture",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/sip-trace/capture/stop",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "sip-trace",
                "capture",
                "stop"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "List Grouped Call Sessions",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/sip-trace/calls",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "sip-trace",
                "calls"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "25"
                },
                {
                  "key": "search",
                  "value": "{{call_id}}"
                }
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Get Chronological Messages (Call Flow Ladder)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/sip-trace/callid/{{call_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "sip-trace",
                "callid",
                "{{call_id}}"
              ]
            },
            "description": "Returns chronological SIP signaling transactions formatted for visual ladder rendering."
          }
        },
        {
          "name": "AI Diagnosis of SIP Flow",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/sip-trace/callid/{{call_id}}/analyze",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "sip-trace",
                "callid",
                "{{call_id}}",
                "analyze"
              ]
            },
            "description": "Invokes NOC Copilot AI to diagnose call drops, codec mismatches, or SIP 4xx/5xx errors.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"ai_profile_id\": 1\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Search Raw SIP Packets",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/sip-trace",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "sip-trace"
              ],
              "query": [
                {
                  "key": "search",
                  "value": "{{call_id}}"
                },
                {
                  "key": "limit",
                  "value": "25"
                }
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Inspect Raw SIP Message & SDP",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/sip-trace/{{trace_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "sip-trace",
                "{{trace_id}}"
              ]
            },
            "description": ""
          }
        }
      ]
    },
    {
      "name": "🎙️ RTPEngine Media Relay & QoS",
      "description": "Kernel-space media proxying, NAT traversal, codec transcoding, MOS score metrics, and jitter telemetry.",
      "item": [
        {
          "name": "List RTPEngine Nodes",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/rtpengine-nodes",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "rtpengine-nodes"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1"
                },
                {
                  "key": "limit",
                  "value": "25"
                }
              ]
            },
            "description": "Retrieve paginated list of rtpengine nodes.\n\n**Query Options:** `page`, `limit`, `search`"
          }
        },
        {
          "name": "Get RTPEngine Node by ID",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/rtpengine-nodes/{{rtpengine_node_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "rtpengine-nodes",
                "{{rtpengine_node_id}}"
              ]
            },
            "description": "Retrieve details of a single rtpengine node by numeric ID."
          }
        },
        {
          "name": "Create RTPEngine Node",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/rtpengine-nodes",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "rtpengine-nodes"
              ]
            },
            "description": "Create a new rtpengine node record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"host\": \"127.0.0.1\",\n  \"port\": 2223,\n  \"weight\": 1,\n  \"is_active\": true\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "if (pm.response.code === 200 || pm.response.code === 201) {",
                  "    try {",
                  "        const res = pm.response.json();",
                  "        const newId = res.data?.id || res.id || res.data?.uuid || res.uuid;",
                  "        if (newId) {",
                  "            pm.environment.set(\"rtpengine_node_id\", newId);",
                  "            console.log(\"Auto-captured rtpengine_node_id: \" + newId);",
                  "        }",
                  "    } catch(e) {}",
                  "}"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Update RTPEngine Node",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/rtpengine-nodes/{{rtpengine_node_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "rtpengine-nodes",
                "{{rtpengine_node_id}}"
              ]
            },
            "description": "Update an existing rtpengine node record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"weight\": 2\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete RTPEngine Node",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/rtpengine-nodes/{{rtpengine_node_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "rtpengine-nodes",
                "{{rtpengine_node_id}}"
              ]
            },
            "description": "Permanently remove this rtpengine node."
          }
        },
        {
          "name": "Ping RTPEngine Sockets",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/rtpengine-nodes/{{rtpengine_node_id}}/ping",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "rtpengine-nodes",
                "{{rtpengine_node_id}}",
                "ping"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Apply RTPEngine Config to Kernel",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/rtpengine-nodes/apply",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "rtpengine-nodes",
                "apply"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Realtime QoS Dashboard (MOS, Jitter, Packet Loss)",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/qos/dashboard",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "qos",
                "dashboard"
              ],
              "query": [
                {
                  "key": "period",
                  "value": "1h"
                }
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Get QoS Alert Policy Thresholds",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/qos/policy",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "qos",
                "policy"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Update QoS Alert Policy Thresholds",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/qos/policy",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "qos",
                "policy"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"min_mos\": 3.5,\n  \"max_jitter_ms\": 30,\n  \"max_packet_loss_percent\": 2.5\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "🛡️ Anti-Flood Pike & IP Firewall",
      "description": "Rate-limiting protection, Pike module threshold control, automated IP bans, and VoIPBL blacklist feeds.",
      "item": [
        {
          "name": "List Banned & Blacklisted IPs",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/firewall/ip-bans",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "firewall",
                "ip-bans"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Manual IP Blacklist",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/firewall/ip-bans",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "firewall",
                "ip-bans"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"ip\": \"203.0.113.50\",\n  \"reason\": \"SIP INVITE brute-force flood attack\",\n  \"expires_in_minutes\": 1440\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Unban IP Address",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/firewall/ip-bans/{{banned_ip}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "firewall",
                "ip-bans",
                "{{banned_ip}}"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Sync Fail2Ban Jails",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/firewall/ip-bans/sync-fail2ban",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "firewall",
                "ip-bans",
                "sync-fail2ban"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Clean Expired IP Bans",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/firewall/ip-bans/expired",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "firewall",
                "ip-bans",
                "expired"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "List Firewall Rules",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/firewall/rules",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "firewall",
                "rules"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1"
                },
                {
                  "key": "limit",
                  "value": "25"
                }
              ]
            },
            "description": "Retrieve paginated list of firewall rules.\n\n**Query Options:** `page`, `limit`, `search`"
          }
        },
        {
          "name": "Get Firewall Rule by ID",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/firewall/rules/{{firewall_rule_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "firewall",
                "rules",
                "{{firewall_rule_id}}"
              ]
            },
            "description": "Retrieve details of a single firewall rule by numeric ID."
          }
        },
        {
          "name": "Create Firewall Rule",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/firewall/rules",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "firewall",
                "rules"
              ]
            },
            "description": "Create a new firewall rule record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"action\": \"ACCEPT\",\n  \"protocol\": \"UDP\",\n  \"port\": \"5060\",\n  \"cidr\": \"192.168.10.0/24\",\n  \"comment\": \"PBX Mesh\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "if (pm.response.code === 200 || pm.response.code === 201) {",
                  "    try {",
                  "        const res = pm.response.json();",
                  "        const newId = res.data?.id || res.id || res.data?.uuid || res.uuid;",
                  "        if (newId) {",
                  "            pm.environment.set(\"firewall_rule_id\", newId);",
                  "            console.log(\"Auto-captured firewall_rule_id: \" + newId);",
                  "        }",
                  "    } catch(e) {}",
                  "}"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Update Firewall Rule",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/firewall/rules/{{firewall_rule_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "firewall",
                "rules",
                "{{firewall_rule_id}}"
              ]
            },
            "description": "Update an existing firewall rule record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"comment\": \"Core PBX Cluster\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete Firewall Rule",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/firewall/rules/{{firewall_rule_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "firewall",
                "rules",
                "{{firewall_rule_id}}"
              ]
            },
            "description": "Permanently remove this firewall rule."
          }
        },
        {
          "name": "List Geo Firewall Rules",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/firewall/geo",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "firewall",
                "geo"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1"
                },
                {
                  "key": "limit",
                  "value": "25"
                }
              ]
            },
            "description": "Retrieve paginated list of geo firewall rules.\n\n**Query Options:** `page`, `limit`, `search`"
          }
        },
        {
          "name": "Get Geo Firewall Rule by ID",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/firewall/geo/{{geo_rule_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "firewall",
                "geo",
                "{{geo_rule_id}}"
              ]
            },
            "description": "Retrieve details of a single geo firewall rule by numeric ID."
          }
        },
        {
          "name": "Create Geo Firewall Rule",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/firewall/geo",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "firewall",
                "geo"
              ]
            },
            "description": "Create a new geo firewall rule record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"country_code\": \"US\",\n  \"action\": \"ALLOW\",\n  \"comment\": \"North America Only\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "event": [
            {
              "listen": "test",
              "script": {
                "exec": [
                  "if (pm.response.code === 200 || pm.response.code === 201) {",
                  "    try {",
                  "        const res = pm.response.json();",
                  "        const newId = res.data?.id || res.id || res.data?.uuid || res.uuid;",
                  "        if (newId) {",
                  "            pm.environment.set(\"geo_rule_id\", newId);",
                  "            console.log(\"Auto-captured geo_rule_id: \" + newId);",
                  "        }",
                  "    } catch(e) {}",
                  "}"
                ],
                "type": "text/javascript"
              }
            }
          ]
        },
        {
          "name": "Update Geo Firewall Rule",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/firewall/geo/{{geo_rule_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "firewall",
                "geo",
                "{{geo_rule_id}}"
              ]
            },
            "description": "Update an existing geo firewall rule record.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"comment\": \"US & Canada Allowed\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Delete Geo Firewall Rule",
          "request": {
            "method": "DELETE",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/firewall/geo/{{geo_rule_id}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "firewall",
                "geo",
                "{{geo_rule_id}}"
              ]
            },
            "description": "Permanently remove this geo firewall rule."
          }
        },
        {
          "name": "Apply Firewall Rules to Linux Kernel",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/firewall/apply",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "firewall",
                "apply"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Sync VoIPBL Global Threat Intelligence",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/voipbl/sync",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "voipbl",
                "sync"
              ]
            },
            "description": "Fetch latest malicious SIP scanning IP feeds from VoIPBL."
          }
        }
      ]
    },
    {
      "name": "🤖 AI Perimeter Guard",
      "description": "Autonomous AI security monitoring, real-time threat scoring, anomaly detection, and automated mitigation.",
      "item": [
        {
          "name": "AI Perimeter Realtime Overview",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/ai-perimeter-guard/overview",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "ai-perimeter-guard",
                "overview"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "List Security Incidents & Threat Events",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/ai-perimeter-guard/events",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "ai-perimeter-guard",
                "events"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "25"
                }
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Forensic Threat Analysis for IP",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/ai-perimeter-guard/analyze/{{banned_ip}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "ai-perimeter-guard",
                "analyze",
                "{{banned_ip}}"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Mitigate & Ban Threat IP",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/ai-perimeter-guard/mitigate/ban",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "ai-perimeter-guard",
                "mitigate",
                "ban"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"ip\": \"198.51.100.22\",\n  \"reason\": \"Abnormal flood pattern detected by AI model\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Unban Mitigated IP",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/ai-perimeter-guard/mitigate/unban/{{banned_ip}}",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "ai-perimeter-guard",
                "mitigate",
                "unban",
                "{{banned_ip}}"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "AI Perimeter Guard Settings",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/ai-perimeter-guard/settings",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "ai-perimeter-guard",
                "settings"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Update AI Guard Sensitivity",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/ai-perimeter-guard/settings",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "ai-perimeter-guard",
                "settings"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"enabled\": true,\n  \"sensitivity\": \"high\",\n  \"auto_ban_threshold\": 85\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "List Whitelisted Subnets",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/ai-perimeter-guard/whitelist",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "ai-perimeter-guard",
                "whitelist"
              ]
            },
            "description": ""
          }
        }
      ]
    },
    {
      "name": "🔒 STIR/SHAKEN Compliance",
      "description": "RFC 8588 caller ID authentication, STI-AS token signing, STI-VS verification logs, and X.509 certs.",
      "item": [
        {
          "name": "STIR/SHAKEN Service Status & Metrics",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/stirshaken/status",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "stirshaken",
                "status"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Get STIR/SHAKEN Configuration",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/stirshaken/config",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "stirshaken",
                "config"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Update STIR/SHAKEN Configuration",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/stirshaken/config",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "stirshaken",
                "config"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"enabled\": true,\n  \"signing_enabled\": true,\n  \"default_attestation\": \"A\",\n  \"verify_enabled\": true,\n  \"connect_timeout_s\": 3\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Recent Attestation & Verification Logs",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/stirshaken/logs",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "stirshaken",
                "logs"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "25"
                }
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Inspect Auto-Generated Kamailio Config Block",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/stirshaken/kamailio-config",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "stirshaken",
                "kamailio-config"
              ]
            },
            "description": ""
          }
        }
      ]
    },
    {
      "name": "🌐 WebRTC Gateway & Topology",
      "description": "WSS SIP signaling relay, DTLS-SRTP key exchange, ICE/STUN/TURN configuration, and media topology.",
      "item": [
        {
          "name": "Get WebRTC Listener & TURN Config",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/webrtc",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "webrtc"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Update WebRTC & TURN Credentials",
          "request": {
            "method": "PUT",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/webrtc",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "webrtc"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"ws_enabled\": true,\n  \"wss_enabled\": true,\n  \"ws_port\": 8080,\n  \"wss_port\": 4443,\n  \"cors_origins\": \"*\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Active Dialogs & Topology Overview",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/topology",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "topology"
              ],
              "query": [
                {
                  "key": "limit",
                  "value": "25"
                }
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Dialog States & Topology Stats",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/topology/stats",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "topology",
                "stats"
              ]
            },
            "description": ""
          }
        }
      ]
    },
    {
      "name": "🛠️ Kamailio RPC & System Maintenance",
      "description": "Safe perimeter management via kamcmd binrpc, cache clearing, and system service health.",
      "item": [
        {
          "name": "SBC System Health & Daemon Status",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/system/status",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "system",
                "status"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Kamailio Uptime & Memory Statistics",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/rpc/uptime",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "rpc",
                "uptime"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Catalog of Safe Kamailio binrpc Commands",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/rpc/suggestions",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "rpc",
                "suggestions"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Execute Safe Kamailio RPC Command",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{sbc_base_url}}/rpc/exec",
              "host": [
                "{{sbc_base_url}}"
              ],
              "path": [
                "rpc",
                "exec"
              ]
            },
            "description": "Executes approved binrpc command on local Kamailio instance.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"command\": \"stats.get_statistics\",\n  \"parameters\": [\n    \"all\"\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    }
  ]
}