Skip to content

Essence Partner Programme API ​

All OpenAPI documents

Version v1 · OpenAPI 3.0.1 · 106 operations · Download the JSON document

API for the Essence Digital Channel Partner Programme Platform. Manages partner lifecycle, deal registrations, certifications, and commercial operations.

Generated from the PartnerProgramme service's code at build time (api-specs/generated/PartnerProgramme/Essence.Partners.Api.json) and drift-checked in CI. It describes what the code registers, which is not the same as what any one deployment has routed.

AdminPartnerCommercial

POST/api/v1/admin/partners/standing/republish

Re-sends every partner's standing and every active hosting authorisation — run once after the Commercial Manager deploy (Commercial Licence P3, fleet step 3). Safe to re-run: consumers are idempotent by StandingVersion / AuthorisationId.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

GET/api/v1/admin/partners/{id}/commercial

A partner's commercial position: status, type, organisation, payment terms, standing version and every hosting authorisation (active and revoked), newest first. 404 for an unknown partner.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

404Not Found — ProblemDetails
PUT/api/v1/admin/partners/{id}/hosting-authorisations/{sovereignInstanceId}

Authorises an Active managed service provider to host on one sovereign instance. Idempotent for an already-active authorisation. 409 `partner.hosting_not_authorisable` (extension `reason`) when the partner is not an Active, organisation-linked managed service provider — Approved is never enough.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—
sovereignInstanceIdpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

400Bad Request — ProblemDetails
404Not Found — ProblemDetails
409Conflict — ProblemDetails
DELETE/api/v1/admin/partners/{id}/hosting-authorisations/{sovereignInstanceId}

Revokes the provider's active authorisation for the sovereign. 404 when none is active; 400 without a reason. The revoked authorisation is kept as history and never reopened.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—
sovereignInstanceIdpathstring (uuid)yes—
reasonquerystringno—

Request body

No request body.

Responses

204No Content
400Bad Request — ProblemDetails
404Not Found — ProblemDetails
PUT/api/v1/admin/partners/{id}/payment-terms

Sets the partner's payment terms (0..120 days) and publishes its standing.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

400Bad Request — ProblemDetails
404Not Found — ProblemDetails
POST/api/v1/admin/partners/{id}/suspend

Suspends an Active or Remediation partner and publishes its standing: new routed sales to it are refused, its hosted offers close; existing licences keep being invoiced to it.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

400Bad Request — ProblemDetails
404Not Found — ProblemDetails
409Conflict — ProblemDetails

AdminPartners

POST/api/v1/admin/partners/{id}/review

Approves (or rejects) a pending partner application, advancing it to Essence.Partners.Domain.Enums.PartnerStatus.Approved — pending the real agreement e-signature (see class remarks). Platform-admin only.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

200OK — boolean
400Bad Request — ProblemDetails
401Unauthorized — ProblemDetails
403Forbidden — ProblemDetails

AuditLog

GET/api/v1/admin/audit-log

Retrieves paginated audit log entries with filtering options

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdquerystring (uuid)no—
entityTypequerystringno—
entityIdquerystring (uuid)no—
dateFromquerystring (date-time)no—
dateToquerystring (date-time)no—
pagequeryinteger (int32)no—
pageSizequeryinteger (int32)no—

Request body

No request body.

Responses

400Bad Request — ProblemDetails

BusinessReview

POST/api/v1/business-reviews

Schedules a new business review meeting with a partner

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

201Created — unspecified
400Bad Request — ProblemDetails
POST/api/v1/business-reviews/{id}/minutes

Records minutes and action items for a completed business review

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

200OK — unspecified
400Bad Request — ProblemDetails

Certifications

POST/api/v1/certifications/demo-environments

Requests provisioning of a demo environment

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

201Created — unspecified
400Bad Request — ProblemDetails
POST/api/v1/certifications/enrol

Enrols a user in a certification programme

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

201Created — unspecified
400Bad Request — ProblemDetails
GET/api/v1/certifications/expiring

Gets certifications expiring within the specified number of days

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdquerystring (uuid)no—
daysqueryinteger (int32)no—

Request body

No request body.

Responses

GET/api/v1/certifications/summary/{partnerId}

Gets the certification summary for a partner

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yes—

Request body

No request body.

Responses

404Not Found — ProblemDetails
GET/api/v1/certifications/user/{userId}

Gets all certifications for a specific user

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
userIdpathstring (uuid)yes—

Request body

No request body.

Responses

POST/api/v1/certifications/{id}/complete

Completes a certification with a score

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
POST/api/v1/certifications/{id}/progress

Records progress on a certification

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
POST/api/v1/certifications/{id}/renew

Renews a completed or expired certification

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

200OK — unspecified
400Bad Request — ProblemDetails

Commercial

GET/api/v1/commercial/commissions

Retrieves commission summary for a partner with optional filtering by period, status, and type

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
periodFromquerystring (date-time)no—
periodToquerystring (date-time)no—
statusquerystringno—
commissionTypequerystringno—

Request body

No request body.

Responses

400Bad Request — ProblemDetails
POST/api/v1/commercial/commissions/calculate

Calculates and records a commission for a partner deal. Admin only.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

201Created — unspecified
400Bad Request — ProblemDetails
GET/api/v1/commercial/price-list

Returns the price list filtered by the requesting partner's tier. COMPETITION LAW: Only the requesting partner's buy prices are returned. Response always includes the mandatory RRP disclaimer.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

200OK — PriceListDto
400Bad Request — ProblemDetails
POST/api/v1/commercial/quotes

Generates a new partner quote with tier-based pricing. COMPETITION LAW: Quote does NOT restrict partner's sell-out price. Response includes mandatory RRP disclaimer.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

201Created — PartnerQuoteDto
400Bad Request — ProblemDetails
GET/api/v1/commercial/quotes/{id}

Retrieves full details for a specific quote including lines, discount info, and RRP disclaimer

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

200OK — PartnerQuoteDto
404Not Found — ProblemDetails
POST/api/v1/commercial/quotes/{id}/discount

Requests a discount approval on a quote. D1 bands (up to 10%) are auto-approved. D2 routes to COO, D3 routes to CEO.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
POST/api/v1/commercial/quotes/{id}/discount/approve

Approves a pending discount on a quote. Admin only.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
POST/api/v1/commercial/true-up

Processes quarterly true-up reconciliation for a Buy-Sell partner. Admin only.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

200OK — TrueUpResultDto
400Bad Request — ProblemDetails

Compliance

POST/api/v1/compliance/declarations

Submits a compliance declaration for a specific type and the current year

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

201Created — unspecified
400Bad Request — ProblemDetails
POST/api/v1/compliance/insurance

Uploads an insurance certificate for a partner

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

201Created — unspecified
400Bad Request — ProblemDetails
GET/api/v1/compliance/{partnerId}

Retrieves the compliance status for a partner including all declaration types and insurance records

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yes—

Request body

No request body.

Responses

400Bad Request — ProblemDetails

DealRegistrations

GET/api/v1/deal-registrations

Lists deal registrations with pagination and filtering

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdquerystring (uuid)no—
pagequeryinteger (int32)no—
pageSizequeryinteger (int32)no—
statusquerystring[]no—
stagequerystring[]no—
valueMinquerynumber (double)no—
valueMaxquerynumber (double)no—
dateFromquerystring (date-time)no—
dateToquerystring (date-time)no—
searchquerystringno—

Request body

No request body.

Responses

200OK — unspecified
POST/api/v1/deal-registrations

Submits a deal registration for review

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

201Created — DealRegistrationDto
400Bad Request — ProblemDetails
POST/api/v1/deal-registrations/drafts

Creates a draft deal registration (auto-save support)

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

201Created — unspecified
400Bad Request — ProblemDetails
PATCH/api/v1/deal-registrations/drafts/{id}

Auto-saves a draft deal registration (partial updates, no validation)

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
GET/api/v1/deal-registrations/expiring

Retrieves deals with protection periods expiring within the specified number of days

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
daysqueryinteger (int32)no—
partnerIdquerystring (uuid)no—

Request body

No request body.

Responses

GET/api/v1/deal-registrations/funnel

Retrieves deal funnel metrics with counts and values per status

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdquerystring (uuid)no—
dateFromquerystring (date-time)no—
dateToquerystring (date-time)no—

Request body

No request body.

Responses

200OK — DealFunnelDto
GET/api/v1/deal-registrations/{id}

Retrieves full details for a specific deal registration

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

404Not Found — ProblemDetails
POST/api/v1/deal-registrations/{id}/close

Closes a deal registration as won or lost

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
GET/api/v1/deal-registrations/{id}/conflicts

Retrieves conflict information for a deal registration. Admin users see partner names; partner users see conflict existence only.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

404Not Found — ProblemDetails
POST/api/v1/deal-registrations/{id}/extend

Requests a protection period extension for an approved deal

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
POST/api/v1/deal-registrations/{id}/extend/approve

Approves a protection period extension. Admin only.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
POST/api/v1/deal-registrations/{id}/review

Reviews a deal registration (approve, reject, or request more info). Admin only.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
POST/api/v1/deal-registrations/{id}/revoke

Revokes an approved deal registration. Admin only.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
POST/api/v1/deal-registrations/{id}/updates

Submits a monthly progress update for an approved deal

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

200OK — unspecified
400Bad Request — ProblemDetails

Forecast

POST/api/v1/forecasts

Submits a quarterly pipeline forecast with individual opportunities

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

201Created — unspecified
400Bad Request — ProblemDetails
GET/api/v1/forecasts/{partnerId}

Retrieves pipeline forecast for a partner and quarter

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yes—
quarterquerystringno—

Request body

No request body.

Responses

404Not Found — ProblemDetails

MarketingAssets

GET/api/v1/marketing-assets

Lists marketing assets filtered by the requesting partner's tier

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
categoryquerystringno—

Request body

No request body.

Responses

POST/api/v1/marketing-assets

Creates a new marketing asset. Admin only.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

201Created — unspecified
400Bad Request — ProblemDetails
GET/api/v1/marketing-assets/{id}

Gets full details for a specific marketing asset

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

