TransaktDocs
API referenceCatalogue

List your products

GET
/api/v1/catalogue/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.

Authorization

headerAuthorizationBearer <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

Query Parameters

category?string
type?unknown

The technical shapes of a product: a fixed enumeration owned by the system (5. Data model §5.3.1).

Value in"WebApp""TeamsApp""SharePointApp""OfficeAddIn""PowerPlatformSolution"

Response Body

OK

application/json
  1. 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/).