Partner
Quote a license order into the MSP pool
MSP only. Step 1 of 2 (D28): creates a pool opportunity with its priced quote in Salesforce (partner pricebook) and answers 200 with the lines, prices, license term dates, the terms version/URL and the quote expiry. Nothing is ordered or billed until acceptPoolOrder; an unaccepted quote expires after 24 h. Idempotent on requestId (an identical replay returns the same quote). Errors: 400 SELF_PROVISIONING_DISABLED, SKU_NOT_ALLOWED, QUANTITY_INVALID, AUTO_RENEW_REQUIRED, PROVISION_CAP_EXCEEDED (detail = remainingToday; caps are only pre-checked here), APEX_VALIDATION / SKU_NOT_IN_PRICEBOOK (detail = the Salesforce message); 403 NOT_VERIFIED_MSP; 409 PROVISION_REPLAY_MISMATCH (same requestId, different SKU, quantity or auto-renew); 429 QUOTE_RATE_LIMITED (quotes per organization per minute); 503 SALESFORCE_UNAVAILABLE (nothing created; retry with the SAME requestId). Prices appear only here and on getPool orders. No claim code ever appears in any response.
POST/ api/ partner/ license/ quotePoolOrderAuthorizations
Your Rhombus API key. Must be accompanied by the x-auth-scheme header set to api-token (or partner-api-token for partner endpoints).
Instead of an API key, an OAuth access token: Bearer <token>, with the write scope.
OAuth explains tokens and scopes.
Headers
Authentication scheme identifier. Use api-token or partner-api-token with the x-auth-apikey header, api or partner-api with x-auth-apikey plus a client certificate, api-oauth-token or partner-api-oauth-token with x-auth-access-token, and federated-token with x-auth-ft. A request with Authorization: Bearer <token> and no x-auth-scheme is treated as OAuth, and federated-token may also be sent as the x-auth-scheme and x-auth-ft query parameters.
Available options: api-token, api, api-oauth-token, federated-token, partner-api-token, partner-api, partner-api-oauth-token
Client organization UUID (22-character RUUID), for partner credentials only. With it the call runs in that client organization with the partner support authority's role. Without it a partner credential runs as the partner organization, which outside the partner endpoints is deprecated (responses carry Deprecation and Sunset: Tue, 05 Jan 2027 00:00:00 GMT). A malformed value returns 400 INVALID_AUTH_ORG; a client organization the partner cannot access returns 403 PARTNER_CLIENT_ACCESS_DENIED.
Length: 22 to 22
Body
application/json · object
Ask for a priced quote for new licenses into the MSP's own pool: a pool opportunity with its quote is created in Salesforce and left un-accepted; nothing is ordered until acceptPoolOrder.
Required. True: Salesforce creates and bills a renewal order itself when the term ends (D27); the acknowledgement at acceptPoolOrder covers auto-renewal (D30). Only allowed while getPool.selfProvisioningAutoRenewEnabled is true (deferred after V1; otherwise 400 FEATURE_DISABLED).
1 <= quantity <= maxPerRequest (see getCatalog).
Client-generated id, ONE per dialog open ([A-Za-z0-9_-]{1,64}). Retrying with the same id is idempotent: the same opportunity and its current quote come back (409 PROVISION_REPLAY_MISMATCH if the SKU, quantity or auto-renew differ).
Response
200 Quoted
application/json · object
200: the pool opportunity exists in Salesforce with its priced quote and awaits acceptance (acceptPoolOrder) until the quote expires. Nothing has been ordered. Never carries a claim code or key.
Stable, machine-readable code for the failure (one of the ApiErrorCode catalog) when error is true. Branch on this, not on errorMsg.
Salesforce opportunity id: the order reference, passed to acceptPoolOrder / cancelPoolOrder.
A priced quote for a pool order, from the partner's Salesforce pricebook (CPQ); the prices and terms the partner acknowledges at acceptPoolOrder. While uncalculated is true CPQ is still pricing it: replay quotePoolOrder with the same requestId until it is false before showing prices.
True when this requestId had already been quoted; the earlier opportunity and its current quote are returned and nothing new was created.
The client request id the quote was asked under.
Errors
Like every operation, this one can also answer with the standard error body (errorCode, errorMsg). Errors explains each status and how to retry.
400Bad Request. errorCode is one of: BAD_REQUEST, VALIDATION_FAILED, MISSING_REQUIRED_FIELD, INVALID_JSON, INVALID_REQUEST_BODY, FEATURE_NOT_ENABLED, INVALID_AUTH_ORG, LOCATION_NOT_FOUND, SELF_PROVISIONING_DISABLED, SKU_NOT_ALLOWED, QUANTITY_INVALID, AUTO_RENEW_REQUIRED, PROVISION_CAP_EXCEEDED, ACKNOWLEDGEMENT_REQUIRED, SIGNATURE_REQUIRED, APEX_VALIDATION, SKU_NOT_IN_PRICEBOOK.401Unauthorized. errorCode is one of: UNAUTHENTICATED, INVALID_CREDENTIAL, CREDENTIAL_EXPIRED, CREDENTIAL_REVOKED, CERTIFICATE_MISMATCH.403Forbidden. errorCode is one of: FORBIDDEN, DOMAIN_NOT_ALLOWED, DEVICE_SCOPE_MISMATCH, ROLE_NOT_PERMITTED, FUNCTIONALITY_REQUIRED, PARTNER_FUNCTIONALITY_REQUIRED, PERMISSION_REQUIRED, PARTNER_CLIENT_ACCESS_DENIED, HARDWARE_NOT_AVAILABLE, HARDWARE_ALREADY_REGISTERED, PARTNER_PORTAL_NOT_ENABLED, MANAGED_BY_MSP, SUPER_ADMIN_RESTRICTED_BY_MSP, MSP_DESIGNATION_INVALID, NOT_MANAGED_CLIENT, NOT_VERIFIED_MSP, ORDER_NOT_YOURS.429Too Many Requests. errorCode is one of: RATE_LIMITED, QUOTE_RATE_LIMITED.500Internal Server Error. errorCode is one of: INTERNAL_ERROR.503Service Unavailable. errorCode is one of: SERVICE_UNAVAILABLE, SALESFORCE_UNAVAILABLE.