404Not Found — ProblemDetails
POST/api/v1/marketing-assets/{id}/download

Tracks a download of a marketing asset

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

200OK — unspecified
404Not Found — ProblemDetails

Notifications

GET/api/v1/portal/notifications

Retrieves paginated notifications for the current user

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
pagequeryinteger (int32)no—
pageSizequeryinteger (int32)no—
unreadOnlyquerybooleanno—

Request body

No request body.

Responses

400Bad Request — ProblemDetails
PATCH/api/v1/portal/notifications/{id}/read

Marks a notification as read

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
404Not Found — ProblemDetails

PartnerApplications

GET/api/v1/partners/applications

Lists partner applications for the review queue, optionally filtered by status. Requires admin scope.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
statusqueryPartnerStatusnoOptional status filter

Request body

No request body.

Responses

200Applications returned — PartnerApplicationSummaryDto[]
POST/api/v1/partners/applications

Submits a new partner application to the Essence Partner Programme

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

201Application submitted successfully — unspecified
400Validation errors in the request — ProblemDetails
409A partner with the same registered number already exists
GET/api/v1/partners/applications/notifications

Retrieves programme notifications addressed to the Essence partner-review team. Requires admin scope.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
unreadOnlyquerybooleannoWhen true, returns only unread notifications

Request body

No request body.

Responses

200Notifications returned — ProgrammeNotificationDto[]
PATCH/api/v1/partners/applications/notifications/{notificationId}/read

Marks a programme notification as read. Requires admin scope.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
notificationIdpathstring (uuid)yesThe notification ID

Request body

No request body.

Responses

200Notification marked as read — unspecified
404Notification not found — ProblemDetails
GET/api/v1/partners/applications/pending-count

Returns pending application counts for the review console dashboard. Requires admin scope.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

200Counts returned — PendingApplicationCountsDto
GET/api/v1/partners/applications/{id}

Retrieves full detail for a single partner application. Requires admin scope.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yesThe partner ID

Request body

No request body.

Responses

200Application detail returned — PartnerApplicationDetailDto
404Partner not found — ProblemDetails
POST/api/v1/partners/applications/{id}/agreement

Initiates the e-signature process for a partner agreement via Signable. Requires admin scope.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yesThe partner ID

Request body

No request body.

Responses

200Agreement envelope created — unspecified
400Invalid state or Signable API error — ProblemDetails
404Partner not found
POST/api/v1/partners/applications/{id}/agreement/resend

Clears a failed agreement envelope and sends a fresh one. Requires admin scope.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yesThe partner ID

Request body

No request body.

Responses

200Agreement resent — unspecified
400Invalid state or Signable API error — ProblemDetails
404Partner not found — ProblemDetails
POST/api/v1/partners/applications/{id}/countersign

Essence countersigns a partner-signed agreement, executing it and starting onboarding. Requires admin scope.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yesThe partner ID

Request body

No request body.

Responses

200Agreement countersigned — unspecified
400Invalid state — ProblemDetails
404Partner not found — ProblemDetails
POST/api/v1/partners/applications/{id}/review

Reviews a partner application (approve or reject). Requires admin scope.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yesThe partner ID to review

Request body

Not marked as required in the document.

Responses

200Application reviewed successfully — unspecified
400Validation errors or invalid state — ProblemDetails
404Partner not found — ProblemDetails
POST/api/v1/partners/applications/{id}/start-review

Moves an application from ApplicationSubmitted to UnderReview, attributing the reviewer. Requires admin scope.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yesThe partner ID

Request body

No request body.

Responses

200Review started — unspecified
400Invalid state — ProblemDetails
404Partner not found — ProblemDetails

PartnerCustomers

GET/api/v1/partner-customers

Lists partner customers with pagination

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdquerystring (uuid)no—
pagequeryinteger (int32)no—
pageSizequeryinteger (int32)no—
statusquerystringno—
searchquerystringno—

Request body

No request body.

Responses

200OK — unspecified
GET/api/v1/partner-customers/{id}

Gets full details for a specific partner customer

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

404Not Found — ProblemDetails
GET/api/v1/partner-customers/{id}/revenue

Gets the revenue attribution trail for a partner customer

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

404Not Found — ProblemDetails

PartnerOnboarding

GET/api/v1/partners/{partnerId}/onboarding

Retrieves onboarding progress for a partner including milestone completion status

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yesThe partner ID

Request body

No request body.

Responses

404Not Found — ProblemDetails
POST/api/v1/partners/{partnerId}/onboarding/milestones

Marks an onboarding milestone as completed

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yesThe partner ID

Request body

Not marked as required in the document.

Responses

200OK — unspecified
400Bad Request — ProblemDetails

PartnerOrders

GET/api/v1/partner-orders

Lists partner orders with pagination and filtering

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdquerystring (uuid)no—
pagequeryinteger (int32)no—
pageSizequeryinteger (int32)no—
statusquerystring[]no—
searchquerystringno—

Request body

No request body.

Responses

200OK — unspecified
POST/api/v1/partner-orders

Creates a new partner order in Draft status

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

201Created — unspecified
400Bad Request — ProblemDetails
GET/api/v1/partner-orders/{id}

Gets full details for a specific partner order

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

200OK — PartnerOrderDto
404Not Found — ProblemDetails
POST/api/v1/partner-orders/{id}/approve

Approves a submitted order. Admin only.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
POST/api/v1/partner-orders/{id}/cancel

Cancels a partner order, cleaning up billing and provisioning

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
POST/api/v1/partner-orders/{id}/provision

Provisions the customer instance for an approved order

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
GET/api/v1/partner-orders/{id}/provisioning-status

Gets real-time provisioning progress for an order

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

404Not Found — ProblemDetails
POST/api/v1/partner-orders/{id}/setup-billing

Sets up billing for an approved order

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
POST/api/v1/partner-orders/{id}/submit

Submits a draft order for approval

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

200OK — unspecified
400Bad Request — ProblemDetails

PartnerRegistry

GET/api/v1/partner-registry/accreditation

Resolves a referral code to the partner's accreditation.

Service-to-service. Everything returned is server-held: the caller supplies only the code, and cannot influence the tier or status that comes back — which is the entire point. A referral code is an identifier, not a credential: it names a partner, it does not authorise anyone. So this deliberately returns 404 for an unknown code rather than pretending, and exposes nothing an attacker could not learn from the partner's own website.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
referralCodequerystringno—
partnerIdquerystring (uuid)no—

Request body

No request body.

Responses

200The partner's accreditation. — PartnerAccreditationDto
404No partner holds that code. — ProblemDetails

Partners

GET/api/v1/partners

Lists all partners with optional filtering and pagination

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
pagequeryinteger (int32)noPage number (default: 1)
pageSizequeryinteger (int32)noItems per page (default: 20, max: 100)
statusquerystringnoFilter by partner status
tierquerystringnoFilter by partner tier
typequerystringnoFilter by partner type
searchquerystringnoSearch by name or registered number

Request body

No request body.

Responses

200OK — unspecified
GET/api/v1/partners/me

Retrieves the current authenticated user's own partner profile (by applicant user id). Used by the portal BFF to compose the signed-in user view.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

404Not Found — ProblemDetails
GET/api/v1/partners/{id}

Retrieves full details for a specific partner

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yesThe partner ID

Request body

No request body.

Responses

404Not Found — ProblemDetails
PATCH/api/v1/partners/{id}

Updates editable partner details

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yesThe partner ID

Request body

Not marked as required in the document.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
404Not Found — ProblemDetails
GET/api/v1/partners/{id}/dashboard

Retrieves the partner dashboard with aggregated metrics

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yesThe partner ID

Request body

No request body.

Responses

404Not Found — ProblemDetails
POST/api/v1/partners/{id}/terminate

Initiates the termination of a partnership. Requires admin scope.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yesThe partner ID

Request body

Not marked as required in the document.

Responses

200OK — unspecified
400Bad Request — ProblemDetails

ProgrammeTiers

GET/api/v1/partners/programme/tiers

The five rungs, their thresholds, each rung's resale margin by SKU family and referral fee, and the cross-walk to the builder, specialism and framework ladders — read from `docs/commercial/catalogue/partner-tiers.json`.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

200The ladder. — ProgrammeTiersDto

Reporting

GET/api/v1/reporting/csat-trend/{partnerId}

Retrieves CSAT score trend by month for a partner

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yes—

Request body

No request body.

Responses

200OK — CsatTrendDto
400Bad Request — ProblemDetails
GET/api/v1/reporting/funnel

Retrieves advanced deal funnel analytics with conversion rates between stages

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdquerystring (uuid)no—
dateFromquerystring (date-time)no—
dateToquerystring (date-time)no—

Request body

No request body.

Responses

400Bad Request — ProblemDetails
GET/api/v1/reporting/revenue-trend/{partnerId}

Retrieves revenue trend by quarter for a partner

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yes—

Request body

No request body.

Responses

200OK — RevenueTrendDto
400Bad Request — ProblemDetails
GET/api/v1/reporting/revenue/{partnerId}

Retrieves revenue attribution breakdown for a partner by model, product, and quarter

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yes—
dateFromquerystring (date-time)no—
dateToquerystring (date-time)no—

Request body

No request body.

Responses

400Bad Request — ProblemDetails
GET/api/v1/reporting/scorecard/{partnerId}

Retrieves a comprehensive scorecard for a partner with all key performance metrics

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yes—
dateFromquerystring (date-time)no—
dateToquerystring (date-time)no—

Request body

No request body.

Responses

400Bad Request — ProblemDetails
404Not Found — ProblemDetails

ServiceProviders

GET/api/v1/partners/service-providers

The approved hosting providers in region (e.g. `GB`).

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
regionquerystringno—

Request body

No request body.

Responses

400Bad Request — ProblemDetails

SignableWebhooks

POST/api/v1/webhooks/signable

Receives and processes Signable webhook events for partner agreement e-signatures. Validates the HMAC-SHA256 webhook signature before processing.

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

No request body.

Responses

200Webhook processed successfully — unspecified
400Invalid webhook signature or payload — ProblemDetails

SupportTickets

