List your products
Your products that the API client may read, with their editions (in rank order) and plans; each plan carries its edition and its effective capabilities (features and limits). Scope catalogue:read (app role Catalogue.Read.All).
Errors: category.not_found, auth.credentials_invalid, auth.forbidden, request.rate_limited.
AuthorizationBearer <token>A Microsoft Entra client-credentials token for the Transakt API (scope api://{apiAppId}/.default), issued in the tenant recorded on the API client credential, with the app role matching the operation: Entitlement.Read.All, Catalogue.Read.All or Usage.Write.All.
Scope: api://{apiAppId}/.default
category?stringtype?unknownThe technical shapes of a product: a fixed enumeration owned by the system (5. Data model §5.3.1).
"WebApp""TeamsApp""SharePointApp""OfficeAddIn""PowerPlatformSolution"OK
application/json- response
[index: integer]?CatalogueProduct (6.5.5); editions in rank order since slice 11.4a.
curl -X GET "https://example.com/api/v1/catalogue/products"[ { "slug": "string", "name": "string", "types": [ "WebApp" ], "categories": [ { "slug": "string", "name": "string" } ], "editions": [ { "slug": "string", "name": "string", "rank": 0 } ], "plans": [ { "slug": "string", "name": "string", "edition": "string", "capabilities": { "property1": true, "property2": true }, "licenceModel": "TenantWide", "marketplace": [] } ] }]Get a product GET
One product of the catalogue, as in the list. Errors: [`api_client.product_not_allowed`](/errors/api_client.product_not_allowed/), [`product.not_found`](/errors/product.not_found/), [`auth.credentials_invalid`](/errors/auth.credentials_invalid/), [`auth.forbidden`](/errors/auth.forbidden/), [`request.rate_limited`](/errors/request.rate_limited/).
Report metered usage POST
Report usage on the custom meter dimensions of flat-rate Microsoft Marketplace plans: 1 to 100 records, each for one tenant, product, dimension and UTC hour. Each record is checked and saved on its own; the answer has one result per record, in the order sent. An `Idempotency-Key` header is honoured but not required, because each hour of each dimension is reported once. Scope `usage:write` (app role `Usage.Write.All`). Errors: [`request.validation_failed`](/errors/request.validation_failed/), [`api_client.scope_not_allowed`](/errors/api_client.scope_not_allowed/), [`metering.window_not_ended`](/errors/metering.window_not_ended/), [`metering.subscription_not_found`](/errors/metering.subscription_not_found/), [`metering.subscription_ambiguous`](/errors/metering.subscription_ambiguous/), [`metering.window_already_reported`](/errors/metering.window_already_reported/), [`metering.subscription_not_active`](/errors/metering.subscription_not_active/), [`metering.marketplace_subscription_missing`](/errors/metering.marketplace_subscription_missing/), [`metering.not_metered`](/errors/metering.not_metered/), [`metering.unknown_dimension`](/errors/metering.unknown_dimension/), [`metering.window_too_old`](/errors/metering.window_too_old/), [`auth.credentials_invalid`](/errors/auth.credentials_invalid/), [`auth.forbidden`](/errors/auth.forbidden/), [`request.rate_limited`](/errors/request.rate_limited/).