# RingLogix NetSapiens CPaaS API Reference

**API base:** `POST https://api.ringlogix.com/pbx/v1/`
**Docs:** https://apidocs.ringlogix.com/
**Support KB:** https://support.ringlogix.com/portal/en/kb/hosted-pbx

## Authentication

OAuth2 password grant:

```
POST https://api.ringlogix.com/pbx/v1/oauth2/token/
grant_type=password&client_id=<id>&client_secret=<secret>&username=<reseller>&password=<pass>
```

**Response:** `access_token`, `expires_in`, `scope` (Basic User / Office Manager / Reseller), `domain`, `refresh_token`.

**Refresh:** Same endpoint with `grant_type=refresh_token&refresh_token=<token>`.

## Key API Endpoints

All endpoints use `POST ?object=<object>&action=<action>` with form-encoded or multipart body.

### Subscriber Management

| Action | Key Params | Response |
|---|---|---|
| `subscriber&action=create` | `domain, user, first_name, last_name, ...` | Subscriber created |
| `subscriber&action=read` | `domain, user, uid, fields` | Full subscriber info (features, presence, voicemail, call limits) |
| `subscriber&action=count` | `domain, territory` | `{ total: Number }` |
| `subscriber&action=list` | `domain, fields` | Public info (name, group, dir) |

### Device Management

| Action | Key Params | Response |
|---|---|---|
| `device&action=create` | `domain, device, user, mac (12 hex), model` | Device created |
| `device&action=read` | `domain, user, device` | `aor, mac, model, server, user_agent, registration_time, auth_key, transport, call_processing_rule, auth_user, auth_pass, sub_fullname` |
| `device&action=count` | `domain, territory, user` | `{ total: String }` |
| `device&action=update` | `device, domain, user, mac, model, check-sync` | Device updated |

### Phone Numbers

| Action | Key Params | Response |
|---|---|---|
| `phonenumber&action=read` | `domain, phonenumber` | DID config, inbound route, caller ID |
| `phonenumber&action=create` | `domain, phonenumber, user` | Adds DID to a user |

### Call Queues

| Action | Key Params | Response |
|---|---|---|
| `callqueue&action=read` | `domain, queue` | Queue config, agent list, routing rules |
| `agent&action=create` | `domain, queue, device` | Adds agent to queue |
| `agent&action=count` | `domain, queue` | Agent count |

### Auto Attendants

| Action | Key Params | Response |
|---|---|---|
| `autoattendant&action=read` | `domain, name` | Menu structure, greetings, key mappings |

### Messaging (SMS/MMS)

| Action | Key Params | Response |
|---|---|---|
| `message&action=create` | `domain, user, type (sms/mms), from_num, destination, message, file` | Message sent |
| `message&action=read` | `domain, user, session_id, start, limit` | Message history |

### Call Records (CDR)

| Action | Key Params |
|---|---|
| `cdr&action=read` | `domain, user, start_timestamp, end_timestamp, limit` |

## PBX Feature Catalog

Features that can be enabled per extension/subscriber or per domain:

**Call management:** Call Forwarding (Always/Busy/No Answer/Not Reachable/Find Me Follow Me), Call Transfer (Attended/Blind/Intercom), Call Parking (Dynamic/Static), Call Pickup (Any User/Department/Entire PBX), Call Waiting, Call Return, Three-Way Calling, Do Not Disturb

**Recording & Monitoring:** Always recording, Manual, Via Device, Via Portal; Barge, Listen, Whisper

**Caller ID:** Inbound & Outbound with Name; Anonymous Call Rejection, Selective Call Rejection, Whitelist, Blacklist

**Voicemail:** Copy to extensions, Email notification (with/without attachment), Operator breakout, Web/Mobile/Web App view, Transcription (VoiceBase)

**Device:** BLF on device/mobile/web, Presence, MWI, Auto Provisioning (multi-vendor), Bulk Import, Remote Reboot

**Attendant Console:** Answer/transfer, Extension presence, Company contacts, Visual park/retrieve, Call queue view

**System:** Auto Attendants (visual designer, record from phone, star codes), Dial by Name, Hunt/Ring Groups, Call Queues (multi-routing, skill-based), Day/Night Mode, Time of Day Routes, CRM Integration (TenFold, NAVA, custom HTTP URL post), Fraud Detection

## Reseller-level vs Customer-level

| Scope | Can see/manage |
|---|---|
| **Reseller** | All domains under your reseller account |
| **Office Manager** | Single domain's subscribers, devices, queues |
| **Basic User** | Own subscriber data only |

For a customer portal, the backend should authenticate as **Reseller** scope, then filter per customer's domain.