GET/api/v1/support-tickets

Lists support tickets with pagination and filtering

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdquerystring (uuid)no—
pagequeryinteger (int32)no—
pageSizequeryinteger (int32)no—
severityquerystring[]no—
statusquerystring[]no—
dateFromquerystring (date-time)no—
dateToquerystring (date-time)no—

Request body

No request body.

Responses

200OK — unspecified
POST/api/v1/support-tickets

Creates a new support ticket

Authentication:Bearer (the document-wide requirement)

Parameters

Takes no parameters.

Request body

Not marked as required in the document.

Responses

201Created — SupportTicketDto
400Bad Request — ProblemDetails
GET/api/v1/support-tickets/performance/{partnerId}

Gets support performance metrics for a partner

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
partnerIdpathstring (uuid)yes—
dateFromquerystring (date-time)no—
dateToquerystring (date-time)no—

Request body

No request body.

Responses

GET/api/v1/support-tickets/{id}

Gets full details for a specific support ticket

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

404Not Found — ProblemDetails
POST/api/v1/support-tickets/{id}/close

Closes a support ticket

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
POST/api/v1/support-tickets/{id}/csat

Submits a CSAT survey for a ticket

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
POST/api/v1/support-tickets/{id}/escalate

Escalates a support ticket to L2 or L3

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
POST/api/v1/support-tickets/{id}/resolve

Resolves a support ticket

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
POST/api/v1/support-tickets/{id}/status

Updates the status of a support ticket

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
POST/api/v1/support-tickets/{id}/updates

Adds an update or comment to a support ticket

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

200OK — unspecified
400Bad Request — ProblemDetails

TierManagement

GET/api/v1/partners/{id}/tier-history

Retrieves the tier change history for a partner

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

404Not Found — ProblemDetails
GET/api/v1/partners/{id}/tier-qualification

Retrieves the tier qualification status for a partner, including current metrics vs requirements

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

404Not Found — ProblemDetails
POST/api/v1/partners/{id}/tier/adjust

Admin adjusts a partner's tier (up or down). Demotions require 30-day written notice.

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
POST/api/v1/partners/{id}/tier/advance

Partner requests advancement to the next tier when criteria are met

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

No request body.

Responses

200OK — unspecified
400Bad Request — ProblemDetails
POST/api/v1/partners/{id}/tier/remediation

Admin initiates a 90-day remediation period for a partner not meeting tier criteria

Authentication:Bearer (the document-wide requirement)

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)yes—

Request body

Not marked as required in the document.

Responses

200OK — unspecified
400Bad Request — ProblemDetails

Schemas

ActionItemInputDto

Input for a single action item from a business review

PropertyTypeRequiredDescription
assignedTostring | nullno—
descriptionstring | nullno—
dueDatestring (date-time)no—

AddTicketUpdateRequestDto

Request DTO for adding an update/comment to a support ticket

PropertyTypeRequiredDescription
isInternalbooleanno—
notesstring | nullno—

AdjustTierRequest

Request body for tier adjustment

PropertyTypeRequiredDescription
newTierstring | nullno—
reasonstring | nullno—

AdminAuthoriseHostingRequest

Request body for M:Essence.Partners.Api.Controllers.AdminPartnerCommercialController.AuthoriseHosting(System.Guid,System.Guid,Essence.Partners.Api.Controllers.AdminAuthoriseHostingRequest,System.Threading.CancellationToken).

PropertyTypeRequiredDescription
agreementRefstring | nullnoThe hosting agreement reference.
regionstring | nullnoThe sovereign's region code, e.g. `GB`.

AdminReviewPartnerRequest

Request body for M:Essence.Partners.Api.Controllers.AdminPartnersController.ReviewPartner(System.Guid,Essence.Partners.Api.Controllers.AdminReviewPartnerRequest,System.Threading.CancellationToken).

PropertyTypeRequiredDescription
agreementVersionstring | nullno—
notesstring | nullno—
outcomestring | nullno"Approved" or "Rejected".
rejectionReasonstring | nullno—

AdminSetPaymentTermsRequest

Request body for M:Essence.Partners.Api.Controllers.AdminPartnerCommercialController.SetPaymentTerms(System.Guid,Essence.Partners.Api.Controllers.AdminSetPaymentTermsRequest,System.Threading.CancellationToken).

PropertyTypeRequiredDescription
daysinteger (int32)noPayment terms in days, 0..120.

AdminSuspendPartnerRequest

Request body for M:Essence.Partners.Api.Controllers.AdminPartnerCommercialController.SuspendPartner(System.Guid,Essence.Partners.Api.Controllers.AdminSuspendPartnerRequest,System.Threading.CancellationToken).

PropertyTypeRequiredDescription
reasonstring | nullnoWhy the partner is suspended.

ApproveOrderRequestDto

Request DTO for approving an order

PropertyTypeRequiredDescription
approvedBystring | nullnoWho is approving the order

AuditLogEntryDto

DTO for a single audit log entry

PropertyTypeRequiredDescription
actionstring | nullno—
correlationIdstring (uuid) | nullno—
entityIdstring (uuid)no—
entityTypestring | nullno—
idstring (uuid)no—
ipAddressstring | nullno—
newValuestring | nullno—
partnerIdstring (uuid) | nullno—
performedAtstring (date-time)no—
performedBystring | nullno—
previousValuestring | nullno—

AuditLogEntryDtoPagedResult

A paginated result set wrapping a list of items with pagination metadata

PropertyTypeRequiredDescription
hasNextPagebooleannoWhether there is a next page
hasPreviousPagebooleannoWhether there is a previous page
itemsAuditLogEntryDto[] | nullnoThe items in the current page
pageinteger (int32)noThe current page number (1-based)
pageSizeinteger (int32)noThe number of items per page
totalCountinteger (int32)noTotal number of items across all pages
totalPagesinteger (int32)noTotal number of pages

CalculateCommissionRequestDto

Request body for commission calculation

PropertyTypeRequiredDescription
baseAmountnumber (double)no—
commercialModelstring | nullno—
currencystring | nullno—
isFruitOfTreebooleanno—
partnerIdstring (uuid)no—
periodEndstring (date-time)no—
periodStartstring (date-time)no—
registrationIdstring (uuid) | nullno—

CancelOrderRequestDto

Request DTO for cancelling an order

PropertyTypeRequiredDescription
reasonstring | nullnoReason for cancellation

CertificationDto

Basic DTO for certification information

PropertyTypeRequiredDescription
badgeCredentialIdstring | nullnoProvenance handle for the credential. The EPIC 49 seam writes `training-path:{pathId}:{learnerUserId}`; anything else is an external issuance.
certificateUrlstring | nullnoURL of the issued certificate, when one has been produced.
certificationTypestring | nullno—
completedAtstring (date-time) | nullno—
enrolledAtstring (date-time)no—
expiresAtstring (date-time) | nullno—
idstring (uuid)no—
partnerIdstring (uuid)no—
scorenumber (double) | nullnoScore achieved, 0–100; null while the certification is unassessed.
statusstring | nullno—
userIdstring (uuid)no—

CertificationsByTypeDto

Certification count by type

PropertyTypeRequiredDescription
certificationTypestring | nullno—
completedCountinteger (int32)no—
enrolledCountinteger (int32)no—
expiredCountinteger (int32)no—
inProgressCountinteger (int32)no—

CertificationSummaryDto

Certification completion status for the partner

PropertyTypeRequiredDescription
completedinteger (int32)no—
completionPercentagenumber (double)no—
inProgressinteger (int32)no—
requiredinteger (int32)no—
totalCertificationsinteger (int32)no—

CertificationTeamMemberDto

Team member certification status across all types

PropertyTypeRequiredDescription
eaC300Statusstring | nullno—
esC100Statusstring | nullno—
etC200Statusstring | nullno—
namestring | nullno—
userIdstring (uuid)no—

ChannelPartnerDto

Full detail DTO for a channel partner, used on the partner detail view

PropertyTypeRequiredDescription
activatedAtstring (date-time) | nullno—
agreementCurrentTermEndstring (date-time) | nullno—
agreementDocumentUrlstring | nullno—
agreementEffectiveDatestring (date-time) | nullno—
agreementInitialTermYearsinteger (int32) | nullno—
agreementVersionstring | nullno—
countryOfIncorporationstring | nullno—
createdAtstring (date-time)no—
createdBystring | nullno—
currentTierstring | nullno—
idstring (uuid)no—
invoiceCurrencystring | nullno—
legalNamestring | nullno—
nonCircumventionEndDatestring (date-time) | nullno—
noticeAddressCitystring | nullno—
noticeAddressCountrystring | nullno—
noticeAddressCountystring | nullno—
noticeAddressLine1string | nullno—
noticeAddressLine2string | nullno—
noticeAddressPostCodestring | nullno—
onboardingCompletedAtstring (date-time) | nullno—
onboardingStartedAtstring (date-time) | nullno—
partnerTypestring | nullno—
principalContactEmailstring | nullno—
principalContactNamestring | nullno—
principalContactPhonestring | nullno—
registeredAddressCitystring | nullno—
registeredAddressCountrystring | nullno—
registeredAddressCountystring | nullno—
registeredAddressLine1string | nullno—
registeredAddressLine2string | nullno—
registeredAddressPostCodestring | nullno—
registeredNumberstring | nullno—
signableEnvelopeIdstring | nullno—
signableEnvelopeStatusstring | nullno—
signableSignedDocumentUrlstring | nullno—
statusstring | nullno—
terminatedAtstring (date-time) | nullno—
terminationReasonstring | nullno—
territoriesPartnerTerritoryDto[] | nullno—
tierHistoryPartnerTierHistoryDto[] | nullno—
tradingNamestring | nullno—
updatedAtstring (date-time)no—
usersPartnerUserDto[] | nullno—
windDownEndDatestring (date-time) | nullno—

CloseDealRequestDto

Request DTO for closing a deal registration

