51 lines
1.8 KiB
Markdown
51 lines
1.8 KiB
Markdown
# WHMCS usage billing (Phase F)
|
||
|
||
GameCloud aggregates immutable usage from `usage_records` and exposes WHMCS-compatible metrics.
|
||
|
||
## Metrics
|
||
|
||
| Key | Source |
|
||
|-----|--------|
|
||
| `runtime_minutes` | Sum of metered runtime |
|
||
| `memory_gib_minutes` | RAM × runtime (GiB-minutes) |
|
||
| `cpu_core_minutes` | Runtime × plan CPU cores |
|
||
| `storage_gib_days` | Allocated disk × period days |
|
||
| `backup_storage_gib_days` | Completed backup sizes |
|
||
| `egress_gib` | Reserved (0 until metering) |
|
||
| `extra_port_days` | Reserved (0) |
|
||
| `priority_queue_minutes` | Queue priority weighted runtime |
|
||
| `managed_service_units` | Reserved (0) |
|
||
|
||
## API
|
||
|
||
| Method | Path | Purpose |
|
||
|--------|------|---------|
|
||
| `GET` | `/integrations/whmcs/services/:id/usage` | Period metrics + UsageUpdate values |
|
||
| `POST` | `/integrations/whmcs/services/:id/usage/adjustments` | Post-export corrections |
|
||
|
||
Query parameters:
|
||
|
||
- `periodStart` / `periodEnd` — ISO-8601 UTC (default: current UTC month)
|
||
- `testMode=true` — draft export, no billing event
|
||
|
||
Responses are idempotent per installation, service, period, and test mode. Each export stores a `contentHash` for audit.
|
||
|
||
## Adjustments
|
||
|
||
Corrections never mutate historical raw `usage_records`. Submit metric deltas via the adjustments endpoint; the export status becomes `ADJUSTED`.
|
||
|
||
## PHP module
|
||
|
||
- `hexagamecloud_MetricProvider()` — returns `metrics` for WHMCS usage metrics
|
||
- `hexagamecloud_UsageUpdate()` — returns `diskusage` and `bandwidth` for classic billing
|
||
|
||
Both call `GET .../usage` on GameCloud.
|
||
|
||
## Test mode
|
||
|
||
Set `testMode` in the API query or enable test mode in the product config. Test exports use status `DRAFT` and do not emit `usage_period_closed` events.
|
||
|
||
## Pricing
|
||
|
||
All prices remain in WHMCS. GameCloud only supplies measured quantities.
|