REST API
BetaPublic HTTP API for the Campus Dyno quote, catalog, and audit surfaces. The same backend the admin console and quote builder call, so anything you can do in the UI, an external agent can do over the API.
Status
The REST API is in beta with active customer engagements. Endpoints are stable but not all are publicly documented yet. If you need access before the OpenAPI spec is published, reach out and we’ll grant scoped credentials against a sandbox tenant.
Base URL
https://app.campusdyno.io/api/v1 (tenant routing via theX-Tenant header or a tenant-scoped subdomain).
Authentication
Beta uses bearer tokens issued per tenant. GA will support both API keys (machine-to-machine) and OAuth-style agent-on-behalf-of-user tokens that let an external agent act as a specific deal-desk user, inheriting that user’s approval scope.
Resource surfaces
- Quote: create, get, update line items, change discount, request approval, send, mark signed, expire.
- Catalog: list products, get product, list pricing models. Read-only over the API in beta. Tenant admins still create catalog entries in the admin console.
- Approval: query approval state, post approval decisions. Auto-routing rules are tenant-scoped and configured in the admin console. The API surfaces the resulting routing decision per quote.
- Framework agreement: list agreements per customer, attach to a quote.
- Audit log: see Audit log query API.
Determinism
Every pricing call goes through deterministic code (calcNetPrice, computeQuoteTotals, resolveApprovalLevel). Given the same line-item inputs, discount thresholds, and approval state, the same outputs come back every time, including 30 days later from the audit log replay. The LLM never enters this path. That’s the property that makes the API safe for an external agent to act against.
Decimal conventions
Money is decimal(18,4); ratios are decimal(7,6). The API serializes both as strings to avoid IEEE 754 rounding (e.g. "123.4567", not 123.4567).
Rate limits + idempotency
Per-tenant rate limits in beta; per-token rate limits at GA. All write endpoints accept an Idempotency-Key header (the standard Stripe-style pattern), so an agent retrying a quote creation never produces a duplicate.
What’s next
The full OpenAPI 3.1 spec ships at the same time agent-on-behalf-of-user auth (/docs/auth) reaches beta. Until then, talk to us for sandbox access.