PropertyTypeRequiredDescription
actualValuenumber (double) | nullnoActual deal value (required when Won)
closeReasonstring | nullnoReason for losing the deal (required when Lost)
commercialModelstring | nullnoCommercial model (required when Won): BuySell, Agency, or Referral
orderReferencestring | nullnoReference to the resulting order (optional when Won)
outcomestring | nullnoOutcome: Won or Lost
valueCurrencystring | nullnoCurrency for the actual value

CommissionRecordDto

Individual commission record

PropertyTypeRequiredDescription
baseAmountnumber (double)no—
commissionAmountnumber (double)no—
commissionRatenumber (double)no—
commissionTypestring | nullno—
createdAtstring (date-time)no—
currencystring | nullno—
customerNamestring | nullno—
idstring (uuid)no—
invoiceReferencestring | nullno—
paymentDatestring (date-time) | nullno—
paymentStatusstring | nullno—
periodEndstring (date-time)no—
periodStartstring (date-time)no—

CommissionSummaryDto

Partner commission summary with aggregates and individual records

PropertyTypeRequiredDescription
commissionsCommissionRecordDto[] | nullno—
currencystring | nullno—
partnerIdstring (uuid)no—
totalEarnednumber (double)no—
totalPaidnumber (double)no—
totalPendingnumber (double)no—

CompleteCertificationRequestDto

Request DTO for completing a certification

PropertyTypeRequiredDescription
certificateUrlstring | nullno—
scorenumber (double)no—

CompleteMilestoneRequest

Request body for completing an onboarding milestone

PropertyTypeRequiredDescription
milestoneNamestring | nullnoThe name of the milestone to complete

ComplianceDeclarationStatusDto

Status of a single declaration type for a partner

PropertyTypeRequiredDescription
declarationIdstring (uuid) | nullno—
declarationTypestring | nullno—
declarationYearinteger (int32) | nullno—
declaredAtstring (date-time) | nullno—
documentUrlstring | nullno—
expiresAtstring (date-time) | nullno—
statusstring | nullno—

ComplianceStatusDto

Overall compliance status for a partner including all declaration types and insurance records

PropertyTypeRequiredDescription
declarationsComplianceDeclarationStatusDto[] | nullno—
expiredCountinteger (int32)no—
insuranceRecordsInsuranceRecordStatusDto[] | nullno—
isFullyCompliantbooleanno—
overdueCountinteger (int32)no—
partnerIdstring (uuid)no—

CreateDraftDealRegistrationRequestDto

Request DTO for creating a draft deal registration (partial fields, auto-save support)

PropertyTypeRequiredDescription
budgetConfirmedstring | nullno—
competingSolutionsstring | nullno—
currentStagestring | nullno—
customerContactEmailstring | nullno—
customerContactNamestring | nullno—
customerContactPhonestring | nullno—
customerContactTitlestring | nullno—
customerCountrystring | nullno—
customerEmployeeCountinteger (int32) | nullno—
customerIndustrystring | nullno—
customerNamestring | nullno—
customerWebsitestring | nullno—
decisionMakersstring | nullno—
engagementDescriptionstring | nullno—
estimatedAnnualValuenumber (double) | nullno—
estimatedTotalValuenumber (double) | nullno—
expectedCloseDatestring (date-time) | nullno—
opportunityTitlestring | nullno—
productsServicesstring[] | nullno—
valueCurrencystring | nullno—

CreateMarketingAssetRequestDto

Request DTO for creating a marketing asset

PropertyTypeRequiredDescription
categorystring | nullno—
descriptionstring | nullno—
fileSizeBytesinteger (int64)no—
fileTypestring | nullno—
fileUrlstring | nullno—
languagestring | nullno—
minTierstring | nullno—
titlestring | nullno—
verticalstring | nullno—

CreatePartnerOrderRequestDto

Request DTO for creating a partner order

PropertyTypeRequiredDescription
commercialModelstring | nullnoCommercial model: BuySell, Agency, or Referral
companyRegistrationNumberstring | nullnoThe customer's company registration number. REQUIRED for provisioning (D3) — every third-party-created organisation is floored at Enhanced KYB, which cannot run without one.
contactEmailstring | nullnoThe customer administrator's email. REQUIRED for provisioning: it is where the PLATFORM sends the invitation to claim the organisation. The partner never handles the token — it is a bearer secret for permanent control of the customer's keys.
countrystring | nullnoThe customer's jurisdiction (ISO country) — selects the KYB provider.
customerDomainstring | nullnoCustomer's primary domain name
customerNamestring | nullnoCustomer's legal or trading name
dealRegistrationIdstring (uuid) | nullnoOptional deal registration ID linking this order
industrystring | nullnoThe customer's industry — feeds the KYB level policy.
linesOrderLineRequestDto[] | nullnoLine items in the order

CreateSupportTicketRequestDto

Request DTO for creating a support ticket

PropertyTypeRequiredDescription
customerNamestring | nullno—
descriptionstring | nullno—
partnerIdstring (uuid)no—
raisedBystring (uuid)no—
severitystring | nullno—
stepsToReproducestring | nullno—
titlestring | nullno—

CsatSurveyRequestDto

Request DTO for submitting a CSAT survey

PropertyTypeRequiredDescription
commentstring | nullno—
scoreinteger (int32)no—

CsatTrendDto

DTO for CSAT trend data by month

PropertyTypeRequiredDescription
monthsMonthlyCsatDto[] | nullno—
partnerIdstring (uuid)no—

CsatTrendPointDto

A single CSAT trend data point

PropertyTypeRequiredDescription
averageScorenumber (double)no—
periodstring | nullno—
responseCountinteger (int32)no—

DealConflictDto

DTO for deal conflict information. CRITICAL: PartnerName must only be populated for Essence admin users, never for partner users.

PropertyTypeRequiredDescription
conflictingRegistrationIdstring (uuid)no—
customerNamestring | nullno—
matchScorenumber (double)no—
matchTypestring | nullno—
partnerNamestring | nullnoName of the competing partner. ONLY populated for Essence admin users. Must be null/omitted for partner users (competition law compliance).
referenceNumberstring | nullno—

DealFunnelAnalyticsDto

Advanced deal funnel analytics with conversion rates between stages

PropertyTypeRequiredDescription
averageDaysToClosenumber (double) | nullno—
averageDealValuenumber (double)no—
dateFromstring (date-time)no—
dateTostring (date-time)no—
overallConversionRatenumber (double) | nullno—
partnerIdstring (uuid) | nullno—
stagesFunnelStageDto[] | nullno—
totalDealsinteger (int32)no—
totalValuenumber (double)no—

DealFunnelDto

DTO representing the deal registration funnel with counts and values per stage

PropertyTypeRequiredDescription
approvedCountinteger (int32)no—
approvedValuenumber (double)no—
closedLostCountinteger (int32)no—
closedLostValuenumber (double)no—
closedWonCountinteger (int32)no—
closedWonValuenumber (double)no—
conversionRatenumber (double) | nullnoConversion rate: ClosedWon / (ClosedWon + ClosedLost) as percentage
expiredCountinteger (int32)no—
expiredValuenumber (double)no—
pendingInfoCountinteger (int32)no—
pendingInfoValuenumber (double)no—
revokedCountinteger (int32)no—
revokedValuenumber (double)no—
submittedCountinteger (int32)no—
submittedValuenumber (double)no—
totalCountinteger (int32)no—
totalValuenumber (double)no—

DealRegistrationDetailDto

Full detail DTO for a deal registration including updates, protection countdown, and conflict info

PropertyTypeRequiredDescription
actualValuenumber (double) | nullno—
budgetConfirmedstring | nullno—
closeDatestring (date-time) | nullno—
closeReasonstring | nullno—
commercialModelstring | nullno—
competingSolutionsstring | nullno—
conflictResolutionNotesstring | nullno—
createdAtstring (date-time)no—
currentStagestring | nullno—
customerContactEmailstring | nullno—
customerContactNamestring | nullno—
customerContactPhonestring | nullno—
customerContactTitlestring | nullno—
customerCountrystring | nullno—
customerEmployeeCountinteger (int32) | nullno—
customerIndustrystring | nullno—
customerNamestring | nullno—
customerWebsitestring | nullno—
decisionMakersstring | nullno—
engagementDescriptionstring | nullno—
estimatedAnnualValuenumber (double) | nullno—
estimatedTotalValuenumber (double) | nullno—
expectedCloseDatestring (date-time) | nullno—
extensionCountinteger (int32)no—
hasConflictbooleanno—
idstring (uuid)no—
opportunityTitlestring | nullno—
orderReferencestring | nullno—
partnerIdstring (uuid)no—
productsServicesstring[] | nullno—
protectionDaysRemaininginteger (int32) | nullno—
protectionEndDatestring (date-time) | nullno—
protectionStartDatestring (date-time) | nullno—
referenceNumberstring | nullno—
rejectionReasonstring | nullno—
reviewNotesstring | nullno—
reviewedAtstring (date-time) | nullno—
reviewedBystring | nullno—
statusstring | nullno—
submittedAtstring (date-time) | nullno—
submittedBystring (uuid)no—
supportRequiredSupportRequiredDetailDtono—
updatedAtstring (date-time)no—
updatesDealRegistrationUpdateDto[] | nullno—
valueCurrencystring | nullno—

DealRegistrationDto

Basic DTO for deal registration information

PropertyTypeRequiredDescription
createdAtstring (date-time)no—
customerNamestring | nullno—
estimatedValuenumber (double)no—
idstring (uuid)no—
partnerIdstring (uuid)no—
protectionExpiresAtstring (date-time) | nullno—
referenceNumberstring | nullno—
statusstring | nullno—

DealRegistrationUpdateDto

DTO for a deal registration update record

PropertyTypeRequiredDescription
createdAtstring (date-time)no—
idstring (uuid)no—
newStatusstring | nullno—
notesstring | nullno—
previousStatusstring | nullno—
updateTypestring | nullno—
updatedBystring (uuid)no—

DealsSummaryDto

Deal registration counts by status

PropertyTypeRequiredDescription
approvedinteger (int32)no—
closedLostinteger (int32)no—
closedWoninteger (int32)no—
expiredinteger (int32)no—
pendingReviewinteger (int32)no—
totalActiveinteger (int32)no—

DemoEnvironmentRequestDto

