Files
smueller 15cf302afc
Some checks failed
CI / Node — lint, typecheck, test, build (push) Failing after 10s
CI / Go — node-agent tests (push) Failing after 8s
CI / Go — edge-gateway build (push) Successful in 18s
Phase F
2026-06-26 15:05:01 +02:00

51 lines
1.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.