Changelog
Notable changes to the Distributor API.
2.0.0 — Organization-centric contract for new distributors
v2 is a new contract on a new base path (/api/distributor/v2), rebuilt
around organizations. It is not a forced upgrade: v1 keeps running
unchanged at /api/distributor/v1 — see
Distributor API v1 — and existing v1 integrations
need no changes. The lists below describe the v1 → v2 contract delta.
Different from v1:
- The partner resource is gone. Organizations are the sole public entity,
distinguished by
type: "msp" | "customer". Customers link to their MSP viaparentOrganizationId. - Customer creation now requires an already
availableexternalLicenseIdowned by the parent MSP; MSP creation requires the purchasedlicenseinline. - License lifecycle is explicit (
available,assigned,disabled). Disabling an assigned license blocks the organization; reassigning or deleting a customer releases the previous license; MSPs can only be deleted after all their customers (409 ORGANIZATION_HAS_CHILDREN).
Added:
- License management:
GET/PATCH /organizations/{organizationId}/licenses(list and upsert MSP-owned licenses) andPATCH /organizations/{organizationId}/license(reassign) — replacing the 1.xPATCH /organizations/{organizationId}/plan. - Hierarchy endpoint
GET /organizations/tree— structure only, no usage data.
Notes:
- Integration remains polling-only; there are still no webhooks.
- The version-explicit v2 documentation path is
/docs/distributor. The v2 machine-readable spec is served at /api/distributor-docs/v2/openapi.yaml; the bare documentation and machine-readable spec paths remain on v1 for compatibility with saved links.