Request DTO for provisioning a demo environment

PropertyTypeRequiredDescription
environmentTypestring | nullno—
partnerIdstring (uuid)no—

DiscountApprovalRequestDto

Request body for requesting discount approval on a quote

PropertyTypeRequiredDescription
justificationstring | nullno—
requestedDiscountPercentagenumber (double)no—

EnrolCertificationRequestDto

Request DTO for enrolling in a certification

PropertyTypeRequiredDescription
certificationTypestring | nullno—
partnerIdstring (uuid)no—
userIdstring (uuid)no—

EscalateTicketRequestDto

Request DTO for escalating a ticket

PropertyTypeRequiredDescription
escalationLevelstring | nullno—
reasonstring | nullno—

ExpiringCertificationDto

Certification expiring within a specified window

PropertyTypeRequiredDescription
certificationIdstring (uuid)no—
certificationTypestring | nullno—
daysRemaininginteger (int32)no—
expiresAtstring (date-time)no—
userIdstring (uuid)no—
userNamestring | nullno—

ExpiringDealDto

DTO for deals with expiring protection periods

PropertyTypeRequiredDescription
customerNamestring | nullno—
daysRemaininginteger (int32)no—
expiresAtstring (date-time)no—
partnerIdstring (uuid)no—
referenceNumberstring | nullno—
registrationIdstring (uuid)no—

ExtensionRequestDto

Request DTO for requesting a protection period extension

PropertyTypeRequiredDescription
justificationstring | nullnoJustification for why extension is needed
progressUpdatestring | nullnoProgress update describing deal advancement (min 100 chars)

ForecastOpportunityDto

Individual opportunity within a forecast

PropertyTypeRequiredDescription
customerstring | nullno—
expectedClosestring (date-time)no—
probabilitynumber (double)no—
stagestring | nullno—
valuenumber (double)no—
weightedValuenumber (double)no—

ForecastOpportunityInputDto

Input for a single pipeline opportunity

PropertyTypeRequiredDescription
customerstring | nullno—
expectedClosestring (date-time)no—
probabilitynumber (double)no—
stagestring | nullno—
valuenumber (double)no—

FunnelStageDto

A single funnel stage with counts, values, and conversion rate

PropertyTypeRequiredDescription
averageDaysInStagenumber (double) | nullno—
conversionRateFromPreviousnumber (double) | nullno—
countinteger (int32)no—
stagestring | nullno—
valuenumber (double)no—

GenerateQuoteRequestDto

Request body for generating a partner quote

PropertyTypeRequiredDescription
commercialModelstring | nullno—
customerNamestring | nullno—
linesQuoteLineRequestDto[] | nullno—
registrationIdstring (uuid) | nullno—

InitiatePartnerTerminationCommand

Command to initiate the termination of a partnership with a wind-down period

PropertyTypeRequiredDescription
partnerIdstring (uuid)noThe partner ID to terminate
reasonstring | nullnoReason for termination
terminationTypestring | nullnoType of termination: Notice, Breach, or Mutual

InitiateTierRemediationRequest

Request body for tier remediation initiation

PropertyTypeRequiredDescription
reasonstring | nullno—

InsuranceRecordStatusDto

Status of a single insurance record for a partner

PropertyTypeRequiredDescription
coverageAmountnumber (double) | nullno—
coverageCurrencystring | nullno—
effectiveFromstring (date-time) | nullno—
effectiveTostring (date-time) | nullno—
insuranceTypestring | nullno—
insurerstring | nullno—
policyNumberstring | nullno—
recordIdstring (uuid) | nullno—
statusstring | nullno—

MarketingAssetDto

DTO for a marketing or enablement asset

PropertyTypeRequiredDescription
categorystring | nullno—
createdAtstring (date-time)no—
descriptionstring | nullno—
downloadCountinteger (int32)no—
fileSizeBytesinteger (int64)no—
fileTypestring | nullno—
fileUrlstring | nullno—
idstring (uuid)no—
isActivebooleanno—
languagestring | nullno—
minTierstring | nullno—
titlestring | nullno—
versionstring | nullno—
verticalstring | nullno—

MilestoneDto

Individual milestone status

PropertyTypeRequiredDescription
completedAtstring (date-time) | nullno—
completedBystring | nullno—
descriptionstring | nullno—
dueDatestring (date-time)no—
idstring (uuid)no—
isCompletedbooleanno—
isRequiredbooleanno—
milestoneNamestring | nullno—
sortOrderinteger (int32)no—

MonthlyCsatDto

CSAT score for a single month

PropertyTypeRequiredDescription
averageScorenumber (double)no—
monthstring | nullno—
responseCountinteger (int32)no—

MonthlyUpdateRequestDto

Request DTO for submitting a monthly deal update

PropertyTypeRequiredDescription
currentStagestring | nullnoOptional: update the current sales stage
estimatedValuenumber (double) | nullnoOptional: update the estimated value
statusNotesstring | nullnoStatus notes describing deal progress
valueCurrencystring | nullnoCurrency for the estimated value update

OnboardingProgressDto

DTO representing onboarding progress with milestone completion details

PropertyTypeRequiredDescription
completionPercentagenumber (double)noOverall completion percentage (0-100)
daysRemaininginteger (int32)noDays remaining in the 90-day onboarding window
milestonesMilestoneDto[] | nullnoList of all onboarding milestones with their completion status
onboardingDeadlinestring (date-time) | nullnoThe deadline for completing onboarding
onboardingStartedAtstring (date-time) | nullnoWhen onboarding started
partnerIdstring (uuid)no—

OrderLineDto

DTO for an individual order line item

PropertyTypeRequiredDescription
billingPeriodstring | nullno—
idstring (uuid)no—
lineTotalnumber (double)no—
moduleToProvisionstring | nullno—
productSkustring | nullno—
provisioningStatusstring | nullno—
quantityinteger (int32)no—
unitBuyPricenumber (double)no—
unitRrpnumber (double)no—

OrderLineRequestDto

Request DTO for an order line item

PropertyTypeRequiredDescription
billingPeriodstring | nullnoBilling period (Monthly, Annual, One-Time)
productSkustring | nullnoProduct SKU identifier
quantityinteger (int32)noQuantity ordered

OrderProvisioningStatusDto

Real-time provisioning progress for a partner order

PropertyTypeRequiredDescription
completedAtstring (date-time) | nullno—
failureReasonstring | nullno—
instanceIdstring (uuid) | nullno—
orderIdstring (uuid)no—
orderStatusstring | nullno—
percentCompleteinteger (int32)no—
provisioningStatusstring | nullno—
startedAtstring (date-time) | nullno—
stepsProvisioningStepStatusDto[] | nullno—
workflowIdstring (uuid) | nullno—

PartnerAccreditationDto

A partner's server-held accreditation. Every field is authoritative.

PropertyTypeRequiredDescription
accreditedForOrgCreationbooleannoWhether this partner may create organisations on a customer's behalf.
certificationsPartnerCertificationDto[] | nullnoCompleted, unexpired certifications only.
currentTierstring | nullnoThe partner's real tier (Core / Digital / Quantum). Consumers MUST use this rather than any tier supplied in a request — that is what this endpoint exists for.
legalNamestring | nullno—
partnerIdstring (uuid)no—
statusstring | nullno—

PartnerApplicationDetailDto

Full application detail for the review console's application detail page.

PropertyTypeRequiredDescription
agreementEnvelopeStatusstring | nullno—
agreementVersionstring | nullno—
countryOfIncorporationstring | nullno—
essenceSignedAtstring (date-time) | nullno—
idstring (uuid)no—
invoiceCurrencystring | nullno—
isOrganizationLinkedbooleanno—
legalNamestring | nullno—
organizationIdstring (uuid) | nullno—
partnerSignedAtstring (date-time) | nullno—
partnerTypestring | nullno—
principalContactEmailstring | nullno—
principalContactNamestring | nullno—
registeredAddressstring | nullno—
registeredNumberstring | nullno—
rejectionReasonstring | nullno—
signedDocumentUrlstring | nullno—
statusstring | nullno—
submittedAtstring (date-time)no—
tradingNamestring | nullno—

PartnerApplicationRequestDto

Input DTO for submitting a new partner application

PropertyTypeRequiredDescription
addressCountrystring | nullno—
addressLine1string | nullno—
addressLine2string | nullno—
citystring | nullno—
countryOfIncorporationstring | nullnoISO 3166-1 alpha-3 country of incorporation (e.g. GBR, USA)
countystring | nullno—
invoiceCurrencystring | nullnoPreferred invoicing currency (GBP, USD, AED, EUR)
legalNamestring | nullnoRegistered legal name of the partner entity
partnerTypestring | nullnoPartner business model classification
postCodestring | nullno—
principalContactEmailstring | nullno—
principalContactNamestring | nullno—
principalContactPhonestring | nullno—
registeredNumberstring | nullnoCompany registration / incorporation number
tradingNamestring | nullnoTrading name or brand name (may differ from legal name)

PartnerApplicationSummaryDto

Summary row for the partner application review queue.

PropertyTypeRequiredDescription
agreementEnvelopeStatusstring | nullno—
countryOfIncorporationstring | nullno—
idstring (uuid)no—
invoiceCurrencystring | nullno—
isOrganizationLinkedbooleanno—
legalNamestring | nullno—
partnerTypestring | nullno—
registeredNumberstring | nullno—
statusstring | nullno—
submittedAtstring (date-time)no—

PartnerCertificationDto

A completed, unexpired certification.

PropertyTypeRequiredDescription
expiresAtstring (date-time) | nullno—
typestring | nullno—

PartnerCertificationSummaryDto

Summary of a partner's certification status across all types

PropertyTypeRequiredDescription
certificationsByTypeCertificationsByTypeDto[] | nullnoBreakdown of certifications by type
completedCountinteger (int32)noTotal number of completed certifications
isCompliantbooleannoWhether the partner meets tier certification requirements
teamMatrixCertificationTeamMemberDto[] | nullnoTeam member certification matrix
tierRequiredinteger (int32)noNumber of certifications required for the partner's current tier

PartnerCommercialDto

