7.7kβ
dsiprouter β OpenClaw Skill
dsiprouter is an OpenClaw Skills integration for coding workflows. Call the dSIPRouter REST API using the Postman collection (curl + jq).
Skill Snapshot
| name | dsiprouter |
| description | Call the dSIPRouter REST API using the Postman collection (curl + jq). OpenClaw Skills integration. |
| owner | mackhendricks |
| repository | mackhendricks/dsiprouter-skill |
| language | Markdown |
| license | MIT |
| topics | |
| security | L1 |
| install | openclaw add @mackhendricks/dsiprouter-skill |
| last updated | Feb 7, 2026 |
Maintainer

name: dsiprouter description: Call the dSIPRouter REST API using the Postman collection (curl + jq). metadata: {"openclaw":{"emoji":"π‘","requires":{"bins":["curl","jq"],"env":["DSIP_ADDR","DSIP_TOKEN"]}}}
dSIPRouter API skill
This skill is generated from the Postman collection and provides:
- a safe
curlcalling convention - a
bin/dsiprouter.shhelper CLI with subcommands for the collectionβs requests - example payloads (where present in Postman)
Required environment
DSIP_ADDRβ hostname/IP of your dSIPRouter node (no scheme)DSIP_TOKENβ API bearer token- Optional:
DSIP_INSECURE=1to allow self-signed TLS (adds-k)
Base URL:
https://$DSIP_ADDR:5000/api/v1
Auth header:
Authorization: Bearer $DSIP_TOKEN
Safe calling convention
dsip_api() {
local method="$1"; shift
local path="$1"; shift
local insecure=()
if [ "${DSIP_INSECURE:-}" = "1" ]; then insecure=(-k); fi
curl "${insecure[@]}" --silent --show-error --fail-with-body \
--connect-timeout 5 --max-time 30 \
-H "Authorization: Bearer ${DSIP_TOKEN}" \
-H "Content-Type: application/json" \
-X "${method}" "https://${DSIP_ADDR}:5000${path}" \
"$@"
}
Preferred usage: the bundled helper CLI
# list subcommands
dsiprouter.sh help
# list endpoint groups
dsiprouter.sh endpointgroups:list | jq .
# create inbound mapping with your own JSON payload
dsiprouter.sh inboundmapping:create '{"did":"13132222223","servers":["#22"],"name":"Taste Pizzabar"}' | jq .
# or send the Postman sample body
dsiprouter.sh inboundmapping:create --sample | jq .
Kamailio
dsiprouter.sh kamailio:stats | jq .
dsiprouter.sh kamailio:reload | jq .
Endpoint catalog (from Postman)
endpointgroups
endpointgroups:listβ GET/api/v1/endpointgroupsendpointgroups:getβ GET/api/v1/endpointgroups/9β Get a single endpointgroupendpointgroups:createβ POST/api/v1/endpointgroupsβ Create an endpointgroupendpointgroups:create_1β POST/api/v1/endpointgroupsβ Create an endpointgroupendpointgroups:create_2β POST/api/v1/endpointgroupsβ Create an endpointgroupendpointgroups:create_3β POST/api/v1/endpointgroupsβ Create an endpointgroupendpointgroups:deleteβ DELETE/api/v1/endpointgroups/53β Delete endpointgroupendpointgroups:updateβ PUT/api/v1/endpointgroups/34β Update an endpointgroup
kamailio
kamailio:reloadβ POST/api/v1/reload/kamailioβ Trigger a reload of Kamailio. This is needed after changes are madekamailio:listβ GET/api/v1/kamailio/statsβ Obtain call statistics
inboundmapping
inboundmapping:listβ GET/api/v1/inboundmappingβ Get a list of inboundmappingsinboundmapping:createβ POST/api/v1/inboundmappingβ Create new inboundmappinginboundmapping:updateβ PUT/api/v1/inboundmapping?did=13132222223β Create new inboundmappinginboundmapping:deleteβ DELETE/api/v1/inboundmapping?did=13132222223β Create new inboundmapping
leases
leases:listβ GET/api/v1/lease/endpoint?email=mack@goflyball.com&ttl=5mβ Get a single endpointgroupleases:list_1β GET/api/v1/lease/endpoint?email=mack@goflyball.com&ttl=1m&type=ip&auth_ip=172.145.24.2β Get a single endpointgroupleases:revokeβ DELETE/api/v1/lease/endpoint/34/revokeβ Get a single endpointgroup
carriergroups
carriergroups:listβ GET/api/v1/carriergroupscarriergroups:createβ POST/api/v1/carriergroups
auth
auth:createβ POST/api/v1/auth/userauth:updateβ PUT/api/v1/auth/user/2auth:deleteβ DELETE/api/v1/auth/user/2auth:listβ GET/api/v1/auth/userauth:loginβ POST/api/v1/auth/login
cdr
cdr:getβ GET/api/v1/cdrs/endpointgroups/17?type=csv&dtfilter=2022-09-14&email=Truecdr:get_1β GET/api/v1/cdrs/endpoint/54
Included files
bin/dsiprouter.sh
dSIPRouter Skill
A powerful Bash-based skill for interacting with the dSIPRouter REST API. Generated from the included Postman collection, this skill provides a convenient CLI and a safe curl-based calling convention.
Are you looking for our MCP Server? It's located here
Installation
Prerequisites
Before installing this skill, ensure you have the following tools available on your system:
- curl β For making HTTP requests
- jq β For JSON processing and formatting
- Bash β Version 4.0 or later
You can verify these are installed:
command -v curl && command -v jq && bash --version
On macOS, install missing tools using Homebrew:
brew install curl jq
On Linux (Ubuntu/Debian):
sudo apt-get install curl jq
Installation Steps
- Clone or copy the repository:
git clone https://github.com/dOpensource/dsiprouter-skill
cd dsiprouter-skill
- Make the CLI executable:
chmod +x bin/dsiprouter.sh
- Add to your PATH (optional but recommended):
# Copy to a directory in your PATH
sudo cp bin/dsiprouter.sh /usr/local/bin/
# Or add the current directory to PATH in your shell profile
export PATH="$PWD/bin:$PATH"
- Configure environment variables:
Set the required environment variables for your dSIPRouter instance:
export DSIP_ADDR="your-dsiprouter-host" # e.g., "192.168.1.100" or "dsip.example.com"
export DSIP_TOKEN="your-api-bearer-token" # Your API token from dSIPRouter
For self-signed certificates, you can also set:
export DSIP_INSECURE=1 # Allows connections to servers with self-signed TLS certificates
To make these permanent, add them to your shell profile (~/.bashrc, ~/.zshrc, etc.).
Quick Start
List Available Commands
dsiprouter.sh help
Basic Usage Examples
List all endpoint groups:
dsiprouter.sh endpointgroups:list | jq .
Get a specific endpoint group:
dsiprouter.sh endpointgroups:get | jq .
Create an inbound mapping:
dsiprouter.sh inboundmapping:create '{"did":"13132222223","servers":["#22"],"name":"My Location"}' | jq .
Check Kamailio statistics:
dsiprouter.sh kamailio:list | jq .
Reload Kamailio after making changes:
dsiprouter.sh kamailio:reload | jq .
Available Skills
This skill provides command groups organized by resource type. Each command follows the pattern:
dsiprouter.sh <resource>:<action> [options]
Endpoint Groups
Manage endpoint groups and SIP endpoints:
endpointgroups:listβ List all endpoint groupsendpointgroups:getβ Get details of a specific endpoint groupendpointgroups:createβ Create a new endpoint groupendpointgroups:updateβ Update an existing endpoint groupendpointgroups:deleteβ Delete an endpoint group
Kamailio Management
Monitor and manage the Kamailio SIP server:
kamailio:listβ Get Kamailio call statisticskamailio:reloadβ Trigger a Kamailio reload (required after configuration changes)
Inbound Mapping
Configure DID (Direct Inward Dialing) to endpoint mapping:
inboundmapping:listβ List all inbound mappingsinboundmapping:createβ Create a new inbound mappinginboundmapping:updateβ Update an existing inbound mappinginboundmapping:deleteβ Delete an inbound mapping
Leases
Manage endpoint leases:
leases:listβ List active endpoint leasesleases:revokeβ Revoke an endpoint lease
Carrier Groups
Manage carrier/trunk configurations:
carriergroups:listβ List all carrier groupscarriergroups:createβ Create a new carrier group
Authentication
User management:
auth:createβ Create a new API user
Safe Calling Convention
This skill implements a safe curl wrapper with the following features:
- Automatic authentication β Includes the Bearer token from
DSIP_TOKEN - Error handling β Shows errors and exits on failure
- Timeout protection β 5-second connection timeout, 30-second max time
- TLS flexibility β Optional insecure mode for self-signed certificates
- Content negotiation β Automatically sets JSON headers
The underlying function:
dsip_api() {
local method="$1"; shift
local path="$1"; shift
local insecure=()
if [ "${DSIP_INSECURE:-}" = "1" ]; then insecure=(-k); fi
curl "${insecure[@]}" --silent --show-error --fail-with-body \
--connect-timeout 5 --max-time 30 \
-H "Authorization: Bearer ${DSIP_TOKEN}" \
-H "Content-Type: application/json" \
-X "${method}" "https://${DSIP_ADDR}:5000${path}" \
"$@"
}
Environment Variables
| Variable | Required | Description |
|---|---|---|
DSIP_ADDR | Yes | Hostname or IP address of your dSIPRouter instance (without scheme) |
DSIP_TOKEN | Yes | Bearer token for API authentication |
DSIP_INSECURE | No | Set to 1 to allow self-signed TLS certificates |
API Base URL
All requests are sent to:
https://$DSIP_ADDR:5000/api/v1
Common Workflows
1. Verify Connection
dsiprouter.sh endpointgroups:list | jq '.count'
2. Create an Endpoint Group
dsiprouter.sh endpointgroups:create '{
"name": "My Endpoints",
"sip_profile_id": 1
}' | jq .
3. Create an Inbound Mapping
dsiprouter.sh inboundmapping:create '{
"did": "13132222223",
"servers": ["#22"],
"name": "Main Office",
"prefix": "",
"strip": 0
}' | jq .
4. Reload Configuration
After making changes, reload Kamailio:
dsiprouter.sh kamailio:reload | jq .
Troubleshooting
Connection timeout:
error: Failed to connect to dSIPRouter
- Verify
DSIP_ADDRis correct and accessible - Check network connectivity:
ping $DSIP_ADDR - Ensure port 5000 is open
Authentication error (401):
error: Unauthorized
- Verify
DSIP_TOKENis correct - Check that your token hasn't expired
SSL/TLS certificate errors:
error: SSL certificate problem
- For self-signed certificates, set
DSIP_INSECURE=1 - Or add your certificate to the system trust store
Command not found:
dsiprouter: command not found
- Verify the script is executable:
chmod +x bin/dsiprouter.sh - Ensure the directory is in your PATH or use the full path:
./bin/dsiprouter
Additional Resources
- See SKILL.md for detailed API documentation
- Check the Postman collection for API examples
- Consult the LICENSE for usage terms
Permissions & Security
Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.
Requirements
- OpenClaw CLI installed and configured.
- Language: Markdown
- License: MIT
- Topics:
FAQ
How do I install dsiprouter?
Run openclaw add @mackhendricks/dsiprouter-skill in your terminal. This installs dsiprouter into your OpenClaw Skills catalog.
Does this skill run locally or in the cloud?
OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.
Where can I verify the source code?
The source repository is available at https://github.com/openclaw/skills/tree/main/skills/mackhendricks/dsiprouter-skill. Review commits and README documentation before installing.
