# Service Integration API Reference (IT Pro Partner Portal)

Quick-reference for all external service APIs that the portal integrates with. 
Each entry covers: API base URL, auth method, key endpoints relevant to the portal, and what's needed to connect.

## RingLogix CPaaS

- **API base:** `https://api.ringlogix.com/pbx/v1/`
- **Auth:** OAuth2 (client_id + client_secret)
- **Coverage:** Subscribers, DIDs, devices, auto attendants, call queues, feature plans
- **Skill references:** `sync_ringlogix.py` (sync engine already built), RingLogix API patterns in `references/ringlogix-netsapiens-api.md`
- **Needed:** OAuth client_id, client_secret, reseller username + password

## SyncroMSP

- **API docs:** `https://api-docs.syncromsp.com/` (Swagger, 30+ entities)
- **Auth:** API key from Admin Settings → API → Generate Key
- **Portal uses:** Customers, tickets, assets, invoices, contacts
- **Needed:** Syncro subdomain + API key

## Cloudflare

- **API docs:** `https://developers.cloudflare.com/api/`
- **Auth:** API token (Create in Dashboard → My Profile → API Tokens)
- **Portal uses:** Create zones, DNS records, SSL certificates, account management
- **Needed:** API token with Zone:Edit + DNS:Edit permissions

## RunCloud

- **API docs:** Built-in (nearly all dashboard tasks available via API)
- **Auth:** API key from RunCloud dashboard
- **Portal uses:** Create web apps, manage servers, SSL certificates, databases
- **Needed:** RunCloud API key

## Hetzner Cloud

- **API:** `https://api.hetzner.cloud/v1`
- **Auth:** API token (Read & Write)
- **Portal uses:** Server management (reboot, snapshot, status), provisioning
- **Needed:** Cloud API token (not Robot — Robot is for dedicated servers & auctions)

## Hudu

- **API:** `https://{instance}.hudu.com/api/v1/`
- **Auth:** `X-API-KEY` header or `Authorization: Bearer`
- **Portal uses:** READ only — pull articles, passwords, assets, procedures inline when viewing a customer or device
- **Needed:** Hudu instance URL + API key (generate in Admin → API Keys → View Documentation)
- **Note:** Internal KB only, not customer-facing. No write-back from portal.

## UniFi / Ubiquiti UDM Pro

- **API (official):** `https://developer.ui.com/` — API keys in Settings → API Keys
- **API (controller):** `https://{controller-ip}:443/api/s/default/stat/{health,device,user}`
- **Portal uses:** Device status, interface monitoring, connected clients, network topology, firmware version
- **Needed:** API key + UniFi controller hostname/IP

## Grandstream GDMS

- **API:** GDMS Developer API (apply for access through GDMS portal)
- **Auth:** API key from GDMS Developer access grant
- **Portal uses:** Device provisioning, firmware management, config templates, device status
- **Needed:** GDMS Developer account + API key
- **Caveat:** Reportedly "cryptic" API per community SDK maintainers. Will require hands-on debugging with the actual endpoints from the GDMS account.

## Stripe

- **API:** `https://api.stripe.com/v1/`
- **Auth:** Secret key (sk_live_*)
- **Portal uses:** Customers, subscriptions, payment methods, invoices, webhooks
- **Needed:** Stripe secret key (already used — one account with metadata tags per integration)

## Xero

- **API:** OAuth2
- **Portal uses:** Invoices, contacts, bank transactions, accounting sync
- **Needed:** Xero OAuth2 client_id + client_secret + tenant_id

## Wasabi S3

- **API:** AWS S3-compatible (boto3 / awscli)
- **Endpoint:** `https://s3.{region}.wasabisys.com`
- **Portal uses:** Backup upload, restore, listing, lifecycle management
- **Needed:** IAM access key + secret key (subuser, not root)
- **See:** `references/wasabi-iam-setup.md` for policy template and setup procedure