A partner's commercial position for the admin console: status, type, organisation link, payment terms, the standing counter and every hosting authorisation (active and revoked), newest first.

PropertyTypeRequiredDescription
hostingAuthorisationsPartnerHostingAuthorisationDetailDto[] | nullno—
organizationIdstring (uuid) | nullno—
partnerIdstring (uuid)no—
partnerTypestring | nullno—
paymentTermsDaysinteger (int32)no—
standingVersioninteger (int64)no—
statusstring | nullno—

PartnerCustomerDto

Full detail DTO for a partner customer with order history and billing info

PropertyTypeRequiredDescription
billingAccountIdstring (uuid) | nullno—
commercialModelstring | nullno—
contactEmailstring | nullno—
contractEndDatestring (date-time) | nullno—
contractStartDatestring (date-time) | nullno—
createdAtstring (date-time)no—
customerDomainstring | nullno—
customerNamestring | nullno—
dealRegistrationIdstring (uuid) | nullno—
idstring (uuid)no—
instanceIdstring (uuid) | nullno—
ordersPartnerOrderSummaryDto[] | nullno—
partnerIdstring (uuid)no—
statusstring | nullno—
updatedAtstring (date-time)no—

PartnerDashboardDto

Dashboard summary DTO aggregating key partner metrics

PropertyTypeRequiredDescription
certificationStatusCertificationSummaryDtono—
csatScorenumber (double) | nullnoAverage CSAT score from recent business reviews
currentTierstring | nullno—
dealsSummaryDealsSummaryDtono—
legalNamestring | nullno—
partnerIdstring (uuid)no—
revenueYtdnumber (double)noYear-to-date revenue from commissions
statusstring | nullno—
upcomingActionsUpcomingActionDto[] | nullnoList of upcoming actions requiring attention

PartnerHostingAuthorisationDetailDto

One hosting authorisation as the partner team sees it: active or revoked, with who/when/why.

PropertyTypeRequiredDescription
agreementRefstring | nullno—
approvedAtUtcstring (date-time)no—
approvedBystring | nullno—
authorisationIdstring (uuid)no—
regionstring | nullno—
revokeReasonstring | nullno—
revokedAtUtcstring (date-time) | nullno—
revokedBystring | nullno—
sovereignInstanceIdstring (uuid)no—

PartnerHostingAuthorisationDto

A managed service provider's authorisation to host on one sovereign instance.

PropertyTypeRequiredDescription
agreementRefstring | nullno—
approvedAtstring (date-time)no—
approvedBystring | nullno—
authorisationIdstring (uuid)no—
partnerIdstring (uuid)no—
regionstring | nullno—
revokedAtstring (date-time) | nullno—
sovereignInstanceIdstring (uuid)no—

PartnerNotificationDto

DTO for a partner notification

PropertyTypeRequiredDescription
actionUrlstring | nullno—
categorystring | nullno—
createdAtstring (date-time)no—
idstring (uuid)no—
isReadbooleanno—
messagestring | nullno—
partnerIdstring (uuid)no—
readAtstring (date-time) | nullno—
titlestring | nullno—
userIdstring (uuid)no—

PartnerNotificationDtoPagedResult

A paginated result set wrapping a list of items with pagination metadata

PropertyTypeRequiredDescription
hasNextPagebooleannoWhether there is a next page
hasPreviousPagebooleannoWhether there is a previous page
itemsPartnerNotificationDto[] | nullnoThe items in the current page
pageinteger (int32)noThe current page number (1-based)
pageSizeinteger (int32)noThe number of items per page
totalCountinteger (int32)noTotal number of items across all pages
totalPagesinteger (int32)noTotal number of pages

PartnerOrderDto

Full detail DTO for a partner order including lines, billing, and provisioning

PropertyTypeRequiredDescription
approvedAtstring (date-time) | nullno—
approvedBystring | nullno—
billingSubscriptionIdstring (uuid) | nullno—
commercialModelstring | nullno—
createdAtstring (date-time)no—
customerIdstring (uuid)no—
customerNamestring | nullno—
dealRegistrationIdstring (uuid) | nullno—
discountAppliednumber (double)no—
discountBandstring | nullno—
idstring (uuid)no—
invoiceIdstring (uuid) | nullno—
linesOrderLineDto[] | nullno—
partnerIdstring (uuid)no—
partnerMarginnumber (double)no—
provisioningWorkflowIdstring (uuid) | nullno—
statusstring | nullno—
totalBuyPricenumber (double)no—
totalRrpnumber (double)no—
updatedAtstring (date-time)no—

PartnerOrderSummaryDto

Summary DTO for partner order listing

PropertyTypeRequiredDescription
commercialModelstring | nullno—
createdAtstring (date-time)no—
customerNamestring | nullno—
discountBandstring | nullno—
idstring (uuid)no—
lineCountinteger (int32)no—
partnerIdstring (uuid)no—
statusstring | nullno—
totalBuyPricenumber (double)no—

PartnerPaymentTermsDto

A partner's payment terms.

PropertyTypeRequiredDescription
partnerIdstring (uuid)no—
paymentTermsDaysinteger (int32)no—

PartnerProfileDto

Lightweight profile of the current user's own partner, used to compose the portal's authenticated-user view (/auth/me). Not the full aggregate.

