Developer API & Hooks¶
PNLCS is built to be extended. This page is a starting point for developers;
for the full hook catalog see docs/HOOKS.md
in the repository.
REST API¶
PNLCS exposes a REST API for external integrations, authenticated with an API key.
- Create an API credential: admin panel → Configuration → API Credentials.
- Authenticate: send your key in the request (see the in-app API Documentation page, which lists every endpoint live for your install).
- Coverage: clients, invoices, orders, services, domains, SSL, tickets and system endpoints.
The in-app API docs (admin menu → API Documentation) are generated from your actual routes, so they always match your version.
Hook system¶
PNLCS has a WHMCS-compatible hook system. Register a callback against a named hook point and it runs when that event fires:
add_hook('InvoicePaid', 1, function (array $vars) {
$invoice = $vars['invoice'];
// your logic — notify Slack, sync to accounting, etc.
});
Where hook files live:
| Location | Loaded |
|---|---|
app/Hooks/*.php |
always |
modules/{Gateways,Servers,Registrars,Ssl}/<Name>/hooks.php |
always |
modules/Addons/<Name>/hooks.php |
only when the addon is active |
A throwing hook is logged and skipped — a broken hook can never break billing or provisioning.
Common hook points: InvoicePaid, InvoiceCreated, OrderPlaced,
AcceptOrder, ServiceActivated, ServiceSuspended, ServiceTerminated,
AfterModuleCreate, ModuleActionFailed, TicketOpened, RefundIssued, and
more.
➡️ Full reference: docs/HOOKS.md
Writing a module¶
Server, gateway, registrar and SSL integrations live under modules/ as
self-contained directories, each with a handler class implementing the relevant
interface. Copy an existing module of the same type as a starting point — no
core changes are needed to add one.
Contributing¶
Extensions, fixes and new modules are welcome. See CONTRIBUTING.md.