> For the complete documentation index, see [llms.txt](https://developer.celigo.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.celigo.com/api/api-reference/account-and-admin/subscription-and-entitlements.md).

# Subscription & Entitlements

Subscription (license) information and entitlement usage for the current account, including plan details, feature limits, and consumption metrics.

### License schema

## The License object

```json
{"openapi":"3.2.0","info":{"title":"Subscription & Entitlements","version":"1.0.0"},"components":{"schemas":{"License":{"type":"object","required":["_id","type","created","lastModified"],"description":"Subscription plan or connector/Integration App license. Fields describe\nwhat the plan **entitles**, not what is configured on the account.","properties":{"_id":{"type":"string","format":"objectId","readOnly":true,"description":"License identifier."},"_userId":{"type":"string","format":"objectId","readOnly":true,"description":"Account owner the license belongs to. Present only on the single-object\nresponse of `GET /v1/licenses?type=io`; absent from the array response."},"created":{"type":"string","format":"date-time","readOnly":true,"description":"License creation timestamp."},"lastModified":{"type":"string","format":"date-time","readOnly":true,"description":"Last modification timestamp."},"expires":{"type":"string","format":"date-time","description":"License expiration timestamp."},"type":{"type":"string","description":"License type (subscription category). Only the account-level license describes the full subscription plan.","enum":["integrator","platform","endpoint","connector","integrationApp","integrationAppChild"]},"cdc":{"type":"boolean","description":"When true, the account is licensed for CDC (change data capture) features."},"tier":{"type":"string","description":"Subscription tier name — the plan level the account is on. On `platform` licenses a year\nmarker in the name identifies the plan generation; the rest of the name is free-form\n(packages, custom names)."},"supportTier":{"type":"string","description":"Support plan level.","enum":["essential","preferred","premier"]},"trialEndDate":{"type":"string","format":"date-time","description":"Trial end timestamp. Remains populated after the trial ends with the original expiration date."},"_connectorId":{"type":"string","format":"objectId","description":"Connector id. Present on `connector`, `integrationApp`, and `integrationAppChild` licenses."},"_integrationId":{"type":"string","format":"objectId","description":"Integration id. Present on `connector`, `integrationApp`, and `integrationAppChild` licenses."},"_editionId":{"type":"string","format":"objectId","description":"Edition id — present on `integrationApp` and `integrationAppChild` licenses."},"_parentId":{"type":"string","format":"objectId","description":"Parent license id — present only on `integrationAppChild` licenses. References the parent `integrationApp` license."},"opts":{"type":"object","description":"Connector/license options (connector edition, add-on licenses, etc.). Present only on connector-specific licenses."},"resumable":{"type":"boolean","readOnly":true,"description":"When true, the license/account is eligible for self-service resume after suspension."},"disableOverage":{"type":"boolean","description":"When true, overage charges are disabled for this account."},"requestUserToMigrateSandbox":{"type":"boolean","description":"When true, the user should be prompted to migrate legacy sandbox data to environments."},"endpoint":{"type":"object","description":"Entitlements for endpoint-style licenses. Present only when `type` is `endpoint`.","properties":{"production":{"$ref":"#/components/schemas/LicenseEntitlementCounts"},"numEnvironments":{"type":"integer","description":"Maximum number of environments the plan allows."}}},"integrator":{"type":"object","description":"Entitlements for integrator-style licenses. Present only when `type` is `integrator`.","properties":{"production":{"$ref":"#/components/schemas/LicenseEntitlementCounts"},"numEnvironments":{"type":"integer","description":"Maximum number of environments the plan allows."}}},"platform":{"type":"object","description":"Entitlements for platform-style licenses. Present only when `type` is `platform`.","properties":{"production":{"$ref":"#/components/schemas/LicenseEntitlementCounts"},"numEnvironments":{"type":"integer","description":"Maximum number of environments the plan allows."},"apiManagement":{"type":"boolean","description":"When true, the platform plan includes API Management."}}},"sso":{"type":"boolean","description":"When true, the plan entitles the account to use SSO (Single Sign-On)."},"scim":{"type":"boolean","description":"When true, the plan entitles the account to provision users through SCIM.\nDerived from the SCIM add-on together with `sso` — reads false whenever the\nplan does not also entitle SSO. Present on account-level licenses."},"van":{"type":"boolean","description":"When true, the plan entitles the account to use VAN (Value Added Network) for EDI."},"lookupCache":{"type":"boolean","description":"When true, the plan entitles the account to use Lookup Caches (in-memory lookups)."},"abstractFlows":{"type":"boolean","description":"When true, the plan entitles the account to use Abstract Flows (multi-instance templates)."},"apiManagement":{"type":"boolean","description":"When true, the plan entitles the account to use API Management (APIM)."},"concurrency":{"type":"integer","description":"Maximum number of concurrent flow executions the plan allows."},"maxAllowedDataRetention":{"type":"integer","description":"Maximum data retention period (in days) the plan allows."},"auditLogRetentionYears":{"type":"integer","description":"Maximum audit log retention (in years) the plan allows."},"aiConversationsPrepaidBalance":{"type":"number","description":"Remaining prepaid credit balance for Celigo's AI assistant.\nCustomers purchase credits up front and usage costs are deducted\nas they interact with the assistant."},"aiAgentsPrepaidBalance":{"type":"number","description":"Remaining prepaid credit balance for AI Agents — LLM/AI capabilities\nused within flows, APIs, and automations (e.g., AI-powered transforms,\nhooks). Customers purchase credits up front and usage costs are\ndeducted as AI agents run. This balance is separate from the AI\nassistant's credits (`aiConversationsPrepaidBalance`)."},"topics":{"type":"object","description":"Event Streams (topics) entitlements. Present on `endpoint` and `platform`\nlicenses; a plan without Event Streams carries only `enabled: false`, and the\ntwo limits appear once `enabled` is true.","required":["enabled"],"properties":{"enabled":{"type":"boolean","description":"When true, the plan entitles the account to create topics and use Event Streams."},"topicsAllowed":{"type":"integer","minimum":0,"description":"Maximum number of topics the account may hold. Enforced when a topic is\ncreated or restored from the recycle bin."},"retentionCeilingDays":{"type":"integer","minimum":1,"maximum":90,"description":"Longest message retention (in days) a topic may be configured with. Trial\naccounts read a lower ceiling than paid plans."}}},"lookupCacheUsage":{"type":"object","description":"Monthly lookup-cache unit entitlement; every read and write against a lookup\ncache consumes units. Present on `endpoint` and `platform` licenses whose plan\nincludes lookup-cache units. Compare with `lookupCacheUsage.numUnits` on\n`GET /v1/licenseEntitlementUsage` for consumption.","required":["numUnits","numAddOnUnits"],"properties":{"numUnits":{"type":"integer","minimum":0,"description":"Base number of lookup-cache units per month included with the plan."},"numAddOnUnits":{"type":"integer","minimum":0,"description":"Additional lookup-cache units per month the customer purchased as add-ons."}}},"fileserver":{"type":"object","description":"File server entitlement — running a Celigo-hosted SFTP server through\n`/v1/mft/fileserver`. Present on account-level licenses once the add-on has\nbeen provisioned; absent otherwise.","required":["enabled"],"properties":{"enabled":{"type":"boolean","description":"When true, the plan entitles the account to run a Celigo-hosted SFTP file server."},"maxAccounts":{"type":"integer","minimum":0,"description":"Maximum number of partner accounts that may connect to each environment's\nfile server. A value of 0 blocks every partner connection."},"maxConcurrentSessionsPerAccount":{"type":"integer","minimum":0,"description":"Maximum concurrent sessions each partner account may hold on the file\nserver. A value of 0 blocks new sessions."}}},"filesql":{"type":"object","description":"Storage Query entitlement — running SQL over files in Celigo Storage through\n`POST /v1/storage/query`. Present on account-level licenses once the add-on has\nbeen provisioned; absent otherwise.","required":["enabled"],"properties":{"enabled":{"type":"boolean","description":"When true, the account may submit storage queries. When false or when the\nblock is absent, every `/v1/storage/query` route answers\n`403 STORAGE_QUERY_NOT_ENTITLED`."}}},"di":{"type":"object","description":"Data Ingestion (Celigo Sync) entitlements. Every paid edition includes a base\nallowance — one enabled sync per environment and a monthly loaded-row volume —\nand a Data Ingestion volume pack adds capacity on top of it. A free trial\ncarries the Enterprise-equivalent allowance for its duration; the free plan\nafter the trial has no Data Ingestion.","required":["enabled","volume","volumeAddOn","disableOverage"],"properties":{"enabled":{"type":"boolean","description":"When true, the plan entitles the account to enable and run Data Ingestion syncs."},"volume":{"type":"integer","description":"Monthly loaded-row allowance included with the edition. Without the add-on,\ncrossing it lets the running job finish and disables the sync from its next\nrun until the next month."},"volumeAddOn":{"type":"integer","description":"Additional monthly loaded rows purchased as a Data Ingestion volume pack. With\na pack the account is no longer limited to one enabled sync per environment;\nwhen the pack lapses, each environment is trimmed back to its most recently\nrun sync."},"disableOverage":{"type":"boolean","description":"When true, monthly overage is not permitted: once the month's loaded rows\nreach the allowance, syncs cannot be enabled until the next month. Trial\nlicenses enforce this unless the field is explicitly false. Not consulted\nwhile a historical-load window (`histLoadEndDate`) is active."},"histLoadEndDate":{"type":"string","format":"date-time","description":"End of the historical-load window granted with a volume pack. While this date\nis in the future and `volumeAddOn` is above 0, the monthly cap is raised to a\nplatform-configured multiple (50 by default) of `volume` plus `volumeAddOn` —\nstill checked per calendar month — and `disableOverage` is not consulted.\nAbsent when no window is active."}}},"api":{"type":"object","description":"API Builder plan entitlements and invocation limits.","required":["builder","enablePricing","disableOverages","numInvocations","apimNumInvocations","numAddOnInvocations"],"properties":{"builder":{"type":"boolean","description":"When true, the plan entitles the account to use API Builder (building custom HTTP APIs on the Celigo platform)."},"enablePricing":{"type":"boolean","description":"When true, API pricing and billing features are enabled."},"disableOverages":{"type":"boolean","description":"When true, API overage charges are disabled."},"numInvocations":{"type":"integer","description":"Base number of API calls per month included with the plan."},"apimNumInvocations":{"type":"integer","description":"Base number of APIM API calls per month included with the plan."},"numAddOnInvocations":{"type":"integer","description":"Additional API calls per month the customer purchased as add-ons."}}},"edi":{"type":"object","description":"EDI (Electronic Data Interchange) plan entitlements.","required":["enabled","tier","numTradingPartners","numAddOnTradingPartners","numDocumentTypes","numAddOnDocumentTypes"],"properties":{"enabled":{"type":"boolean","description":"When true, the plan entitles the account to use EDI (B2B Manager)."},"onboarded":{"type":"boolean","description":"When true, the account has completed EDI onboarding."},"tier":{"type":"string","description":"B2B Manager subscription tier.","enum":["free","basic","advanced","expert"]},"disableOverage":{"type":"boolean","description":"When true, EDI overage charges are disabled."},"numTradingPartners":{"type":"integer","description":"Base number of EDI trading partners included with the plan."},"numAddOnTradingPartners":{"type":"integer","description":"Additional EDI trading partners the customer purchased as add-ons."},"numDocumentTypes":{"type":"integer","description":"Base number of EDI document types included with the plan."},"numAddOnDocumentTypes":{"type":"integer","description":"Additional EDI document types the customer purchased as add-ons."},"labelPrinting":{"type":"object","description":"EDI label-printing (BarTender) entitlements. Absent when the\nlabel-printing capability is unavailable platform-wide.","required":["enabled","onboarded","numLabels","numAddOnLabels"],"properties":{"enabled":{"type":"boolean","description":"When true, the plan entitles the account to use EDI label printing."},"onboarded":{"type":"boolean","description":"When true, the account has completed label-printing onboarding."},"numLabels":{"type":"integer","description":"Base weekly label allowance included with the plan. The effective\nweekly cap is `numLabels` plus `numAddOnLabels`."},"numAddOnLabels":{"type":"integer","description":"Additional weekly label allowance the customer purchased as add-ons."}}}}},"logging":{"type":"object","description":"Execution logging plan entitlements. A plan that does not entitle execution\nlogging carries only `enabled: false`; the cap fields appear when the plan\ndefines them. Trial accounts carry the trial's entitlement until `trialEndDate`;\nan account that does not convert then reads `enabled: false` (or no block).","required":["enabled"],"properties":{"enabled":{"type":"boolean","description":"When true, the plan entitles the account to use execution logging."},"maxLogMode":{"type":"string","description":"Maximum persistent execution-log mode (`flow.logging.mode`) the plan allows;\npresent when the plan defines this cap. A flow mode above this level is\noutside the entitlement regardless of the account's Store payloads consent.\nTime-boxed debug windows (`flow.logging.debugUntil`) are not governed by\nthis cap: they are governed by `enabled`, `maxDebugDuration`, and the\naccount's Store payloads consent.","enum":["basic","detailed"]},"maxDebugDuration":{"type":"integer","description":"Maximum time (in minutes) the plan allows a user to enable debug logging for. Present when the plan defines this cap."},"maxRetentionPeriod":{"type":"integer","description":"Maximum execution log retention period (in days) the plan allows. Present when the plan defines this cap."}}},"storage":{"type":"object","description":"File-storage entitlements. Always present on account-level licenses\n(`type` is `integrator`, `endpoint`, or `platform`); absent on\nconnector and Integration App licenses.","required":["maxAllowedUsage","disableOverage"],"properties":{"maxAllowedUsage":{"type":"number","minimum":0,"description":"Maximum file-storage usage the plan allows, in GB — the same\nquota `GET /v1/storage/usage` reports in bytes as\n`maxAllowedUsage`. Reported as 1 for accounts without an\nexplicit storage entitlement."},"disableOverage":{"type":"boolean","description":"When true, file-storage overage charges are disabled."}}}},"if":{"properties":{"type":{"const":"platform"}}},"then":{"required":["platform"]},"else":{"if":{"properties":{"type":{"const":"integrator"}}},"then":{"required":["integrator"]},"else":{"if":{"properties":{"type":{"const":"endpoint"}}},"then":{"required":["endpoint"]},"else":{"if":{"properties":{"type":{"enum":["connector","integrationApp","integrationAppChild"]}}},"then":{"required":["_connectorId"]}}}}},"LicenseEntitlementCounts":{"type":"object","description":"Entitlement counts for a given environment. For each resource type, a\n`num*` field holds the base plan count and a `numAddOn*` field holds\nadditional capacity purchased as add-ons.","required":["numEndpoints","numAddOnEndpoints","numFlows","numAddOnFlows","numAgents","numAddOnAgents"],"properties":{"numEndpoints":{"type":"integer","description":"Base number of endpoints (distinct connected applications) included with the plan, per\nenvironment. Whether the count is taken from endpoints in use or from endpoints invoked\nin the billing period depends on the account's pricing model."},"numAddOnEndpoints":{"type":"integer","description":"Additional endpoints the customer purchased as add-ons."},"numFlows":{"type":"integer","description":"Base flow entitlement included with the plan, per environment. Whether it caps enabled\nflows or the distinct flows run in a billing period — and whether reaching it blocks or\nonly notifies — depends on the account's pricing model."},"numAddOnFlows":{"type":"integer","description":"Additional flows the customer purchased as add-ons."},"numTradingPartners":{"type":"integer","description":"Base number of trading partners included with the plan."},"numAddOnTradingPartners":{"type":"integer","description":"Additional trading partners the customer purchased as add-ons."},"numAgents":{"type":"integer","description":"Base number of on-premise agents included with the plan."},"numAddOnAgents":{"type":"integer","description":"Additional on-premise agents the customer purchased as add-ons."}}}}}}
```

## Get licenses (subscription)

> Returns one account-level license (\`type\` is \`platform\`, \`integrator\`, or\
> \`endpoint\`) plus zero or more \`connector\`, \`integrationApp\`, or\
> \`integrationAppChild\` licenses, oldest first.\
> \
> Pass \`type=io\` to receive only the account-level license as a single\
> object (not an array) with \`\_userId\` added — use this when you need the\
> subscription plan without filtering the list yourself.

```json
{"openapi":"3.2.0","info":{"title":"Subscription & Entitlements","version":"1.0.0"},"tags":[{"name":"Subscription & Entitlements","description":"Subscription (license) information and entitlement usage for the current account, including plan details, feature limits, and consumption metrics.\n\n## License schema\n\n{% openapi-schemas spec=\"subscription\" schemas=\"License\" grouped=\"true\" %}"}],"servers":[{"url":"https://api.integrator.io","description":"Production (US / default region)"},{"url":"https://api.eu.integrator.io","description":"Production (EU region)"},{"url":"https://api.au.integrator.io","description":"Production (AU region)"},{"url":"https://api.ca.integrator.io","description":"Production (CA region)"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"License":{"type":"object","required":["_id","type","created","lastModified"],"description":"Subscription plan or connector/Integration App license. Fields describe\nwhat the plan **entitles**, not what is configured on the account.","properties":{"_id":{"type":"string","format":"objectId","readOnly":true,"description":"License identifier."},"_userId":{"type":"string","format":"objectId","readOnly":true,"description":"Account owner the license belongs to. Present only on the single-object\nresponse of `GET /v1/licenses?type=io`; absent from the array response."},"created":{"type":"string","format":"date-time","readOnly":true,"description":"License creation timestamp."},"lastModified":{"type":"string","format":"date-time","readOnly":true,"description":"Last modification timestamp."},"expires":{"type":"string","format":"date-time","description":"License expiration timestamp."},"type":{"type":"string","description":"License type (subscription category). Only the account-level license describes the full subscription plan.","enum":["integrator","platform","endpoint","connector","integrationApp","integrationAppChild"]},"cdc":{"type":"boolean","description":"When true, the account is licensed for CDC (change data capture) features."},"tier":{"type":"string","description":"Subscription tier name — the plan level the account is on. On `platform` licenses a year\nmarker in the name identifies the plan generation; the rest of the name is free-form\n(packages, custom names)."},"supportTier":{"type":"string","description":"Support plan level.","enum":["essential","preferred","premier"]},"trialEndDate":{"type":"string","format":"date-time","description":"Trial end timestamp. Remains populated after the trial ends with the original expiration date."},"_connectorId":{"type":"string","format":"objectId","description":"Connector id. Present on `connector`, `integrationApp`, and `integrationAppChild` licenses."},"_integrationId":{"type":"string","format":"objectId","description":"Integration id. Present on `connector`, `integrationApp`, and `integrationAppChild` licenses."},"_editionId":{"type":"string","format":"objectId","description":"Edition id — present on `integrationApp` and `integrationAppChild` licenses."},"_parentId":{"type":"string","format":"objectId","description":"Parent license id — present only on `integrationAppChild` licenses. References the parent `integrationApp` license."},"opts":{"type":"object","description":"Connector/license options (connector edition, add-on licenses, etc.). Present only on connector-specific licenses."},"resumable":{"type":"boolean","readOnly":true,"description":"When true, the license/account is eligible for self-service resume after suspension."},"disableOverage":{"type":"boolean","description":"When true, overage charges are disabled for this account."},"requestUserToMigrateSandbox":{"type":"boolean","description":"When true, the user should be prompted to migrate legacy sandbox data to environments."},"endpoint":{"type":"object","description":"Entitlements for endpoint-style licenses. Present only when `type` is `endpoint`.","properties":{"production":{"$ref":"#/components/schemas/LicenseEntitlementCounts"},"numEnvironments":{"type":"integer","description":"Maximum number of environments the plan allows."}}},"integrator":{"type":"object","description":"Entitlements for integrator-style licenses. Present only when `type` is `integrator`.","properties":{"production":{"$ref":"#/components/schemas/LicenseEntitlementCounts"},"numEnvironments":{"type":"integer","description":"Maximum number of environments the plan allows."}}},"platform":{"type":"object","description":"Entitlements for platform-style licenses. Present only when `type` is `platform`.","properties":{"production":{"$ref":"#/components/schemas/LicenseEntitlementCounts"},"numEnvironments":{"type":"integer","description":"Maximum number of environments the plan allows."},"apiManagement":{"type":"boolean","description":"When true, the platform plan includes API Management."}}},"sso":{"type":"boolean","description":"When true, the plan entitles the account to use SSO (Single Sign-On)."},"scim":{"type":"boolean","description":"When true, the plan entitles the account to provision users through SCIM.\nDerived from the SCIM add-on together with `sso` — reads false whenever the\nplan does not also entitle SSO. Present on account-level licenses."},"van":{"type":"boolean","description":"When true, the plan entitles the account to use VAN (Value Added Network) for EDI."},"lookupCache":{"type":"boolean","description":"When true, the plan entitles the account to use Lookup Caches (in-memory lookups)."},"abstractFlows":{"type":"boolean","description":"When true, the plan entitles the account to use Abstract Flows (multi-instance templates)."},"apiManagement":{"type":"boolean","description":"When true, the plan entitles the account to use API Management (APIM)."},"concurrency":{"type":"integer","description":"Maximum number of concurrent flow executions the plan allows."},"maxAllowedDataRetention":{"type":"integer","description":"Maximum data retention period (in days) the plan allows."},"auditLogRetentionYears":{"type":"integer","description":"Maximum audit log retention (in years) the plan allows."},"aiConversationsPrepaidBalance":{"type":"number","description":"Remaining prepaid credit balance for Celigo's AI assistant.\nCustomers purchase credits up front and usage costs are deducted\nas they interact with the assistant."},"aiAgentsPrepaidBalance":{"type":"number","description":"Remaining prepaid credit balance for AI Agents — LLM/AI capabilities\nused within flows, APIs, and automations (e.g., AI-powered transforms,\nhooks). Customers purchase credits up front and usage costs are\ndeducted as AI agents run. This balance is separate from the AI\nassistant's credits (`aiConversationsPrepaidBalance`)."},"topics":{"type":"object","description":"Event Streams (topics) entitlements. Present on `endpoint` and `platform`\nlicenses; a plan without Event Streams carries only `enabled: false`, and the\ntwo limits appear once `enabled` is true.","required":["enabled"],"properties":{"enabled":{"type":"boolean","description":"When true, the plan entitles the account to create topics and use Event Streams."},"topicsAllowed":{"type":"integer","minimum":0,"description":"Maximum number of topics the account may hold. Enforced when a topic is\ncreated or restored from the recycle bin."},"retentionCeilingDays":{"type":"integer","minimum":1,"maximum":90,"description":"Longest message retention (in days) a topic may be configured with. Trial\naccounts read a lower ceiling than paid plans."}}},"lookupCacheUsage":{"type":"object","description":"Monthly lookup-cache unit entitlement; every read and write against a lookup\ncache consumes units. Present on `endpoint` and `platform` licenses whose plan\nincludes lookup-cache units. Compare with `lookupCacheUsage.numUnits` on\n`GET /v1/licenseEntitlementUsage` for consumption.","required":["numUnits","numAddOnUnits"],"properties":{"numUnits":{"type":"integer","minimum":0,"description":"Base number of lookup-cache units per month included with the plan."},"numAddOnUnits":{"type":"integer","minimum":0,"description":"Additional lookup-cache units per month the customer purchased as add-ons."}}},"fileserver":{"type":"object","description":"File server entitlement — running a Celigo-hosted SFTP server through\n`/v1/mft/fileserver`. Present on account-level licenses once the add-on has\nbeen provisioned; absent otherwise.","required":["enabled"],"properties":{"enabled":{"type":"boolean","description":"When true, the plan entitles the account to run a Celigo-hosted SFTP file server."},"maxAccounts":{"type":"integer","minimum":0,"description":"Maximum number of partner accounts that may connect to each environment's\nfile server. A value of 0 blocks every partner connection."},"maxConcurrentSessionsPerAccount":{"type":"integer","minimum":0,"description":"Maximum concurrent sessions each partner account may hold on the file\nserver. A value of 0 blocks new sessions."}}},"filesql":{"type":"object","description":"Storage Query entitlement — running SQL over files in Celigo Storage through\n`POST /v1/storage/query`. Present on account-level licenses once the add-on has\nbeen provisioned; absent otherwise.","required":["enabled"],"properties":{"enabled":{"type":"boolean","description":"When true, the account may submit storage queries. When false or when the\nblock is absent, every `/v1/storage/query` route answers\n`403 STORAGE_QUERY_NOT_ENTITLED`."}}},"di":{"type":"object","description":"Data Ingestion (Celigo Sync) entitlements. Every paid edition includes a base\nallowance — one enabled sync per environment and a monthly loaded-row volume —\nand a Data Ingestion volume pack adds capacity on top of it. A free trial\ncarries the Enterprise-equivalent allowance for its duration; the free plan\nafter the trial has no Data Ingestion.","required":["enabled","volume","volumeAddOn","disableOverage"],"properties":{"enabled":{"type":"boolean","description":"When true, the plan entitles the account to enable and run Data Ingestion syncs."},"volume":{"type":"integer","description":"Monthly loaded-row allowance included with the edition. Without the add-on,\ncrossing it lets the running job finish and disables the sync from its next\nrun until the next month."},"volumeAddOn":{"type":"integer","description":"Additional monthly loaded rows purchased as a Data Ingestion volume pack. With\na pack the account is no longer limited to one enabled sync per environment;\nwhen the pack lapses, each environment is trimmed back to its most recently\nrun sync."},"disableOverage":{"type":"boolean","description":"When true, monthly overage is not permitted: once the month's loaded rows\nreach the allowance, syncs cannot be enabled until the next month. Trial\nlicenses enforce this unless the field is explicitly false. Not consulted\nwhile a historical-load window (`histLoadEndDate`) is active."},"histLoadEndDate":{"type":"string","format":"date-time","description":"End of the historical-load window granted with a volume pack. While this date\nis in the future and `volumeAddOn` is above 0, the monthly cap is raised to a\nplatform-configured multiple (50 by default) of `volume` plus `volumeAddOn` —\nstill checked per calendar month — and `disableOverage` is not consulted.\nAbsent when no window is active."}}},"api":{"type":"object","description":"API Builder plan entitlements and invocation limits.","required":["builder","enablePricing","disableOverages","numInvocations","apimNumInvocations","numAddOnInvocations"],"properties":{"builder":{"type":"boolean","description":"When true, the plan entitles the account to use API Builder (building custom HTTP APIs on the Celigo platform)."},"enablePricing":{"type":"boolean","description":"When true, API pricing and billing features are enabled."},"disableOverages":{"type":"boolean","description":"When true, API overage charges are disabled."},"numInvocations":{"type":"integer","description":"Base number of API calls per month included with the plan."},"apimNumInvocations":{"type":"integer","description":"Base number of APIM API calls per month included with the plan."},"numAddOnInvocations":{"type":"integer","description":"Additional API calls per month the customer purchased as add-ons."}}},"edi":{"type":"object","description":"EDI (Electronic Data Interchange) plan entitlements.","required":["enabled","tier","numTradingPartners","numAddOnTradingPartners","numDocumentTypes","numAddOnDocumentTypes"],"properties":{"enabled":{"type":"boolean","description":"When true, the plan entitles the account to use EDI (B2B Manager)."},"onboarded":{"type":"boolean","description":"When true, the account has completed EDI onboarding."},"tier":{"type":"string","description":"B2B Manager subscription tier.","enum":["free","basic","advanced","expert"]},"disableOverage":{"type":"boolean","description":"When true, EDI overage charges are disabled."},"numTradingPartners":{"type":"integer","description":"Base number of EDI trading partners included with the plan."},"numAddOnTradingPartners":{"type":"integer","description":"Additional EDI trading partners the customer purchased as add-ons."},"numDocumentTypes":{"type":"integer","description":"Base number of EDI document types included with the plan."},"numAddOnDocumentTypes":{"type":"integer","description":"Additional EDI document types the customer purchased as add-ons."},"labelPrinting":{"type":"object","description":"EDI label-printing (BarTender) entitlements. Absent when the\nlabel-printing capability is unavailable platform-wide.","required":["enabled","onboarded","numLabels","numAddOnLabels"],"properties":{"enabled":{"type":"boolean","description":"When true, the plan entitles the account to use EDI label printing."},"onboarded":{"type":"boolean","description":"When true, the account has completed label-printing onboarding."},"numLabels":{"type":"integer","description":"Base weekly label allowance included with the plan. The effective\nweekly cap is `numLabels` plus `numAddOnLabels`."},"numAddOnLabels":{"type":"integer","description":"Additional weekly label allowance the customer purchased as add-ons."}}}}},"logging":{"type":"object","description":"Execution logging plan entitlements. A plan that does not entitle execution\nlogging carries only `enabled: false`; the cap fields appear when the plan\ndefines them. Trial accounts carry the trial's entitlement until `trialEndDate`;\nan account that does not convert then reads `enabled: false` (or no block).","required":["enabled"],"properties":{"enabled":{"type":"boolean","description":"When true, the plan entitles the account to use execution logging."},"maxLogMode":{"type":"string","description":"Maximum persistent execution-log mode (`flow.logging.mode`) the plan allows;\npresent when the plan defines this cap. A flow mode above this level is\noutside the entitlement regardless of the account's Store payloads consent.\nTime-boxed debug windows (`flow.logging.debugUntil`) are not governed by\nthis cap: they are governed by `enabled`, `maxDebugDuration`, and the\naccount's Store payloads consent.","enum":["basic","detailed"]},"maxDebugDuration":{"type":"integer","description":"Maximum time (in minutes) the plan allows a user to enable debug logging for. Present when the plan defines this cap."},"maxRetentionPeriod":{"type":"integer","description":"Maximum execution log retention period (in days) the plan allows. Present when the plan defines this cap."}}},"storage":{"type":"object","description":"File-storage entitlements. Always present on account-level licenses\n(`type` is `integrator`, `endpoint`, or `platform`); absent on\nconnector and Integration App licenses.","required":["maxAllowedUsage","disableOverage"],"properties":{"maxAllowedUsage":{"type":"number","minimum":0,"description":"Maximum file-storage usage the plan allows, in GB — the same\nquota `GET /v1/storage/usage` reports in bytes as\n`maxAllowedUsage`. Reported as 1 for accounts without an\nexplicit storage entitlement."},"disableOverage":{"type":"boolean","description":"When true, file-storage overage charges are disabled."}}}},"if":{"properties":{"type":{"const":"platform"}}},"then":{"required":["platform"]},"else":{"if":{"properties":{"type":{"const":"integrator"}}},"then":{"required":["integrator"]},"else":{"if":{"properties":{"type":{"const":"endpoint"}}},"then":{"required":["endpoint"]},"else":{"if":{"properties":{"type":{"enum":["connector","integrationApp","integrationAppChild"]}}},"then":{"required":["_connectorId"]}}}}},"LicenseEntitlementCounts":{"type":"object","description":"Entitlement counts for a given environment. For each resource type, a\n`num*` field holds the base plan count and a `numAddOn*` field holds\nadditional capacity purchased as add-ons.","required":["numEndpoints","numAddOnEndpoints","numFlows","numAddOnFlows","numAgents","numAddOnAgents"],"properties":{"numEndpoints":{"type":"integer","description":"Base number of endpoints (distinct connected applications) included with the plan, per\nenvironment. Whether the count is taken from endpoints in use or from endpoints invoked\nin the billing period depends on the account's pricing model."},"numAddOnEndpoints":{"type":"integer","description":"Additional endpoints the customer purchased as add-ons."},"numFlows":{"type":"integer","description":"Base flow entitlement included with the plan, per environment. Whether it caps enabled\nflows or the distinct flows run in a billing period — and whether reaching it blocks or\nonly notifies — depends on the account's pricing model."},"numAddOnFlows":{"type":"integer","description":"Additional flows the customer purchased as add-ons."},"numTradingPartners":{"type":"integer","description":"Base number of trading partners included with the plan."},"numAddOnTradingPartners":{"type":"integer","description":"Additional trading partners the customer purchased as add-ons."},"numAgents":{"type":"integer","description":"Base number of on-premise agents included with the plan."},"numAddOnAgents":{"type":"integer","description":"Additional on-premise agents the customer purchased as add-ons."}}}},"responses":{"401-unauthorized":{"description":"Unauthorized. The request lacks a valid bearer token, or the provided token\nfailed to authenticate.\n\nNote: the 401 response is produced by the auth middleware **before** the\nrequest reaches the endpoint handler, so it does **not** follow the\nstandard `{errors: [...]}` envelope. Instead the body is a bare\n`{message: string}` object with no `code`, no `errors` array. Callers\nhandling 401s should key off the HTTP status and the `message` string,\nnot try to destructure an `errors[]`.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable description of the auth failure. Known values:\n- `\"Unauthorized\"` — no `Authorization` header on the request.\n- `\"Bearer Authentication Failed\"` — header present but token\n  is invalid, revoked, or expired."}},"required":["message"]}}}}}},"paths":{"/v1/licenses":{"get":{"summary":"Get licenses (subscription)","operationId":"getLicenses","tags":["Subscription & Entitlements"],"description":"Returns one account-level license (`type` is `platform`, `integrator`, or\n`endpoint`) plus zero or more `connector`, `integrationApp`, or\n`integrationAppChild` licenses, oldest first.\n\nPass `type=io` to receive only the account-level license as a single\nobject (not an array) with `_userId` added — use this when you need the\nsubscription plan without filtering the list yourself.","parameters":[{"name":"type","in":"query","required":false,"description":"Set to `io` to return only the account-level license as a single object.\nAny other value is ignored and the full array is returned.","schema":{"type":"string","enum":["io"]}}],"responses":{"200":{"description":"List of licenses. With `type=io`, a single License object instead of an array.","content":{"application/json":{"schema":{"oneOf":[{"title":"list","description":"Default shape — every license on the account, oldest first.","type":"array","items":{"$ref":"#/components/schemas/License"}},{"title":"single","description":"Shape returned for `?type=io` — the account-level license alone, with `_userId`.","allOf":[{"$ref":"#/components/schemas/License"}]}]}}}},"204":{"description":"The account has no licenses, or `type=io` was requested and the account\nhas no account-level license."},"401":{"$ref":"#/components/responses/401-unauthorized"}}}}}}
```

## Get license entitlement usage

> Returns entitlement usage for the environment the request is made in -- how many resources it\
> is consuming vs. what is entitled. Pair with \`GET /v1/licenses\` for the entitlement limits;\
> the license's pricing model decides what the flow count means.

```json
{"openapi":"3.2.0","info":{"title":"Subscription & Entitlements","version":"1.0.0"},"tags":[{"name":"Subscription & Entitlements","description":"Subscription (license) information and entitlement usage for the current account, including plan details, feature limits, and consumption metrics.\n\n## License schema\n\n{% openapi-schemas spec=\"subscription\" schemas=\"License\" grouped=\"true\" %}"}],"servers":[{"url":"https://api.integrator.io","description":"Production (US / default region)"},{"url":"https://api.eu.integrator.io","description":"Production (EU region)"},{"url":"https://api.au.integrator.io","description":"Production (AU region)"},{"url":"https://api.ca.integrator.io","description":"Production (CA region)"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"LicenseEntitlementUsage":{"type":"object","description":"Entitlement usage information for the account/license, keyed by usage category.","properties":{"flowUsage":{"$ref":"#/components/schemas/FlowUsage"},"endpointUsage":{"$ref":"#/components/schemas/EndpointUsage"},"agentUsage":{"$ref":"#/components/schemas/AgentUsage"},"environmentUsage":{"$ref":"#/components/schemas/EnvironmentUsage"},"ediTradingPartnerUsage":{"$ref":"#/components/schemas/EDITradingPartnerUsage"},"ediDocumentTypeUsage":{"$ref":"#/components/schemas/EDIDocumentTypeUsage"},"ediLabelPrintingUsage":{"$ref":"#/components/schemas/EDILabelPrintingUsage"},"apiUsage":{"type":"object","description":"API invocation counts for the current billing period.","properties":{"ioInvocationCount":{"type":"integer","description":"Number of integrator.io API invocations."},"apimInvocationCount":{"type":"integer","description":"Number of APIM (API Management add-on) invocations."}}},"syncUsage":{"type":"object","description":"Sync-volume entitlement usage.","properties":{"entitlement":{"type":"integer","description":"Provisioned sync entitlement."},"volume":{"type":"integer","description":"Sync volume consumed against the entitlement."}}},"lookupCacheUsage":{"type":"object","description":"Lookup-cache consumption for the current calendar month. Present when the\nplan entitles lookup caches; compare `numUnits` with the license's\n`lookupCacheUsage.numUnits` plus `numAddOnUnits`.","required":["numUnits"],"properties":{"numUnits":{"type":"integer","minimum":0,"description":"Lookup-cache units consumed this month — every read and write against a lookup cache counts."}}},"aiAgentsActionsUsage":{"type":"integer","description":"AI agent actions consumed in the current billing period, including billable\nMCP server invocations (tool calls and resource reads). Metered on production\nusage only."}}},"FlowUsage":{"type":"object","description":"Flow entitlement usage.","properties":{"numEnabled":{"type":"integer","description":"The flow meter for the requesting environment on the account's pricing model. The field\nname reflects its legacy meaning (enabled flows); on plans that meter flow runs it is the\nnumber of distinct flows that ran in the billing period — never a count of executions."},"flows":{"type":"array","description":"Flows contributing to the meter.","items":{"type":"object","properties":{"_id":{"type":"string","format":"objectId","description":"Flow id."},"name":{"type":"string","description":"Flow name."},"isDeleted":{"type":"boolean","description":"When true, the flow has been soft-deleted. Deleted flows may still count toward entitlement until fully purged."},"integration":{"type":"object","description":"Parent integration summary.","properties":{"_id":{"type":"string","format":"objectId","description":"Integration id."},"name":{"type":"string","description":"Integration name."},"isDeleted":{"type":"boolean","description":"When true, the parent integration has been soft-deleted and sits in the recycle bin. Absent while the integration is live."}}}}}}}},"EndpointUsage":{"type":"object","description":"Endpoint entitlement usage for the requesting environment. An endpoint is a connected\napplication, not a connection record: connections that share a Celigo-managed application\nprofile (`assistant`) are one endpoint, HTTP connections linked to an HTTP connector but without\nan `assistant` are grouped by `_httpConnectorId`, generic HTTP connections by `baseURI`,\ndatabases by `rdbms` engine and host, FTP servers by `hostURI` and `port`, and other adaptor\ntypes by their own connection identity. Each `endpoints[]` entry carries the fields it was\ngrouped by.","properties":{"numConsumed":{"type":"integer","description":"Endpoints counted against the entitlement in the requesting environment, one per distinct\nendpoint (see `endpoints`). Which flows bring an endpoint into the count follows the account's\npricing model, as for `flowUsage.numEnabled`: flows that are enabled on plans that meter\nenabled resources, flows that ran in the billing period on plans that meter runs."},"endpoints":{"type":"array","description":"The endpoints being counted, each with the connections that roll up into it.","items":{"type":"object","properties":{"type":{"type":"string","description":"Endpoint adaptor type (e.g., `http`, `rdbms`, `ftp`)."},"assistant":{"type":"string","description":"Application assistant identifier, if the connection uses a Celigo-managed application profile (e.g., `hubspot`, `netsuite`). Connections sharing an assistant are one endpoint."},"_httpConnectorId":{"type":"string","format":"objectId","description":"HTTP connector the endpoint's connections are linked to. Present when `type` is `http`\nand the connections carry `http._httpConnectorId` without an `assistant`; connections\nsharing the connector are one endpoint."},"baseURI":{"type":"string","description":"Base URI that identifies this endpoint for generic HTTP connections (those without an `assistant` or an HTTP connector); connections whose base URIs differ are separate endpoints."},"hostURI":{"type":"string","description":"Server host the endpoint's connections point at. Present when `type` is `ftp`; with\n`port` it is the identity FTP endpoints are grouped by."},"port":{"type":"integer","description":"Server port the endpoint's connections use. Present when `type` is `ftp` and the connections set one."},"rdbms":{"type":"object","description":"Database connection details. Present when `type` is `rdbms`.","properties":{"type":{"type":"string","description":"Database engine (e.g., `snowflake`, `mysql`, `postgresql`)."},"host":{"type":"string","description":"Database host or account identifier."}}},"connections":{"type":"array","description":"Connections contributing to this endpoint's usage.","items":{"type":"object","properties":{"_id":{"type":"string","format":"objectId","description":"Connection id."},"name":{"type":"string","description":"Connection name."},"isDeleted":{"type":"boolean","description":"When true, the connection has been soft-deleted. Deleted connections may still count toward entitlement until fully purged."}}}}}}}}},"AgentUsage":{"type":"object","description":"Agent entitlement usage.","properties":{"numActive":{"type":"integer","description":"Number of active agents."},"agents":{"type":"array","description":"Agents contributing to usage.","items":{"type":"object","properties":{"_id":{"type":"string","format":"objectId","description":"Agent id."},"name":{"type":"string","description":"Agent name."}}}}}},"EnvironmentUsage":{"type":"object","description":"Environment entitlement usage.","properties":{"numEnabled":{"type":"integer","description":"Number of enabled environments."},"environments":{"type":"array","description":"Environments contributing to usage.","items":{"type":"object","properties":{"_id":{"type":"string","format":"objectId","description":"Environment id."},"name":{"type":"string","description":"Environment name."},"_userId":{"type":"string","format":"objectId","description":"Owner user id."},"_envUserId":{"type":"string","format":"objectId","description":"Environment user id."},"description":{"type":"string","description":"Environment description."},"enabled":{"type":"boolean","description":"When true, the environment is enabled and active."},"createdAt":{"type":"string","format":"date-time","readOnly":true,"description":"Environment creation timestamp."},"lastModified":{"type":"string","format":"date-time","readOnly":true,"description":"Last modification timestamp."}}}}}},"EDITradingPartnerUsage":{"type":"object","description":"EDI trading partner entitlement usage (EDI add-on/licensing).","properties":{"numConsumed":{"type":"integer","description":"Number of EDI trading partners consumed."},"tradingPartners":{"type":"array","description":"Trading partners contributing to usage.","items":{"type":"object","properties":{"tradingPartnerName":{"type":"string","description":"Trading partner display name."},"ediProfiles":{"type":"array","description":"EDI profiles associated with this trading partner.","items":{"type":"object","properties":{"id":{"type":"string","format":"objectId","description":"EDI profile id."},"name":{"type":"string","description":"EDI profile name."}}}}}}}}},"EDIDocumentTypeUsage":{"type":"object","description":"EDI document type entitlement usage (EDI add-on/licensing).","properties":{"numConsumed":{"type":"integer","description":"Number of EDI document types consumed."},"documents":{"type":"array","description":"Document types contributing to usage.","items":{"type":"object","properties":{"category":{"type":"string","description":"Normalized document type category (e.g., \"Warehouse Stock Shipping Order\")."},"fileDefinitions":{"type":"array","description":"File definitions in this category.","items":{"type":"object","properties":{"_id":{"type":"string","format":"objectId","description":"File definition id."},"name":{"type":"string","description":"File definition name."}}}}}}}}},"EDILabelPrintingUsage":{"type":"object","description":"EDI label-printing (BarTender) entitlement usage for the current billing week (Monday–Sunday UTC).\nPresent only when the account's license enables label printing; omitted entirely when label\nprinting is disabled platform-wide.","properties":{"numConsumed":{"type":"integer","description":"Labels consumed account-wide this week, summed across every environment — this is the value\nmeasured against the weekly cap. It is not necessarily the sum of `flows[].numConsumed`, since\n`flows[]` covers only the caller's active environment."},"flows":{"type":"array","description":"Per-flow label consumption for the caller's active environment only. A flow is listed here\nonly when it consumed labels this week in the environment the request is scoped to.","items":{"type":"object","properties":{"_id":{"type":"string","format":"objectId","description":"Flow id."},"name":{"type":"string","description":"Flow name. May be an empty string when the flow has been deleted."},"integration":{"type":"object","description":"Parent integration of the flow. Every flow belongs to an integration.","properties":{"_id":{"type":"string","format":"objectId","description":"Integration id."},"name":{"type":"string","description":"Integration name."}}},"numConsumed":{"type":"integer","description":"Labels this flow consumed this week in the caller's active environment."}}}}}}},"responses":{"401-unauthorized":{"description":"Unauthorized. The request lacks a valid bearer token, or the provided token\nfailed to authenticate.\n\nNote: the 401 response is produced by the auth middleware **before** the\nrequest reaches the endpoint handler, so it does **not** follow the\nstandard `{errors: [...]}` envelope. Instead the body is a bare\n`{message: string}` object with no `code`, no `errors` array. Callers\nhandling 401s should key off the HTTP status and the `message` string,\nnot try to destructure an `errors[]`.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable description of the auth failure. Known values:\n- `\"Unauthorized\"` — no `Authorization` header on the request.\n- `\"Bearer Authentication Failed\"` — header present but token\n  is invalid, revoked, or expired."}},"required":["message"]}}}}}},"paths":{"/v1/licenseEntitlementUsage":{"get":{"summary":"Get license entitlement usage","operationId":"getLicenseEntitlementUsage","tags":["Subscription & Entitlements"],"description":"Returns entitlement usage for the environment the request is made in -- how many resources it\nis consuming vs. what is entitled. Pair with `GET /v1/licenses` for the entitlement limits;\nthe license's pricing model decides what the flow count means.","responses":{"200":{"description":"Entitlement usage","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LicenseEntitlementUsage"}}}},"401":{"$ref":"#/components/responses/401-unauthorized"}}}}}}
```

## Get historic label-printing usage

> Returns account-wide EDI label-printing (BarTender) consumption bucketed into the trailing\
> 12 ISO weeks (Monday–Sunday UTC), most-recent week first. Each week's total sums every flow and\
> environment under the account. Pair with the \`ediLabelPrintingUsage\` block on\
> \`GET /v1/licenseEntitlementUsage\` for the current week's per-flow breakdown.

```json
{"openapi":"3.2.0","info":{"title":"Subscription & Entitlements","version":"1.0.0"},"tags":[{"name":"Subscription & Entitlements","description":"Subscription (license) information and entitlement usage for the current account, including plan details, feature limits, and consumption metrics.\n\n## License schema\n\n{% openapi-schemas spec=\"subscription\" schemas=\"License\" grouped=\"true\" %}"}],"servers":[{"url":"https://api.integrator.io","description":"Production (US / default region)"},{"url":"https://api.eu.integrator.io","description":"Production (EU region)"},{"url":"https://api.au.integrator.io","description":"Production (AU region)"},{"url":"https://api.ca.integrator.io","description":"Production (CA region)"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"EDILabelPrintingUsageSummary":{"type":"object","description":"Historic weekly EDI label-printing (BarTender) consumption, account-wide across all flows and\nenvironments. Covers the trailing 12 ISO weeks (Monday–Sunday UTC).","required":["weeks"],"properties":{"weeks":{"type":"array","description":"Weekly totals, most-recent week first. Always dense over the 12-week window — a week with no\nconsumption is returned with `numConsumed: 0`. Empty when label printing is disabled for the\naccount.","items":{"type":"object","required":["weekStart","weekEnd","numConsumed"],"properties":{"weekStart":{"type":"string","format":"date-time","description":"Start of the ISO week, Monday 00:00:00.000 UTC."},"weekEnd":{"type":"string","format":"date-time","description":"End of the ISO week, Sunday 23:59:59.999 UTC."},"numConsumed":{"type":"integer","description":"Labels consumed account-wide during the week."}}}}}}},"responses":{"401-unauthorized":{"description":"Unauthorized. The request lacks a valid bearer token, or the provided token\nfailed to authenticate.\n\nNote: the 401 response is produced by the auth middleware **before** the\nrequest reaches the endpoint handler, so it does **not** follow the\nstandard `{errors: [...]}` envelope. Instead the body is a bare\n`{message: string}` object with no `code`, no `errors` array. Callers\nhandling 401s should key off the HTTP status and the `message` string,\nnot try to destructure an `errors[]`.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable description of the auth failure. Known values:\n- `\"Unauthorized\"` — no `Authorization` header on the request.\n- `\"Bearer Authentication Failed\"` — header present but token\n  is invalid, revoked, or expired."}},"required":["message"]}}}}}},"paths":{"/v1/ediLabelPrinting/usage/summary":{"get":{"summary":"Get historic label-printing usage","operationId":"getEDILabelPrintingUsageSummary","tags":["Subscription & Entitlements"],"description":"Returns account-wide EDI label-printing (BarTender) consumption bucketed into the trailing\n12 ISO weeks (Monday–Sunday UTC), most-recent week first. Each week's total sums every flow and\nenvironment under the account. Pair with the `ediLabelPrintingUsage` block on\n`GET /v1/licenseEntitlementUsage` for the current week's per-flow breakdown.","responses":{"200":{"description":"Historic weekly label-printing usage","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EDILabelPrintingUsageSummary"}}}},"401":{"$ref":"#/components/responses/401-unauthorized"}}}}}}
```

## Get historical monthly entitlement usage

> Returns historical monthly usage for accounts whose pricing model meters flow runs (platform\
> licenses), newest month first; the current month's row can carry null usage until the meter\
> has processed. Useful for month-by-month trend analysis of usage vs. allocation. Not available\
> on plans that do not store monthly usage (endpoint and integrator licenses).

```json
{"openapi":"3.2.0","info":{"title":"Subscription & Entitlements","version":"1.0.0"},"tags":[{"name":"Subscription & Entitlements","description":"Subscription (license) information and entitlement usage for the current account, including plan details, feature limits, and consumption metrics.\n\n## License schema\n\n{% openapi-schemas spec=\"subscription\" schemas=\"License\" grouped=\"true\" %}"}],"servers":[{"url":"https://api.integrator.io","description":"Production (US / default region)"},{"url":"https://api.eu.integrator.io","description":"Production (EU region)"},{"url":"https://api.au.integrator.io","description":"Production (AU region)"},{"url":"https://api.ca.integrator.io","description":"Production (CA region)"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"MonthlyUsage":{"type":"object","description":"Month-by-month usage vs allocation for a billing period.","properties":{"year":{"type":"integer","description":"Calendar year."},"month":{"type":"integer","minimum":1,"maximum":12,"description":"Calendar month (1-indexed — 1 = January, 12 = December)."},"usage":{"type":"object","description":"Actual usage numbers for the month.","properties":{"flows":{"type":"integer","description":"Flows in use during the month."},"endpoints":{"type":"integer","description":"Endpoints in use during the month."},"agents":{"type":"integer","description":"On-premise agents in use during the month."},"apiInvocationCount":{"type":"integer","description":"API invocations consumed during the month."},"diVolume":{"type":"integer","description":"Data Ingestion (Celigo Sync) rows loaded during the month."}}},"allocated":{"type":"object","description":"Allocated/entitled numbers for the month.","properties":{"flows":{"type":"integer","description":"Flow allocation for the month (base plan plus add-ons)."},"endpoints":{"type":"integer","description":"Endpoint allocation for the month (base plan plus add-ons)."},"agents":{"type":"integer","description":"On-premise agent allocation for the month (base plan plus add-ons)."},"apiInvocation":{"type":"integer","description":"API invocation allocation for the month."}}}}}},"responses":{"401-unauthorized":{"description":"Unauthorized. The request lacks a valid bearer token, or the provided token\nfailed to authenticate.\n\nNote: the 401 response is produced by the auth middleware **before** the\nrequest reaches the endpoint handler, so it does **not** follow the\nstandard `{errors: [...]}` envelope. Instead the body is a bare\n`{message: string}` object with no `code`, no `errors` array. Callers\nhandling 401s should key off the HTTP status and the `message` string,\nnot try to destructure an `errors[]`.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable description of the auth failure. Known values:\n- `\"Unauthorized\"` — no `Authorization` header on the request.\n- `\"Bearer Authentication Failed\"` — header present but token\n  is invalid, revoked, or expired."}},"required":["message"]}}}}}},"paths":{"/v1/historicalMonthlyUsage":{"get":{"summary":"Get historical monthly entitlement usage","operationId":"getHistoricalMonthlyUsage","tags":["Subscription & Entitlements"],"description":"Returns historical monthly usage for accounts whose pricing model meters flow runs (platform\nlicenses), newest month first; the current month's row can carry null usage until the meter\nhas processed. Useful for month-by-month trend analysis of usage vs. allocation. Not available\non plans that do not store monthly usage (endpoint and integrator licenses).","responses":{"200":{"description":"Historical monthly usage","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MonthlyUsage"}}}}},"401":{"$ref":"#/components/responses/401-unauthorized"}}}}}}
```

## Get usage records (legacy)

> Returns historical usage records for the current account (legacy usage series).\
> \
> The response is an array of monthly records with a duration field (\`milliseconds\`).

```json
{"openapi":"3.2.0","info":{"title":"Subscription & Entitlements","version":"1.0.0"},"tags":[{"name":"Subscription & Entitlements","description":"Subscription (license) information and entitlement usage for the current account, including plan details, feature limits, and consumption metrics.\n\n## License schema\n\n{% openapi-schemas spec=\"subscription\" schemas=\"License\" grouped=\"true\" %}"}],"servers":[{"url":"https://api.integrator.io","description":"Production (US / default region)"},{"url":"https://api.eu.integrator.io","description":"Production (EU region)"},{"url":"https://api.au.integrator.io","description":"Production (AU region)"},{"url":"https://api.ca.integrator.io","description":"Production (CA region)"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"UsageRecord":{"type":"object","description":"A monthly usage record returned by `GET /v1/usage`.","properties":{"year":{"type":"integer","description":"Calendar year."},"month":{"type":"integer","minimum":0,"maximum":11,"description":"Calendar month (0-indexed — 0 = January, 11 = December). Differs from `historicalMonthlyUsage` which uses 1-indexed months."},"milliseconds":{"type":"integer","description":"Usage duration value in milliseconds (legacy metric)."}}}},"responses":{"401-unauthorized":{"description":"Unauthorized. The request lacks a valid bearer token, or the provided token\nfailed to authenticate.\n\nNote: the 401 response is produced by the auth middleware **before** the\nrequest reaches the endpoint handler, so it does **not** follow the\nstandard `{errors: [...]}` envelope. Instead the body is a bare\n`{message: string}` object with no `code`, no `errors` array. Callers\nhandling 401s should key off the HTTP status and the `message` string,\nnot try to destructure an `errors[]`.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable description of the auth failure. Known values:\n- `\"Unauthorized\"` — no `Authorization` header on the request.\n- `\"Bearer Authentication Failed\"` — header present but token\n  is invalid, revoked, or expired."}},"required":["message"]}}}}}},"paths":{"/v1/usage":{"get":{"summary":"Get usage records (legacy)","operationId":"getUsage","tags":["Subscription & Entitlements"],"description":"Returns historical usage records for the current account (legacy usage series).\n\nThe response is an array of monthly records with a duration field (`milliseconds`).","responses":{"200":{"description":"Usage records","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UsageRecord"}}}}},"401":{"$ref":"#/components/responses/401-unauthorized"}}}}}}
```