PropertyTypeRequiredDescription
idstring (uuid)noThe partner id.
legalNamestring | nullnoRegistered legal name.
rolestring | nullnoThe caller's own role in this partner (a `PartnerRole` enum name), or `null` when it cannot be determined. The applicant is the partner's principal and so its Admin; an invited member carries the role on their `PartnerUser` record (FR-55.013). The portal scopes navigation and routes on this, so it must never be a constant (#8369).
statusstring | nullnoCurrent lifecycle status (enum name).
tierstring | nullnoCurrent programme tier (enum name).

PartnerQuoteDto

Full quote details including lines, discount info, and mandatory RRP disclaimer. COMPETITION LAW: RRP is a recommendation ONLY.

PropertyTypeRequiredDescription
commercialModelstring | nullno—
createdAtstring (date-time)no—
currencystring | nullno—
customerNamestring | nullno—
discountApprovedbooleanno—
discountApprovedBystring | nullno—
discountBandstring | nullno—
discountPercentagenumber (double)no—
idstring (uuid)no—
linesQuoteLineDto[] | nullno—
marginPercentagenumber (double)no—
partnerIdstring (uuid)no—
registrationIdstring (uuid) | nullno—
rrpDisclaimerstring | nullnoCompetition law disclaimer — must be displayed on all pricing surfaces.
statusstring | nullno—
totalBuyPricenumber (double)no—
totalRrpnumber (double)no—
validUntilstring (date-time)no—

PartnerRevenueDto

Revenue attribution trail for a partner customer: orders to invoices to payments to commissions

PropertyTypeRequiredDescription
currencystring | nullno—
customerIdstring (uuid)no—
customerNamestring | nullno—
totalCommissionsnumber (double)no—
totalPendingPayoutsnumber (double)no—
totalRevenuenumber (double)no—
traceabilityChainRevenueTraceDto[] | nullno—

PartnerScorecardDto

Comprehensive partner scorecard with key performance metrics

PropertyTypeRequiredDescription
activeCertificationsinteger (int32)no—
averageCsatScorenumber (double) | nullno—
certificationCompliancePercentagenumber (double) | nullno—
closedWonDealValuenumber (double)noSum of closed-won deal registration values in the window — a pipeline measure, not tier revenue.
completedReviewsinteger (int32)no—
csatTrendCsatTrendPointDto[] | nullno—
currentTierstring | nullno—
dateRangeFromstring (date-time) | nullno—
dateRangeTostring (date-time) | nullno—
dealConversionRatenumber (double) | nullno—
dealsApprovedinteger (int32)no—
dealsExpiredinteger (int32)no—
dealsLostinteger (int32)no—
dealsSubmittedinteger (int32)no—
dealsWoninteger (int32)no—
generatedAtstring (date-time)no—
latestPipelineAccuracynumber (double) | nullno—
newLogosCountinteger (int32)no—
partnerIdstring (uuid)no—
partnerNamestring | nullno—
requiredCertificationsinteger (int32)no—
revenueAttainmentPercentagenumber (double)no—
revenueBasisstring | nullno—
reviewAdherencePercentagenumber (double) | nullno—
scheduledReviewsinteger (int32)no—
slaCompliancePercentagenumber (double) | nullno—
slaMetTicketsinteger (int32)no—
tierCriteriaScorecardTierCriterionDto[] | nullnoEvery criterion of the current tier and of the next tier, judged exactly as the tier review judges it (rolling 12 months to Essence.Partners.Contracts.Dtos.PartnerScorecardDto.TierCriteriaAssessedAt).
tierCriteriaAssessedAtstring (date-time) | nullno—
tierRevenueThresholdnumber (double)no—
totalRevenuenumber (double)no—
totalTicketsinteger (int32)no—

PartnerStandingRepublishResultDto

What the standing republish enqueued: standing snapshots, Authorised events (active authorisations) and Revoked events (revoked authorisations).

PropertyTypeRequiredDescription
authorisationsinteger (int32)no—
partnersinteger (int32)no—
revocationsinteger (int32)no—

PartnerStatus

Lifecycle status of a channel partner

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 with no declared properties.

PartnerStatusDto

A partner's status after an admin status change.

PropertyTypeRequiredDescription
partnerIdstring (uuid)no—
statusstring | nullno—

PartnerTerritoryDto

DTO for partner territory assignments

PropertyTypeRequiredDescription
idstring (uuid)no—
isPrimarybooleanno—
restrictionsstring | nullno—
territoryCodestring | nullno—
territoryNamestring | nullno—

PartnerTierHistoryDto

DTO for partner tier change history

PropertyTypeRequiredDescription
changeTypestring | nullno—
effectiveDatestring (date-time)no—
idstring (uuid)no—
newTierstring | nullno—
previousTierstring | nullno—
reasonstring | nullno—
remediationEndDatestring (date-time) | nullno—

PartnerUserDto

DTO for partner portal users

PropertyTypeRequiredDescription
detailsWithheldbooleannoTrue when the caller is not the partner's Admin, so this colleague's email and role are withheld from them (#12814). Withheld is its own state: the colleague IS on the roster, and a client must not render it as an unknown or departed user.
emailstring | nullnoNull when Essence.Partners.Contracts.Dtos.PartnerUserDto.DetailsWithheld — never an empty string standing in for it.
firstNamestring | nullno—
idstring (uuid)no—
isActivebooleanno—
lastNamestring | nullno—
rolestring | nullnoNull when Essence.Partners.Contracts.Dtos.PartnerUserDto.DetailsWithheld.

PendingApplicationCountsDto

PropertyTypeRequiredDescription
awaitingCountersignatureinteger (int32)no—
awaitingReviewinteger (int32)no—

PipelineForecastDto

DTO for pipeline forecast with opportunities and actuals

PropertyTypeRequiredDescription
actualClosedValuenumber (double) | nullno—
currencystring | nullno—
forecastAccuracynumber (double) | nullno—
forecastQuarterstring | nullno—
idstring (uuid)no—
isQuarterClosedbooleanno—
opportunitiesForecastOpportunityDto[] | nullno—
partnerIdstring (uuid)no—
submittedAtstring (date-time)no—
totalPipelineValuenumber (double)no—
weightedPipelineValuenumber (double)no—

PriceListDto

Tier-filtered price list with mandatory RRP disclaimer. COMPETITION LAW: RRP is a recommendation ONLY.

PropertyTypeRequiredDescription
itemsPriceListItemDto[] | nullno—
rrpDisclaimerstring | nullnoCompetition law disclaimer — must be displayed on all pricing surfaces.
tierstring | nullno—

PriceListItemDto

Individual product SKU pricing

PropertyTypeRequiredDescription
billingPeriodstring | nullno—
buyPricenumber (double)no—
descriptionstring | nullno—
marginPercentagenumber (double)no—
namestring | nullno—
rrpnumber (double)no—
skustring | nullno—

ProblemDetails

PropertyTypeRequiredDescription
detailstring | nullno—
instancestring | nullno—
statusinteger (int32) | nullno—
titlestring | nullno—
typestring | nullno—

ProcessTrueUpRequestDto

Request body for true-up processing

PropertyTypeRequiredDescription
partnerIdstring (uuid)no—
quarterstring | nullno—

ProgrammeNotificationDto

A notification addressed to the Essence partner-review team (all admin:partners holders).

PropertyTypeRequiredDescription
actionUrlstring | nullno—
categorystring | nullno—
createdAtstring (date-time)no—
idstring (uuid)no—
isReadbooleanno—
messagestring | nullno—
relatedPartnerIdstring (uuid) | nullno—
titlestring | nullno—

ProgrammeTierDto

One rung of the programme ladder.

PropertyTypeRequiredDescription
annualRevenueThresholdGbpnumber (double)noThe published annual revenue threshold, in GBP.
benefitsstring[] | nullnoBenefits the file lists for the rung; empty when it lists none.
codestring | nullnoThe tier's name as every service holds it (`Registered`, `Core`, …).
entrystring | nullnoEntry condition, where the ladder states one beyond the threshold.
marginBasisstring | nullnoThe file's own wording of the rung's margin basis, verbatim.
marginColumnstring | nullnoThe margin-matrix column this rung is paid on, or `null` when it resells nothing (Registered is referral only). Strategic reads the Quantum column (FR-55.143).
namestring | nullnoDisplay name.
orderinteger (int32)noThe programme ordinal (FR-55.140), equal to the services' enum value.
referralFeeRatenumber (double) | nullnoOne-time referral fee as a fraction of first-year subscription value (FR-55.147).
resaleMarginByFamilymap<string, number (double)> | nullnoResale margin as a fraction off list price, per SKU family, from Essence.Partners.Contracts.Dtos.ProgrammeTierDto.MarginColumn; `null` when the rung carries no margin — never a zero, which would read as "nil discount agreed".

ProgrammeTierMappingDto

The cross-walk between the seller ladder and the three other ladders (DD-119 §5).

PropertyTypeRequiredDescription
readingstring | nullnoHow to read it: "comparable to — never a conversion".
rowsProgrammeTierMappingRowDto[] | nullnoOne row per seller rung.
statusstring | nullnoThe file's status for the mapping.

ProgrammeTierMappingRowDto

One cross-walk row; a `null` rung means that ladder has no comparable rung.

PropertyTypeRequiredDescription
builderstring | nullno—
frameworkstring | nullno—
sellerstring | nullno—
specialismstring | nullno—

ProgrammeTiersDto

The partner programme ladder as `docs/commercial/catalogue/partner-tiers.json` states it, served by `GET /api/v1/partners/programme/tiers` (EPIC 55 FR-55.151). Partner-portal, the website partners page, the L200 partner deck and EPIC 109's trust page read this instead of a local copy of the ladder.

PropertyTypeRequiredDescription
familiesWithNoPartnerMarginstring[] | nullnoSKU families that carry no resale margin on any rung, deliberately.
sourcestring | nullnoWhere the ladder was ruled (the file's `programmeLadder.source`).
statusstring | nullnoThe file's own status for the five-rung ladder (`proposed` until FR-55.157 records the reissue).
tierMappingProgrammeTierMappingDtono—
tiersProgrammeTierDto[] | nullnoThe five rungs, in programme order (Registered 0 … Strategic 4).

ProvisioningStepStatusDto

Status of a single provisioning step

PropertyTypeRequiredDescription
completedAtstring (date-time) | nullno—
errorstring | nullno—
startedAtstring (date-time) | nullno—
statusstring | nullno—
stepNamestring | nullno—

QuarterlyRevenueDto

Revenue figure for a single quarter

PropertyTypeRequiredDescription
orderCountinteger (int32)no—
quarterstring | nullno—
totalRevenuenumber (double)no—

QuoteLineDto

Individual line item within a quote

PropertyTypeRequiredDescription
billingPeriodstring | nullno—
lineBuyPriceTotalnumber (double)no—
lineRrpTotalnumber (double)no—
productNamestring | nullno—
productSkustring | nullno—
quantityinteger (int32)no—
unitBuyPricenumber (double)no—
unitRrpnumber (double)no—

QuoteLineRequestDto

Individual line item request for quote generation

PropertyTypeRequiredDescription
billingPeriodstring | nullno—
productSkustring | nullno—
quantityinteger (int32)no—

RecordBusinessReviewMinutesRequestDto

Request body for recording business review minutes

PropertyTypeRequiredDescription
actionItemsActionItemInputDto[] | nullno—
minutesstring | nullno—
nextReviewDatestring (date-time) | nullno—

RecordCertificationProgressRequestDto

Request DTO for recording certification progress

PropertyTypeRequiredDescription
progressPercentageinteger (int32)no—

ResolveTicketRequestDto

Request DTO for resolving a ticket

PropertyTypeRequiredDescription
resolutionNotesstring | nullno—

RevenueAttributionDto

Revenue attribution breakdown for a partner

PropertyTypeRequiredDescription
byCommercialModelRevenueByModelDto[] | nullnoRevenue breakdown by commercial model (BuySell, Agency, Referral)
byProductRevenueByProductDto[] | nullnoRevenue breakdown by product SKU
byQuarterRevenueByQuarterDto[] | nullnoRevenue breakdown by quarter
currencystring | nullno—
dateFromstring (date-time)no—
dateTostring (date-time)no—
partnerIdstring (uuid)no—
totalRevenuenumber (double)no—

RevenueByModelDto

Revenue grouped by commercial model

PropertyTypeRequiredDescription
commercialModelstring | nullno—
dealCountinteger (int32)no—
percentagenumber (double)no—
revenuenumber (double)no—

RevenueByProductDto

Revenue grouped by product

PropertyTypeRequiredDescription
percentagenumber (double)no—
productSkustring | nullno—
quantityinteger (int32)no—
revenuenumber (double)no—

RevenueByQuarterDto

Revenue grouped by quarter

PropertyTypeRequiredDescription
dealCountinteger (int32)no—
growthPercentagenumber (double)no—
quarterstring | nullno—
revenuenumber (double)no—

RevenueTraceDto

A single link in the revenue traceability chain

PropertyTypeRequiredDescription
commissionAmountnumber (double) | nullno—
commissionIdstring (uuid) | nullno—
invoiceAmountnumber (double) | nullno—
invoiceIdstring (uuid) | nullno—
orderAmountnumber (double)no—
orderDatestring (date-time)no—
orderIdstring (uuid)no—
orderStatusstring | nullno—
paymentStatusstring | nullno—
payoutAmountnumber (double) | nullno—
payoutIdstring (uuid) | nullno—
subscriptionIdstring (uuid) | nullno—

RevenueTrendDto

DTO for revenue trend data by quarter

PropertyTypeRequiredDescription
partnerIdstring (uuid)no—
quartersQuarterlyRevenueDto[] | nullno—

ReviewDealRegistrationRequestDto

Request DTO for reviewing a deal registration

PropertyTypeRequiredDescription
notesstring | nullnoReview notes
outcomeReviewOutcomeno—
rejectionReasonstring | nullnoReason for rejection (required when outcome is Rejected)

ReviewOutcome

The set of outcomes a channel-team reviewer can produce for a deal registration. Tighter than Essence.Partners.Domain.Enums.DealRegistrationStatus: a reviewer can only approve, reject, or send back for more information — the remaining lifecycle states are reached by other transitions. Replaces the former free-form string + ValidOutcomes allowlist so the command, validator, and controller share a single compile-time source of truth.

1 | 2 | 3 with no declared properties.

ReviewPartnerApplicationRequestDto

Input DTO for reviewing (approving or rejecting) a partner application

PropertyTypeRequiredDescription
agreementVersionstring | nullnoAgreement version to issue on approval (default: "1.0")
notesstring | nullnoInternal review notes
outcomestring | nullnoReview outcome: "Approved" or "Rejected"
rejectionReasonstring | nullnoReason for rejection (required when outcome is Rejected)

RevokeDealRegistrationCommand

Revokes a previously approved deal registration (admin only)

PropertyTypeRequiredDescription
reasonstring | nullnoReason for revoking the protection
registrationIdstring (uuid)no—

ScheduleBusinessReviewRequestDto

Request body for scheduling a business review

PropertyTypeRequiredDescription
attendeesstring[] | nullno—
partnerIdstring (uuid)no—
reviewTypestring | nullno—
scheduledDatestring (date-time)no—

ScorecardTierCriterionDto

One tier criterion on the scorecard: the partner's current value, what the tier requires, and whether it is met. Boolean criteria read 1 (yes) / 0 (no).

PropertyTypeRequiredDescription
criterionstring | nullno—
currentnumber (double)no—
metbooleanno—
requirednumber (double)no—
tierstring | nullno—

ServiceProviderDirectoryEntryDto

One approved hosting provider in a region: an Active managed service provider and the sovereign instances in that region it is authorised to host on. Carries no price.

PropertyTypeRequiredDescription
displayNamestring | nullno—
organizationIdstring (uuid) | nullno—
partnerIdstring (uuid)no—
regionstring | nullno—
sovereignInstanceIds(string (uuid))[] | nullno—

SlaStatusDto

SLA timer status for a ticket

PropertyTypeRequiredDescription
isBreachedbooleanno—
l1Duestring (date-time) | nullno—
l1Metboolean | nullno—
l2Duestring (date-time) | nullno—
l2Metboolean | nullno—
resolutionDuestring (date-time) | nullno—
resolutionMetboolean | nullno—

SubmitComplianceDeclarationRequestDto

Request body for submitting a compliance declaration

PropertyTypeRequiredDescription
declarationTypestring | nullno—
documentUrlstring | nullno—
partnerIdstring (uuid)no—

SubmitDealRegistrationRequestDto

Request DTO for submitting a deal registration with all required fields

PropertyTypeRequiredDescription
budgetConfirmedstring | nullno—
competingSolutionsstring | nullno—
competitiveDisplacementRequiredbooleanno—
currentStagestring | nullno—
customerContactEmailstring | nullno—
customerContactNamestring | nullno—
customerContactPhonestring | nullno—
customerContactTitlestring | nullno—
customerCountrystring | nullno—
customerEmployeeCountinteger (int32) | nullno—
customerIndustrystring | nullno—
customerNamestring | nullno—
customerWebsitestring | nullno—
decisionMakersstring | nullno—
draftIdstring (uuid) | nullnoOptional: if submitting from an existing draft
engagementDescriptionstring | nullno—
estimatedAnnualValuenumber (double)no—
estimatedTotalValuenumber (double) | nullno—
execSponsorshipRequiredbooleanno—
expectedCloseDatestring (date-time)no—
opportunityTitlestring | nullno—
otherSupportRequiredstring | nullno—
productDemoRequiredbooleanno—
productsServicesstring[] | nullno—
proofOfConceptRequiredbooleanno—
technicalPresalesRequiredbooleanno—
valueCurrencystring | nullno—

SubmitPipelineForecastRequestDto

Request body for submitting a pipeline forecast

PropertyTypeRequiredDescription
forecastQuarterstring | nullno—
opportunitiesForecastOpportunityInputDto[] | nullno—
partnerIdstring (uuid)no—

SupportPerformanceDto

Aggregate support performance metrics for a partner

PropertyTypeRequiredDescription
averageCsatScorenumber (double)no—
csatResponseCountinteger (int32)no—
escalationRatePercentnumber (double)no—
l1SlaCompliancePercentnumber (double)no—
l2SlaCompliancePercentnumber (double)no—
partnerIdstring (uuid)no—
periodEndstring (date-time)no—
periodStartstring (date-time)no—
resolutionSlaCompliancePercentnumber (double)no—
ticketsBySeverityTicketCountBySeverityDto[] | nullno—
ticketsByStatusTicketCountByStatusDto[] | nullno—
totalTicketsinteger (int32)no—

SupportRequiredDetailDto

DTO for support required details

PropertyTypeRequiredDescription
competitiveDisplacementbooleanno—
execSponsorshipbooleanno—
otherstring | nullno—
productDemobooleanno—
proofOfConceptbooleanno—
technicalPresalesbooleanno—

SupportTicketDetailDto

Detailed DTO with full SLA timers and escalation history

PropertyTypeRequiredDescription
assignedTostring | nullno—
closedAtstring (date-time) | nullno—
createdAtstring (date-time)no—
csatCommentstring | nullno—
csatScoreinteger (int32) | nullno—
currentLevelinteger (int32)no—
customerNamestring | nullno—
descriptionstring | nullno—
idstring (uuid)no—
l1ResponseAtstring (date-time) | nullno—
l1SlaMetboolean | nullno—
l2ResponseAtstring (date-time) | nullno—
l2SlaMetboolean | nullno—
partnerIdstring (uuid)no—
raisedBystring (uuid)no—
resolutionAtstring (date-time) | nullno—
resolutionSlaMetboolean | nullno—
severitystring | nullno—
slaTimersSlaStatusDtono—
statusstring | nullno—
stepsToReproducestring | nullno—
ticketReferencestring | nullno—
titlestring | nullno—
updatedAtstring (date-time)no—

SupportTicketDto

Full DTO for a support ticket including SLA times

PropertyTypeRequiredDescription
assignedTostring | nullno—
closedAtstring (date-time) | nullno—
createdAtstring (date-time)no—
csatCommentstring | nullno—
csatScoreinteger (int32) | nullno—
currentLevelinteger (int32)no—
customerNamestring | nullno—
descriptionstring | nullno—
idstring (uuid)no—
l1ResponseAtstring (date-time) | nullno—
l1SlaMetboolean | nullno—
l2ResponseAtstring (date-time) | nullno—
l2SlaMetboolean | nullno—
partnerIdstring (uuid)no—
raisedBystring (uuid)no—
resolutionAtstring (date-time) | nullno—
resolutionSlaMetboolean | nullno—
severitystring | nullno—
slaStatusSlaStatusDtono—
statusstring | nullno—
stepsToReproducestring | nullno—
ticketReferencestring | nullno—
titlestring | nullno—

TicketCountBySeverityDto

Ticket count grouped by severity

PropertyTypeRequiredDescription
countinteger (int32)no—
severitystring | nullno—

TicketCountByStatusDto

Ticket count grouped by status

PropertyTypeRequiredDescription
countinteger (int32)no—
statusstring | nullno—

TierCriteriaDto

Tier criteria requirements

PropertyTypeRequiredDescription
minAnnualRevenuenumber (double)no—
minCertifiedArchitectsinteger (int32)no—
minCertifiedProfessionalsinteger (int32)no—
minCsatScorenumber (double)no—
minForecastAccuracynumber (double)no—
minNewLogosinteger (int32)no—
minReferenceCustomersinteger (int32)no—
requiresActivePipelinebooleanno—
requiresOnboardingCompletebooleanno—
requiresQuarterlyForecastsbooleanno—
tierstring | nullno—

TierHistoryDto

Tier change history record

PropertyTypeRequiredDescription
changeTypestring | nullno—
createdAtstring (date-time)no—
decidedBystring | nullno—
effectiveDatestring (date-time)no—
idstring (uuid)no—
newTierstring | nullno—
partnerIdstring (uuid)no—
previousTierstring | nullno—
reasonstring | nullno—
remediationEndDatestring (date-time) | nullno—

TierMetricsDto

Current partner metrics

PropertyTypeRequiredDescription
activePipelinebooleanno—
annualRevenuenumber (double)no—
certifiedArchitectsinteger (int32)no—
certifiedProfessionalsinteger (int32)no—
csatScorenumber (double)no—
forecastAccuracynumber (double)no—
newLogosinteger (int32)no—
onboardingCompletebooleanno—
quarterlyForecastsSubmittedbooleanno—
referenceCustomersinteger (int32)no—

TierQualificationDto

Tier qualification assessment result with metrics and status

PropertyTypeRequiredDescription
assessedAtstring (date-time)no—
atRiskOfDemotionbooleanno—
currentTierstring | nullno—
currentTierCriteriaTierCriteriaDtono—
eligibleForAdvancementbooleanno—
metricsTierMetricsDtono—
nextTierCriteriaTierCriteriaDtono—
partnerIdstring (uuid)no—
qualifiedForCurrentTierbooleanno—

TrueUpResultDto

Result of a quarterly true-up reconciliation for a Buy-Sell partner

PropertyTypeRequiredDescription
actualUsageValuenumber (double)no—
adjustmentInvoiceRequiredbooleanno—
orderedQuantityValuenumber (double)no—
overageAmountnumber (double)no—
partnerIdstring (uuid)no—
processedAtstring (date-time)no—
quarterstring | nullno—

UpcomingActionDto

An upcoming action or task requiring partner attention

PropertyTypeRequiredDescription
descriptionstring | nullno—
dueDatestring (date-time) | nullno—
prioritystring | nullno—
titlestring | nullno—

UpdatePartnerDetailsRequestDto

Input DTO for updating editable partner details

PropertyTypeRequiredDescription
noticeAddressCitystring | nullno—
noticeAddressCountrystring | nullno—
noticeAddressCountystring | nullno—
noticeAddressLine1string | nullno—
noticeAddressLine2string | nullno—
noticeAddressPostCodestring | nullno—
principalContactEmailstring | nullnoPrincipal contact email
principalContactNamestring | nullnoPrincipal contact name
principalContactPhonestring | nullnoPrincipal contact phone
tradingNamestring | nullnoTrading name or brand name

UpdateTicketStatusRequestDto

Request DTO for updating ticket status

PropertyTypeRequiredDescription
newStatusstring | nullno—
notesstring | nullno—

UploadInsuranceCertificateRequestDto

Request body for uploading an insurance certificate

PropertyTypeRequiredDescription
certificateUrlstring | nullno—
coverageAmountnumber (double)no—
coverageCurrencystring | nullno—
effectiveFromstring (date-time)no—
effectiveTostring (date-time)no—
insuranceTypestring | nullno—
insurerstring | nullno—
partnerIdstring (uuid)no—
policyNumberstring | nullno—

Built with ❤️ for developers · Service status