{
  "openapi" : "3.0.1",
  "info" : {
    "title" : "m3ter API",
    "description" : "If you are using Postman, you can:\n- Use the **Download** button above to download the m3ter Open API spec JSON file and then import this file as the **m3ter API Collection** into your Workspace. See [Importing the m3ter Open API](https://www.m3ter.com/docs/guides/m3ter-apis/getting-started-with-api-calls#importing-the-m3ter-open-api) in our main user Documentation for details.\n- Copy this link: [m3ter-Template API Collection](https://www.datocms-assets.com/78893/1672846767-m3ter-template-api-collection-postman_collection.json) and use it to import the **m3ter-Template API Collection** into your Workspace. See [Importing the m3ter Template API Collection](https://www.m3ter.com/docs/guides/m3ter-apis/getting-started-with-api-calls#importing-the-m3ter-template-api-collection) in our main user Documentation for details.\n\n---\n\n# Introduction\nThe m3ter platform supports two HTTP-based REST APIs returning JSON encoded responses:\n- The **Ingest API**, which you can use for submitting raw data measurements. *(See the [Submit Measurements](https://www.m3ter.com/docs/api#tag/Measurements/operation/SubmitMeasurements) endpoint in this API Reference.)*\n- The **Config API**, which you can use for configuration and management. *(All other endpoints in this API Reference.)* \n\n## Authentication and Authorization\nOur APIs use an industry-standard authorization protocol known as the OAuth 2.0 specification.\n\nOAuth2 supports several grant types, each designed for a specific use case. m3ter uses the following two grant types:\n  - **Authorization Code**: Used for human login access via the m3ter Console.\n  - **Client Credentials**: Used for machine-to-machine communication and API access.\n\nComplete the following flow for API access:\n\n1. **Create a Service User and add Permissions**: Log in to the m3ter Console, go to **Settings**, **Access** then **Service Users** tab, and create a Service User. To enable API calls, grant the user **Administrator** permissions. \n    \n2. **Generate Access Keys**: In the Console, open the *Overview* page for the Service User by clicking on the name. Generate an **Access Key id** and **Api Secret**. Make sure you copy the **Api Secret** because it is only visible at the time of creation. \n\nSee [Service Authentication](https://www.m3ter.com/docs/guides/authenticating-with-the-platform/service-authentication) for detailed instructions and an example.\n\n3. **Obtain a Bearer Token using Basic Auth**: We implement the OAuth 2.0 Client Credentials Grant authentication flow for Service User Authentication. Submit a request to the m3ter OAuth Client Credentials authentication flow, using your concatenated **Access Key id** and **Api Secret** to obtain a Bearer Token for your Service User. *See examples below.* \n \n4. **Bearer Token Usage**: Use the HTTP 'Authorization' header with the bearer token to authorise all subsequent API requests.  \n\n> Warning: The Bearer Token is valid for 18,000 seconds or 5 hours. When the token has expired, you must obtain a new one.\n\nBelow are two examples for obtaining a Bearer Token using Basic Auth: the first in cURL and the second as a Python script. \n\n### cURL Example\n1. Open your terminal or command prompt.    \n2. Use the following `cURL` command to obtain a Bearer Token:\n\n```bash\ncurl -X POST https://api.m3ter.com/oauth/token \\\n  -H 'Content-Type: application/x-www-form-urlencoded' \\\n  -u your_access_key_id:your_api_secret \\\n  -d 'grant_type=client_credentials'\n```\n\nReplace `your_access_key_id` and `your_api_secret` with your actual **Access Key id** and **Api Secret**.\n\n3.  Run the command, and if successful, it will return a JSON response containing the Bearer Token. The response will look like this:\n\n```json\n{\n  \"access_token\": \"your_bearer_token\",\n  \"token_type\": \"Bearer\",\n  \"expires_in\": 18000\n}\n```\n\nYou can then use the Bearer Token *(the value of `\"access_token\"`)* for subsequent API calls to m3ter.\n\n### Python Example\n1. Install the `requests` library if you haven't already:\n\n```bash\npip install requests\n```\n\n2. Use the following Python script to obtain a Bearer Token:\n\n```python\nimport requests\nimport base64\n\n# Replace these with your Access Key id and Api Secret\naccess_key_id = 'your_access_key_id'\napi_secret = 'your_api_secret'\n\n# Encode the Access Key id and Api Secret in base64 format\ncredentials = base64.b64encode(f'{access_key_id}:{api_secret}'.encode('utf-8')).decode('utf-8')\n\n# Set the m3ter token endpoint URL\ntoken_url = 'https://api.m3ter.com/oauth/token'\n\n# Set the headers for the request\nheaders = {\n    'Authorization': f'Basic {credentials}',\n    'Content-Type': 'application/x-www-form-urlencoded'\n}\n\n# Set the payload for the request\npayload = {\n    'grant_type': 'client_credentials'\n}\n\n# Send the request to obtain the Bearer Token\nresponse = requests.post(token_url, headers=headers, data=payload)\n\n# Check if the request was successful\nif response.status_code == 200:\n    # Extract the Bearer Token from the response\n    bearer_token = response.json()['access_token']\n    print(f'Bearer Token: {bearer_token}')\nelse:\n    print(f'Error: {response.status_code} - {response.text}')\n```\n\nReplace `your_access_key_id` and `your_api_secret` with your actual **Access Key id** and **Api Secret**. \n\n3. Run the script, and if successful, it will print the Bearer Token. You can then use this Bearer Token for subsequent API calls to m3ter.\n\n## Submitting Personally Identifiable Information (PII)\n**IMPORTANT!** Under the [Data Processing Agreement](https://www.m3ter.com/docs/legal/dpa), the only fields permissible for use in submitting any of your end-customer PII data in m3ter are the ``name``, ``address``, and ``emailAddress`` fields on the **Account** entity - see the details for [Create Account](https://www.m3ter.com/docs/api#operation/PostAccount). See also section 4.2 of the [Terms of Service](https://www.m3ter.com/docs/legal/terms-of-service).\n\n## Rate and Payload Limits\n### Config API Request Rate Limits\nSee [Config API Limits](https://www.m3ter.com/docs/guides/m3ter-apis/config-api-limits).\n\n### Data Explorer API Request Rate Limits\nSee [Data Explorer Request Rate Limits](https://www.m3ter.com/docs/guides/m3ter-apis/config-api-limits#date-explorer-request-rate-limits).\n\n### Ingest API Request Rate and Payload Limits\nSee [Ingest API Limits](https://www.m3ter.com/docs/guides/m3ter-apis/ingest-api-limits) for more information.\n\n## Pagination\n**List Endpoints**\nAPI endpoints that have a List resources request support cursor-based pagination - for example, the `List Accounts` request. These List calls support pagination by taking the two parameters `pageSize` and `nextToken`. \n\nThe response of a List API call is a single page list. If the `nextToken` parameter is not supplied, the first page returned contains the newest objects chronologically. Specify a `nextToken` to retrieve the page of older objects that occur immediately after the last object on the previous page.\n\nUse `pageSize` to limit the list results per page, typically this allows up to a maximum of 100 or 200 per page.\n\n**Search Endpoints**\nAPI endpoints that have a Search resources request support cursor-based pagination - for example, the `Search Accounts` request. These Search calls support pagination by taking the two parameters `pageSize` and `fromDocument`.\n\nThe response of a Search API call is a single page list. If the `fromDocument` parameter is not supplied, the first page returned contains the newest objects chronologically. Specify a `fromDocument` to retrieve the page of older objects that occur immediately after the last object on the previous page.\n\nUse `pageSize` to limit the list results per page, typically this allows up to a maximum of 100 or 200 per page. Default is 10.\n\n## API Quick Start\nSee [Getting Started with API Calls](https://www.m3ter.com/docs/guides/m3ter-apis/getting-started-with-api-calls) for detailed guidance on how to use our API to:\n* Create a Service User and add permissions.\n* Generate access keys for the Service User.\n* Use basic authentication to obtain a Bearer Token.\n\nFor further guidance, also see [Creating and Configuring Service Users](https://www.m3ter.com/docs/guides/organization-and-access-management/managing-users/creating-and-configuring-service-users).\n\n## Other Languages\nIf you want to work with the m3ter REST APIs using other languages such as:\n* Python\n* JavaScript\n* C++\n\nPlease see the [Developer Tools](https://www.m3ter.com/docs/guides/developer-tools) topic in our main documentation for information about available SDKs.\n\n\n# Authentication\n<!-- ReDoc-Inject: <security-definitions> -->",
    "version" : "1.0",
    "x-logo" : {
      "url" : "https://console.m3ter.com/m3ter-logo-black.svg"
    }
  },
  "servers" : [ {
    "url" : "https://api.m3ter.com"
  } ],
  "security" : [ {
    "OAuth2" : [ ]
  } ],
  "tags" : [ {
    "name" : "Events",
    "description" : "This section provides Endpoints for operations that allow you to retrieve detailed information about individual Events, list all Events or specific Event Types, and explore dynamic fields available for each Event Type.\n\nEvents encompass specific instances of state changes within the system, such as the creation of a new Prepayment/Commitment for an Account. Each Event is classified under an Event Type framework, providing context about what kind of change occurred to generate the Event.\n\n**Events for Configuration and Billing Entities**\n\nMany Event Types cover common configuration and billing objects, where the Event is generated for a state change of one of these objects - for when the configuration or billing object is **created**, **deleted**, or **updated**. \n\nFor example:\n* configuration.commitment.created\n* configuration.commitment.deleted\n* configuration.commitment.updated\n* configuration.account.created\n* configuration.account.deleted\n* configuration.account.updated\n* billing.bill.created\n* billing.bill.deleted\n* billing.bill.created\n\n**Events for Errors or Failures** \n\nThere are also Event Types for certain kinds of error that can occur:\n\n* For an Integration:\n  * validation\n  * authentication\n  * perform\n  * missing account mapping\n  * disabled\n\n* For a Usage Data Ingest Submission:\n  * validation failure\n\n* For Data Export Jobs:\n  * data export job failure\n\n**Scheduled Events**\n\nIn addition to system-generated Events that occur when a configuration entity undergoes a state change at creation, update, or deletion of the entity, you can use API calls to create and configure *Scheduled Event Configurations*. Scheduled Events are custom Event types, which you can set up by referencing Date/Time fields on configuration and billing entities. See the [ScheduledEventConfigurations](https://www.m3ter.com/docs/api#tag/ScheduledEventConfigurations) section of this API Reference for more details.\n\n**Notifications for Events**\n\nYou can create Notification rules based on Events and these rules can reference and apply calculations to the Event's fields. This allows you to set up customized alerts to be sent out via webhooks when the Event occurs and any conditions you've built into the Notification rule's calculation are satisfied.\n\nSee the [Notifications](https://www.m3ter.com/docs/api#tag/Notifications) section for more details.\n\n**Other Events**\n\nWhen Events occur, they can cause other Events, such as when a Notification is triggered by the Event it is based on. For these Events there are currently two categories:\n* Notification\n* IntegrationEvent\n\nAlso see [Utilizing Events and Notifications](https://www.m3ter.com/docs/guides/utilizing-events-and-notifications) and [Object Definitions and API Calls](https://www.m3ter.com/docs/guides/utilizing-events-and-notifications/object-definitions-and-api-calls) in the m3ter documentation for more guidance.\n"
  }, {
    "name" : "Measurements",
    "description" : "Endpoints for submitting usage data measurements to the m3ter platform:\n- **Directly:** You can use the **Submit Measurements** call to submit raw data measurements directly using the **Ingest API**.\n- **Indirectly:** You can use the platform's file upload service calls to prepare for and submit a file for data ingest using the **Config API**.\n\nTo use the file upload service:\n- First, make a **Generate an upload URL** call to obtain a temporary upload URL and an upload job ID.\n- You can then upload your data measurements file using a `PUT` request using the upload URL as the endpoint.\n- Any errors are reported via the normal [Alerts](https://www.m3ter.com/docs/guides/viewing-and-managing-alerts) service in the Console UI.\n- If any issues occur with a file upload, you can use the upload job ID with other file upload service calls we provide to troubleshoot and resolve issues.\n\n**Note:** You can also perform a File Upload via a Meter's Details page in the m3ter Console using a `CSV` formatted file you've prepared for usage data measurements ingest for the Meter.\n\nIn the m3ter documentation, see also:\n- [Optimizing Measurement Submissions](https://www.m3ter.com/docs/guides/m3ter-apis/ingest-api-limits).\n- [File Upload Service API](https://m3ter.mintlify.app/guides/billing-and-usage-data/submitting-usage-data/file-upload-service-api)\n- [File Uploads for Usage Data by Meter](https://m3ter.mintlify.app/guides/billing-and-usage-data/submitting-usage-data/file-uploads-for-usage-data-by-meter)"
  }, {
    "name" : "Contract",
    "description" : "Endpoints for Contract related operations such as creation, update, list and delete.\n\nContracts are created for Accounts, which are your end-user customers. Contracts can be used for:\n* **Accounts Reporting**. To serve your general accounting operations and processes, you can report on total Contract values for an Account.\n* **Contract Billing**. Various billing entities associated with an Account can  be linked to Contracts on the Account to meet your specific Contract billing use cases. "
  }, {
    "name" : "Counter",
    "description" : "Endpoints for listing, creating, retrieving, updating, or deleting Counters.\n\nYou can create Counters for your m3ter Organization, which can then be used as pricing metrics to apply a unit-based [CounterPricing](https://www.m3ter.com/docs/api#tag/CounterPricing) to Product Plans or Plan Templates for recurring subscription charges on Accounts.\n\nCounters can then be used to post [CounterAdjustments](https://www.m3ter.com/docs/api#tag/CounterAdjustments) on your end-customer Accounts.\n\nAccounts are then billed in accordance with the CounterPricing on Plans attached to the Accounts and for the actual Counter quantities Accounts subscribe to. See [Recurring Charges: Counters](https://www.m3ter.com/docs/guides/recurring-charges-counters) in our main user documentation for more details."
  }, {
    "name" : "BalanceChargeSchedule",
    "description" : "Endpoints for creating/updating/deleting BalanceChargeSchedules.\n\n**NOTE!** The BalanceChargeSchedule feature is available in Beta release version. See [Feature Release Stages](https://www.m3ter.com/docs/guides/getting-started/feature-release-stages) for Beta release definition."
  }, {
    "name" : "Aggregation",
    "description" : "Endpoints for listing, creating, updating, retrieving, or deleting Aggregations.\n\nAn Aggregation links to a Meter and targets a Data Field or Derived Field on the Meter. You define the method of aggregation used to convert the usage data collected by the targeted Meter field into a numerical unit of measurement. \n\nYou can then use the unit of measurement an Aggregation yields as a metric for pricing Product Plans and apply usage-based pricing to your products and services. You might also want to aggregate raw data measures for other purposes, such as to feed into analytical or business performance tools.\n\n**Notes:**\n* **Contrast with Compound Aggregations**. Standard or simple Aggregations of this type, which apply an aggregation method directly to Meter usage data fields, are contrasted with [Compound Aggregations](https://www.m3ter.com/docs/api#tag/CompoundAggregation). A Compound Aggregation typically references one or more simple Aggregations and applies a calculation to them to derive pricing metrics needed to serve more complex usage-based pricing scenarios.\n* **Segmented Aggregations**. Segmented Aggregations allow you to segment the usage data collected by a single Meter. This capability is very useful for implementing some pricing and billing use cases. See [Segmented Aggregations](https://www.m3ter.com/docs/guides/usage-data-aggregations/segmented-aggregations) in our main documentation for more details.\n"
  }, {
    "name" : "StatementJob",
    "description" : "Endpoints for creating, retrieving, listing, and cancelling statement jobs.\n\nStatementJobs are tasks to asynchronously calculate and generate a bill statement. \n\nBill statements are informative backing sheets to invoices. They provide a breakdown of the usage charges that appear on the bill, helping your end customers better understand those charges, and gain a clearer picture of their usage over the billing period.\n\n"
  }, {
    "name" : "PlanTemplate",
    "description" : "Endpoints for listing, creating, updating, retrieving, or deleting PlanTemplates.\n\nUse PlanTemplates to define default values for Plans. These default values control the billing operations you want applied to your products. PlanTemplates avoid repetition in configuration work - many Plans will share settings for billing operations and differ only in the details of their pricing structures.\n\nA PlanTemplate is linked to a Product, and each Plan is a child of a PlanTemplate. "
  }, {
    "name" : "Notifications",
    "description" : "This section provides endpoints for managing Event Notifications.\n\nYou can create Notifications based on system Events generated by the platform. When you base a Notification on a specific Event type, you can include a calculation that references the fields available on that Event type to define precise conditions that must be met for the Notification to be triggered when an Event of that type occurs. In this way, you can set up highly customized Notifications that act as timely alerts to inform you about significant occurrences within your Organization. For instance, if you provide a sign-up bonus to new end-customer Accounts, you can set up a Notification to alert you when an end-customer Account has used up a certain percentage of their bonus credit.\n\nYou can also set up Notifications based on Scheduled Event types you've created for your Organization. See the [ScheduledEventConfigurations](https://www.m3ter.com/docs/api#tag/ScheduledEventConfigurations) section of this API Reference and [Working with Scheduled Events](https://www.m3ter.com/docs/guides/alerts-events-and-notifications/utilizing-events-and-notifications/working-with-scheduled-events) in our user documentation.\n\nFor more details on Event types and their fields, see the [Events](https://www.m3ter.com/docs/api#tag/Events) section.\n\nFor detailed guidance on working with Events and Notifications, refer to the [Utilizing Events and Notifications](https://www.m3ter.com/docs/guides/utilizing-events-and-notifications) section of the m3ter user documentation."
  }, {
    "name" : "LookupTable",
    "description" : "Endpoints for creating/updating/deleting Lookup Tables.\n\nLookup Tables enable you to manage dynamic data mappings that your calculations reference. Use them for currency conversion, pricing tiers, discount rates, and similar scenarios where you require values to change operationally but for calculation logic to remain constant.\n\n**Beta Version!** The Lookup Table feature is currently available in Beta release version. See [Feature Release Stages](https://www.m3ter.com/docs/guides/getting-started/feature-release-stages) for Beta release definition. Lookup Table endpoints will only be available if Lookup Tables have been enabled for your Organization. For more details see [Lookup Tables (Beta)](https://www.m3ter.com/docs/guides/lookup-tables) in our main User documentation."
  }, {
    "name" : "Line Item",
    "description" : "Endpoint for retrieving a list of line items for Bills in an Organization."
  }, {
    "name" : "MeterGroup",
    "description" : "Endpoints for creating/updating/deleting MeterGroups.\n\nMeterGroups represent a logical grouping of Meters. They are not required for billing, but mainly for Analytics purposes. For example: \"show me the total income for all Meters in the 'Events' group\". "
  }, {
    "name" : "ExportDestination",
    "description" : "Endpoints for creating, updating, retrieving, or deleting Data Export Destinations.\n\nBefore you can configure and run either [Export Schedules](https://www.m3ter.com/docs/api#tag/ExportSchedule) or [Ad-Hoc Exports](https://www.m3ter.com/docs/api#tag/ExportAdHoc), you can set up Export Destinations. Currently, two options for setting up Data Export Destinations are available:\n* S3 buckets on your AWS account.\n* Buckets in your Google Cloud Storage account.\n\n**NOTE: Exporting without a Destination?** When a Data Export runs, the data is sent through to the specified Destination. However, the export file is also made available for you to download it locally. You can set up and run Data Exports without defining a Destination. The data is not exported but the compiled export file is made available for downloading locally.\n\n**Preview Version!** The Data Export feature is currently available only in Preview release version. See [Feature Release Stages](https://www.m3ter.com/docs/guides/getting-started/feature-release-stages) for Preview release definition. ExportDestination endpoints will only be available if Data Export has been enabled for your Organization. For more details see [Data Export(Preview)](https://www.m3ter.com/docs/guides/data-exports) in our main User documentation. If you're interested in previewing the Data Export feature, please get in touch with m3ter Support or your m3ter contact."
  }, {
    "name" : "Meter",
    "description" : "Endpoints for listing, creating, updating, retrieving, or deleting Meters.\n\nUse Meters to submit usage data for the consumption of your products and services by end customers. This usage data then becomes the basis for setting up usage-based pricing for your products and services.\n\nExamples of usage data collected in Meters:\n* Number of logins.\n* Duration of session.\n* Amount of data downloaded.\n\nTo collect usage data and ingest it into the platform, you can define two types of fields for Meters:\n- `dataFields` Used to collect raw usage data measures - numeric quantitative data values or non-numeric point data values.\n- `derivedFields` Used to derive usage data measures that are the result of applying a calculation to `dataFields`, `customFields`, or system `Timestamp` fields.\n\nYou can also:\n- Create `customFields` for a Meter, which allows you to attach custom data to the Meter as name/value pairs.\n- Create Global Meters, which are not tied to a specific Product and allow you to collect usage data that will form the basis of usage-based pricing across multiple Products.\n\n**IMPORTANT! - use of PII:** The use of any of your end-customers' Personally Identifiable Information (PII) in m3ter is restricted to a few fields on the **Account** entity. Please ensure that any fields you configure for Meters, such as Data Fields or Derived Fields, do not contain any end-customer PII data. See the [Introduction section](https://m3ter.mintlify.app/api/submitting-pii) above for more details.\n\nSee also:\n- [Reviewing Meter Options](https://m3ter.mintlify.app/guides/usage-data-meters/reviewing-meter-options)."
  }, {
    "name" : "CustomField",
    "description" : "Endpoints for retrieving and updating Custom Fields at the Organization level for all entities that support them.\n\nCustom Fields in m3ter allow you to store custom data in the form of number or string values against m3ter entities in a way that does not directly affect the normal working operation of the m3ter platform. Having this capability to store data in a free-hand fashion can prove very useful in helping you to meet specific usage-based pricing and other operational business use cases.\n\nHowever, you can exploit the values stored on Custom Fields in a more direct way by referencing them in Derived Field and Compound Aggregation calculations. Given the key role these calculations can play when implementing usage-based pricing schema, any Custom Fields you reference will then affect how the platform behaves. Referencing Custom Field values in your calculations offers a much wider scope of options when it comes to resolving complex usage-based pricing use cases.\n\nCustom Fields can be added to the following entities at Organizational level:\n* Organization\n* Account\n* AccountPlan\n* Aggregation\n* Compound Aggregation\n* Meter\n* Product\n* Plan\n* PlanTemplate\n* Contract\n\nThese all follow the same pattern - a new *(optional)* field is available on the entity request and response bodies called \"customFields\" which is a object in this format:\n```\n\"customFields\": {\n\t\t\"exampleCustomField1\": 7.1,\n\t\t\"exampleCustomField2\": \"stringValue\"\n}\n```\nThe value for a Custom Field can be a string or a number.\n\n**Using Custom Field values in calculations:**\n- You can add Custom Fields at two levels - the Organization level and the individual entity level.\n- The Organizational level field provides a default value and *must be added* if you want to also add a Custom Field of the same name at the corresponding individual entity level. If you reference the Custom Field in a calculation, the value for the individual entity level field is used. If no field is defined at individual entity level, then the Organization level field value is used.\n\n**Important: Constraints and Exceptions!**\n\n**Custom Fields at Organization Level**. Currently, you cannot create Custom Fields at the Organization-level for the following enitites:\n* Plan Group\n* Balance\n* Balance Transaction Schedule\n* Balance Charge Schedule\n\nTherefore you cannot reference the Custom Fields values created at the individual entity level for these entities in your Derived Field or Compound Aggregation calculations.\n\n\n**Derived Field Calculations**. You can *only reference Custom Fields* for the following entities:\n* Organization\n* Meter\n* Account\n\nHowever, if you are using Meters belonging to *a specific Product*, that is, not *Global Meters*, you can also reference Custom Fields added to a Product in Derived Field calculations.\n\n**Compound Aggregation Calculations - Meter Custom Fields**. The value of the *Organization level Meter Custom Field will always be used*, even if you have defined a corresponding field at the individual Meter level.\n\nSee [Working with Custom Fields](https://www.m3ter.com/docs/guides/creating-and-managing-products/working-with-custom-fields) in the m3ter documentation for more information."
  }, {
    "name" : "DebitReason",
    "description" : "Endpoints for DebitReason operations such as creation, update, list, and delete. \n\nYou can create DebitReasons for your Organization, and then use them when creating a debit line item on a bill, or applying a product debit to a bill. DebitReasons provide contextual information as to why a debit was applied. "
  }, {
    "name" : "Bill",
    "description" : "Endpoints for billing operations such as creating, updating, listing,downloading, and deleting Bills.\n\nBills are generated for an Account, and are calculated in accordance with the usage-based pricing Plans applied for the Products the Account consumes. These endpoints enable interaction with the billing system, allowing you to obtain billing details and insights into the consumption patterns and charges of your end-customer Accounts."
  }, {
    "name" : "TransactionType",
    "description" : "Endpoints for TransactionType operations such as creation, update, list, retrieve, and delete. \n\nYou can create TransactionTypes for your Organization, which can then be used when creating and updating Balances. Example TransactionTypes: \"Balance Amount\" or \"Add Funds\".\n\nFor details on creating a Transaction amount for a Balance using a TransactionType you've created for your Organization, see the [Create Balance Transaction](https://www.m3ter.com/docs/api#tag/Balances/operation/PostBalanceTransaction) call in the [Balances](https://www.m3ter.com/docs/api#tag/Balances) section of this API Reference."
  }, {
    "name" : "Balances",
    "description" : "Endpoints for creating/retrieving/updating/deleting Balances on Accounts.\n\nWhen you have created a Balance for an Account, you can create a positive or negative Transaction amounts for the Balance. To do this, you must first define Transaction Types for your Organization, and then use one of these Transaction Types when you add a specific Transaction to a Balance - see the [Create TransactionType](https://www.m3ter.com/docs/api#tag/TransactionType/operation/CreateTransactionType) call in the Transaction Type section in this API Reference for more details.\n\nBalances are typically used when a customer prepays an amount to add a credit to their Account, which can then be draw-down against charges due for product or service consumption. You can include options to top-up the original Balance.\n\nExamples of how Balances for end customer Accounts can be used:\n\n* Onboarding Balance/Free Trials. Offering an onboarding incentive to new customers as an initial free credit Balance on their Account. \n\n* Balance as initial commitment. Add a Balance amount to a new customer Account. This acts as an initial commitment, which allows them to use the service and gain an accurate insight into their usage level. \n\n* Managing Customer Satisfaction. Use Balance as credits that will be applied to subsequent Bills as compensation for acknowledged service delivery issues.\n\n* Facilitating Balance Adjustments:\n\t* Apply negative amounts to immediately write-off outstanding Balances.\n\n#### What is the difference between Balances and Commitments/Prepayments?\n\nTo manage credit amounts for your end-customer Accounts, you can use Balances or Commitments/Prepayments. However, these two kinds of credits for Accounts serve different purposes.\n\nCommitments - also referred to as Prepayments - are used for amounts end-customers have agreed to pay for consuming your product or services across a full contract term. A customer might pay the entire or only part of the agreed amount upfront, but ***the commitment or prepayment amount is payable regardless of the actual usage by the customer of your service or product.***\n\nIn contrast, a Balance - often referred to as a Top-Up or Prepaid draw-down - is used when a customer wants to add a credit amount to their Account at any time during the service period or when you as service provider want to add a credit to a customer Account. This Balance credit can then be drawn-down against for billing the Account for usage, minimum spend, standing charges, or recurring charges due. Balances therefore serve payment use cases in a more flexible way, for example to be used for a \"Free Credit\" sign-up scheme you offer to encourage sales or to enhance customer satisfaction by adding credit to an Account to compensate for service delivery issues.\n\nYou can use Commitments/Prepayments and Balances together on Account, and define at Organization or individual Account level the order in which any Balance/Commitment credit on an Account is drawn-down - Balance amounts first or Commitment/Prepayment amounts first.  \n"
  }, {
    "name" : "External Mapping",
    "description" : "Endpoints for managing External Mapping related operations such as creation, update, list and delete.\n\nWhen you integrate your 3rd-party systems with the m3ter platform, a mapping between entities in the local system *(m3ter)* and external systems is constructed. This *External Mapping* is crucial in scenarios where data from external systems is consumed or where data from the local system is to be synchronized with external systems. \n\nWhen you are working to set up your Integrations and want to test or troubleshoot your implementation before going live, you might need to create External Mappings manually and, at a later date, edit or delete them.\n"
  }, {
    "name" : "LookupTableRevisionData",
    "description" : "Endpoints for creating/updating/deleting Data for specific Lookup Table Revisions.\n\nWhen you've added fields to create a data schema for a Lookup Table Revision, you can use upsert operations to create or update the data values for those fields:\n* Use [Upsert LookupTableRevisionData](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/PutLookupTableRevisionData) to upsert some or all of a Revision's field data values.\n* Use [Upsert LookupTableRevisionData Entry](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/PutLookupTableRevisionDataEntry) to upsert an individual Revision field's data value.\n\n**NOTES:**\n* You can only create or update field data values for DRAFT Revisions.\n* You cannot change the field data values for PUBLISHED Revisions.\n\n**Beta Version!** The Lookup Table feature is currently available in Beta release version. See [Feature Release Stages](https://www.m3ter.com/docs/guides/getting-started/feature-release-stages) for Beta release definition. Lookup Table Revision Data endpoints will only be available if Lookup Tables have been enabled for your Organization. For more details see [Lookup Tables (Beta)](https://www.m3ter.com/docs/guides/lookup-tables) in our main User documentation."
  }, {
    "name" : "DataExplorerV2",
    "description" : "Endpoints for querying and filtering Usage data collected for your Organization.\n\n**IMPORTANT: Request Rate Limits for Data Explorer v2!** As part of the Config API, requests made to the Data Explorer v2 are subject to tighter request rate limits:\n- **Generally** 2 requests per second.\n- **Burst** 20 requests per second.\n\nIf you exceed either of these rate limits, requests are throttled and an HTTP 429 (Too Many Requests) error response is returned."
  }, {
    "name" : "AccountPlan",
    "description" : "Endpoints for AccountPlan and AccountPlanGroup related operations such as creation, update, list and delete. \n\n**AccountPlans**\nAn Account represents one of your end-customer accounts. To create an AccountPlan, you attach a Product Plan to an Account. The AccountPlan then determines the charges incurred at billing by your end customer for consuming the Product the Plan is for:\n* **AccountPlan Active/Inactive**. Set start and end dates to define the period the AccountPlan is active for the Account.\n* **AccountPlan per Product**. If an end customer consumes multiple Products, create separate AccountPlans to charge for each Product.\n\n**AccountPlan - Notes and Constraints:**\n* **Multiple AccountPlans:** The default Organization setting imposes the constraint that only one AccountPlan per Product can be active at any one time for an Account.\n* **Overlapping Plans:** If your billing use case requires you to attach more than one Plan to an Account for the same Product at the same time, then you must first enable the **Allow overlapping attached plans** setting for your Organization.\n* If you create a Plan as a custom Plan for a specific Account, you can only use it to create an AccountPlan for that Account.\n\n**AccountPlanGroups**\nPlan Groups are used when you want to apply a minimum spend amount at billing across several of your Products each of which are priced separately - when you create the Plan Group, you define an overall minimum spend and then add any priced Plans you want to include in the Group. To create an AccounPlanGroup, you can attach a Plan Group to an Account that consumes the separate Products which are priced using the included Plans. At billing, the minimum spend you've defined for the Plan Group is applied:\n* **Active AccountPlanGroup**. Set the start and end dates to define the period for which the Plan Group will be active for the Account.\n\n**Plan Group Notes:**\n* You can only add *one Plan for the same Product* to a Plan Group. See the [Plan Group](https://www.m3ter.com/docs/api#tag/PlanGroup) in this API Reference for more details on creating Plan Groups.\n* You can create a *custom Plan Group* for an Account, which means the Plan Group can only be attached to that Account to create an AccountPlanGroup.\n\n**AcountPlanGroup - Notes and Constraints:**\n* **AccountPlanGroup is type of AccountPlan** When you attach a Plan Group to an Account, this creates an AccountPlanGroup. However, the m3ter data model *does not support a separate AccountPlanGroup entity*, and an AccountPlanGroup is a type of AccountPlan where a `planGroupId` is used instead of a `planId` when it's created. See the [Create AccountPlan](https://www.m3ter.com/docs/api#tag/AccountPlan/operation/PostAccountPlan) call in this section and [Attaching Plan Groups to an Account](https://www.m3ter.com/docs/guides/end-customer-accounts/attaching-plan-groups-to-an-account) in our main User Documentation.\n* **Multiple AccountPlan Groups:** You can attach more than one Plan Group to an Account to create multiple AccountPlanGroups, but the default Organization setting preserves the rule that *only one attached Plan per Product can be active at any one time for an Account* is preserved:\n\t* Multiple attached Plan Groups on an Account can have overlapping dates only if none of the Plan Groups contain a Plan belonging to the same Product. If you try to attach a Plan Group to an Account with Plan Groups already attached and:\n\t\t* The new Plan Group contains a Product Plan that also belongs to a Plan Group already attached to the Account.\n\t\t* The dates for these \"matched Plan\" Plan Groups being active for the Account would overlap.\n\t\t* Then you'll receive an error and the attachment will be blocked.\n* **Overlapping Plans in Plan Groups:** If your billing use case requires you to attach more than one Plan Group to an Account and containing Plans for the same Product at the same time, then you must first enable the **Allow overlapping attached plans** setting for your Organization."
  }, {
    "name" : "PlanGroup",
    "description" : "Endpoints for PlanGroup related operations such as creation, update, retrieve, list and delete.\n\nPlanGroups are constructs that group multiple plans together. This enables a unified approach to efficiently handle various uses cases across different plans. For example applying a minimum spend amount at billing, across several of your products or features that are each priced separately. "
  }, {
    "name" : "Credits",
    "description" : "Endpoints for Credit line item related operations such as creation, update, list and delete. These are line items on Bills that are specifically related to Credits.\n\nYou use the Credit Reasons created for your Organization when you create Credit line items for Bills. See [CreditReason](https://www.m3ter.com/docs/api#tag/CreditReason)."
  }, {
    "name" : "CreditReason",
    "description" : "Endpoints for CreditReason operations such as creation, update, list, and delete. \n\nYou can create CreditReasons for your Organization, and then use them when creating a credit line item on a bill, or applying a product credit to a bill. CreditReasons provide contextual information as to why a credit was applied. "
  }, {
    "name" : "CounterPricing",
    "description" : "Endpoints for listing, creating, updating, retrieving, or deleting CounterPricing.\n\nCreate the CounterPricing for a Plan/PlanTemplate using a Counter, and define a unit-based pricing structure for charging end customer Accounts put on the Plan.\n\nSee [Creating Counters and Pricing Plans](https://www.m3ter.com/docs/guides/recurring-charges-counters/creating-counters) for more information."
  }, {
    "name" : "BillJob",
    "description" : "Endpoints for creating, retrieving, listing, and cancelling Bill Jobs.\n\nBill Jobs are critical components in billing management, providing asynchronous mechanisms to calculate and handle bills.\n\nBill Jobs give you the flexibiity to run Bills manually for Accounts to suit different billing management purposes. For example, some historical usage data has come in for an Account and you want to run a Bill for a specific date on that Account to check that the Bill is showing correctly for the charges due on the new usage data."
  }, {
    "name" : "ResourceGroup",
    "description" : "Endpoints for ResourceGroup related operations such as creation, update, list and delete.\n\nResourceGroups are used in the context of Permission Policies, which controls what a User who has been given access to your Organization can and cannot do. For example, you might want to create a Permissions Policy that denies Users the ability to retrieve Meters. \n\nResources are defined as m3ter Resource Identifiers *(MRIs)* in the format:\n\n```\nservice:resource-type/item-type/id\n```\n\nWhere:\n\n* service is a distinct part of the overall m3ter system, and which forms a natural functional grouping, such as \"config\" or \"billing\".\n\n* resource-type is the resource type item accessed - for example: \"Plan\", \"Meter\", \"Bill\"\n\n* item-type is one of:\n\n\t* \"item\" - to specify an individual item.\n\n\t* \"group\" - to specify a resource group.\n\n* id is the resource group id or the resource item id\n\nResources can be assigned to one or more ResourceGroups. For example, a Plan can be assigned to Plan ResourceGroups, a Meter can be assigned to Meter ResourceGroups, and so on. This is useful for cases where you want to create Permission Policies which allow or deny access to a specific subset of resources. For example, grant a user access to only some of the Plans in your Organization.\n\nThis concept of grouping resources applies to every resource in m3ter, including ResourceGroups themselves. This allows you to nest ResourceGroups to support hierarchies of groups.\n\nSee [Understanding, Creating, and Managing Permission Policies](https://www.m3ter.com/docs/guides/managing-organization-and-users/creating-and-managing-permissions) in the m3ter documentation for more information.\n\n**Note: User Resource Groups** You can create a User Resource Group to group resources of type = `user`. You can then retrieve a list of the User Resource Groups a user belongs to. For more details, see the [Retrieve OrgUser Groups](https://www.m3ter.com/docs/api#tag/OrgUsers/operation/GetOrgUserGroups) call in the OrgUsers section."
  }, {
    "name" : "User",
    "description" : "Endpoints for creating/updating Users"
  }, {
    "name" : "ExportSchedule",
    "description" : "Endpoints for creating, updating, retrieving, or deleting Data Export schedules. You can set up an Export Schedule to export one of two types of data from your m3ter Organization - either *Usage data* or *Operational data* for entities.\n\n**NOTE:** You cannot create a single Export Schedule for exporting *both types of data under a single Schedule*.\n\n**Export Destinations** When creating an Export Schedule:\n* You can define one or more Export Destinations - see the [ExportDestination](https://www.m3ter.com/docs/api#tag/ExportDestination) section of this API Reference. When the export runs, the data is sent through to the sepecified Destination. However, the export file is also made available for you to download it locally.\n* You can set up and run Data Exports without defining a Destination. The data is not exported but the compiled export file is made available for downloading locally.\n* For details on downloading an export file, see the [Get Data Export File Download URL](https://www.m3ter.com/docs/api#tag/ExportDestination/operation/GenerateDataExportFileDownloadUrl) endpoint in this API Reference.\n\n**Preview Version!** The Data Export feature is currently available only in Preview release version. See [Feature Release Stages](https://www.m3ter.com/docs/guides/getting-started/feature-release-stages) for Preview release definition. ExportSchedule endpoints will only be available if Data Export has been enabled for your Organization. For more details see [Data Export(Preview)](https://www.m3ter.com/docs/guides/data-exports) in our main User documentation. If you're interested in previewing the Data Export feature, please get in touch with m3ter Support or your m3ter contact.\n"
  }, {
    "name" : "Auth",
    "description" : "Endpoint for retrieving a JSON Web Token (JWT) bearer token for a Service User using the Client Credentials Grant flow. \n\nA Service User represents the automated process you want to grant access to your Organization - that is, as an API user.",
    "externalDocs" : {
      "description" : "Client Credentials Grant",
      "url" : "https://datatracker.ietf.org/doc/html/rfc6749#section-4.4"
    }
  }, {
    "name" : "ScheduledEventConfigurations",
    "description" : "Endpoints for retrieving and managing scheduled Events' configurations.\n\nScheduled Event Configurations define custom Event types that reference Date/Time fields belonging to configuration and billing entities. They therefore provide you with an extra degree of flexibility over and above system-generated Events for setting up Notifications based on Events.\n\nFor more details, see the [Working with Scheduled Events](https://www.m3ter.com/docs/guides/alerts-events-and-notifications/utilizing-events-and-notifications/working-with-scheduled-events) in our Documenation."
  }, {
    "name" : "Integrations",
    "description" : "A suite of endpoints for configuring and managing third party integrations within the m3ter platform. The integration endpoints in this section facilitate various operations such as creating, updating, listing, and deletion of integrations.\n\nm3ter integrations enable seamless data synchronization and mapping with external systems required in core business processes. These processes often include sales, pricing, billing and invoicing, and general finance. \n\nWith m3ter integrations, you can establish robust connections with popular business platforms, enhancing your operational capabilities. For example:\n* Chargebee\n* Salesforce\n* Stripe\n* Netsuite\n* Paddle\n* Xero\n* QuickBooks\n"
  }, {
    "name" : "OrgUsers",
    "description" : "This section contains the endpoints for managing users within an Organization *(OrgUsers)*. These endpoints allow you to retrieve, update, and analyze user data, as well as their associated permissions and user groups.\n\nSee the following topics in the m3ter documentation for further information:\n* [Understanding, Creating, and Managing Permission Policies](https://www.m3ter.com/docs/guides/organization-and-access-management/creating-and-managing-permissions)\n* [Mangaging Access and Users](https://www.m3ter.com/docs/guides/organization-and-access-management/managing-users)"
  }, {
    "name" : "BillConfig",
    "description" : "Endpoints for updating and retreiving the Bill Configuration for an Organization. \nThe Organization represents your company as a direct customer of the m3ter service.\n\nYou can use the **Update BillConfig** endpoint to set a global lock date for **all** Bills - any Bill with a service period end date on or before the set date will be locked and cannot be updated.\n\n**Warning: Ensure all Bills are Approved!** If you try to set a global lock date when there remains Bills in a *Pending* state whose service period end date is on or before the specified lock date, then you'll receive an error."
  }, {
    "name" : "Currency",
    "description" : "Endpoints for Currency operations such as creation, update, list, and delete. Currencies are stored for your Organization, and can then be used to specify currencies on various entities such as plan groups and plan templates.\n\n**IMPORTANT!** \nThe Currencies you want to use in your Organization must be created first.\n\nThe currency you select for your Organization determines the billing currency and overrides any currency settings in your pricing Plans. \nFor example, if the Organization currency is set to USD and a pricing Plan used for an Account is set to GBP, the bill for an Account using that Plan is calculated in GBP, and then each bill line item converted to USD amounts.\n\nCurrency conversion rates are setup in the *OrganizationConfig*. For more details, see [Creating and Managing Currencies](https://www.m3ter.com/docs/guides/organization-and-access-management/viewing-and-editing-organization#creating-and-managing-currencies) in the m3ter Documentation.\n"
  }, {
    "name" : "BalanceTransactionSchedule",
    "description" : "Endpoints for creating/updating/deleting BalanceTransactionSchedules.\n\n**NOTE!** The BalanceTransactionSchedule feature is available in Beta release version. See [Feature Release Stages](https://www.m3ter.com/docs/guides/getting-started/feature-release-stages) for Beta release definition."
  }, {
    "name" : "BillGroupingKey",
    "description" : "Endpoints for Bill Grouping Key operations such as creation, update, list, and delete.\n\nBill Grouping Keys are stored for your Organization, and you can use them to control billing operations. For example, use Bill Grouping Keys to control how Bills for Contracts linked to an Account are generated:\n* Have charges linked to an Account Contract billed exclusively on a separate Bill.\n* Have charges linked to multiple Account Contracts billed collectively on a single Bill."
  }, {
    "name" : "OrganizationConfig",
    "description" : "Endpoints for retrieving or updating the Organization Config.\n\nOrganization represents your company as a direct customer of m3ter. Use Organization configuration to define *Organization-wide* settings. For example:\n- Timezone.\n- Currencies and currency conversions.\n- Billing operations settings, such as:\n\t- Epoch dates to control first billing dates.\n\t- Whether to bill customer accounts in advance/in arrears for standing charge amounts, minimum spend amounts, and commitment fees.\n\nFor other aspects of your Organization setup and configuration, see the following sections in this API Reference:\n* [Custom Fields](https://www.m3ter.com/docs/api#tag/CustomField)\n* [Currencies](https://www.m3ter.com/docs/api#tag/Currency)\n* [Credit Reasons](https://www.m3ter.com/docs/api#tag/CreditReason)\n* [Debit Reason](https://www.m3ter.com/docs/api#tag/DebitReason)\n* [Transaction Types](https://www.m3ter.com/docs/api#tag/TransactionType)\n\nSee also:\n- [Managing your Organization](https://m3ter.mintlify.app/guides/organization-and-access-management/viewing-and-editing-organization).\n\n\n "
  }, {
    "name" : "Product",
    "description" : "Endpoints for listing, creating, updating, retrieving, or deleting Products.\n\nA Product represents the products and services you offer to your end customers. Products act as a container for the Meters, Aggregations, Pricing, and Plans required to implement usage-based and other pricing models for your Organization.  "
  }, {
    "name" : "Pricing",
    "description" : "Endpoints for listing, creating, updating, retrieving, or deleting Pricing.\n\nCreate the Pricing for a Plan/PlanTemplate with usage data Aggregations, and define a usage-based pricing structure for charging end customer Accounts put on the Plan.\n\nSee [Reviewing Pricing Options for Plans and Plan Templates](https://www.m3ter.com/docs/guides/pricing-plans/reviewing-pricing-options-and-pricing-plans) for more information. "
  }, {
    "name" : "Invitations",
    "description" : "Endpoints for creating and retrieving user invitations. Use invitations to invite other people to join your m3ter Organization.\n\nAn invitation sends an email inviting someone to join your Organization. When you set up an invitation, you can:\n*  Assign the required permission policies to control what the invitee can do when they accept the invite and join your Organization.\n*  Set a date for when the invitation will expire.\n*  Set a date for when the invited user's access will expire.\n\nWhen the invitee receives the invitation email:\n* If the invitee is already a m3ter user and has a m3ter account, they can click a link and use their credentials to log into your Organization.\n* If the invitee is not a m3ter user and does not have a m3ter account, they'll be invited to create a m3ter account before logging into your Organization.\n\nSee [Inviting Users to your Organization](https://www.m3ter.com/docs/guides/organization-and-access-management/managing-users#inviting-users-to-your-organization) in our user documentation for more details."
  }, {
    "name" : "PermissionPolicy",
    "description" : "Endpoints for Permission Policy related operations such as creation, update, add and retrieve.\n\nPermission Policies can restrict or grant access to specific resources for both Users *(people)* and Service Users *(automated processes with direct API access)*. This enables you to control precisely what a User can do in your m3ter Organization.\n\nFor more details, see [Understanding, Creating, and Managing Permission Policies](https://www.m3ter.com/docs/guides/organization-and-access-management/creating-and-managing-permissions#permission-policy-statements---available-actions-and-resources) in our main Documentation."
  }, {
    "name" : "Commitments",
    "description" : "Endpoints that manage Commitments *(also known as Prepayments)* in the context of usage-based pricing and billing. A Commitment represents an agreement where the end-customer has agreed to pay a fixed minimum amount throughout the contract period. ***The commitment amount is payable regardless of the actual usage by the customer of your service or product.***\n\nThese endpoints enable the creation, updating, retrieval, and deletion of Commitments. Use them to manage your customer's Commitments and ensure optimal revenue recognition:\n* Specify which type of charges can draw-down against a Commitment amount on an Account at billing: usage, minimum spend, standing charges, or recurring charges.\n* Define overage surcharge percentages, which are applied when the usage charges exceed the agreed Commitment amount within the contract duration.\n\n#### What is the difference between Balances and Commitments/Prepayments?\n\nTo manage credit amounts for your end-customer Accounts, you can use Balances or Commitments/Prepayments. However, these two kinds of credits for Accounts serve different purposes.\n\nCommitments/Prepayments are used for amounts end-customers have agreed to pay for consuming your product or services across a full contract term. A customer might pay the entire or only part of the agreed amount upfront, but ***the prepayment amount is payable regardless of the actual usage by the customer of your service or product.***\n\nIn contrast, a Balance - often referred to as a Top-Up or Prepaid draw-down - is used when a customer wants to add a credit amount to their Account at any time during the service period or when you as service provider want to add a credit to a customer Account. This Balance credit can then be drawn-down against for billing the Account for usage, minimum spend, standing charges, or recurring charges due. Balances therefore serve payment use cases in a more flexible way, for example to be used for a \"Free Credit\" sign-up scheme you offer to encourage sales or to enhance customer satisfaction by adding credit to an Account to compensate for service delivery issues.\n\nYou can use Prepayments/Commitments and Balances together on Account, and define at Organization or individual Account level the order in which any Balance/Prepayment credit on an Account is drawn-down - Balance amounts first or Prepayment amounts first.\n\n#### Billing for Commitments \n\nIf not all of an agreed Commitment amount is paid at the start of an end-customer contract period, you can choose one of two options for billing the outstanding fees due on the customer Account:\n- Select a Product *Plan to bill with*.\n- Define a *schedule of billing dates*."
  }, {
    "name" : "PlanGroupLink",
    "description" : "Endpoints for PlanGroupLink related operations such as creation, update, list and delete.\n\nPlanGroupLinks are the intersection table between a PlanGroup and its associated Plans. A PlanGroupLink is only created when at least 1 Plan is linked to a PlanGroup. "
  }, {
    "name" : "Debits",
    "description" : "Endpoints for Debit line item related operations such as creation, update, list and delete. These are line items on Bills that are specifically related to Debits.\n\nYou use the Debit Reasons created for your Organization when you create Debit line items for Bills. See the [DebitReason](https://www.m3ter.com/docs/api#tag/DebitReason) section for calls you can use to create and manage Debit Reasons for your Organization. "
  }, {
    "name" : "StatementDefinition",
    "description" : "Endpoints for listing, creating, updating, retrieving, or deleting Statement Definitions.\n\nBill statements are informative backing sheets to invoices. They provide a breakdown of the usage charges that appear on the bill, helping your end customers better understand those charges, and gain a clearer picture of their usage over the billing period.\n\nStatement Definitions specify the way billed usage will be aggregated and compiled in the Statement. For example, if you are billing customers monthly, you might want to breakdown the usage responsible for the monthly charge on a Bill into weekly portions in Bill statements."
  }, {
    "name" : "ExportAdHoc",
    "description" : "Endpoints for triggering one-off, ad-hoc Data Exports. You can set up and run ad-hoc Exports to export two kinds of data from your m3ter Organization:\n* Usage data.\n* Operational data for entities.\n\n**Ad-Hoc Export Destinations** When setting up and running an ad-hoc Export:\n* You can define one or more Export Destinations - see the [ExportDestination](https://www.m3ter.com/docs/api#tag/ExportDestination) section of this API Reference. When the export runs, the data is sent through to the sepecified Destination. However, the export file is also made available for you to download it locally.\n* You can set up and run Data Exports without defining a Destination. The data is not exported but the compiled export file is made available for downloading locally.\n* For details on downloading an export file, see the [Get Data Export File Download URL](https://www.m3ter.com/docs/api#tag/ExportDestination/operation/GenerateDataExportFileDownloadUrl) endpoint in this API Reference.\n\n**Preview Version!** The Data Export feature is currently available only in Preview release version. See [Feature Release Stages](https://www.m3ter.com/docs/guides/getting-started/feature-release-stages) for Preview release definition. ExportAdHoc endpoints will only be available if Data Export has been enabled for your Organization. For more details see [Data Export(Preview)](https://www.m3ter.com/docs/guides/data-exports) in our main User documentation. If you're interested in previewing the Data Export feature, please get in touch with m3ter Support or your m3ter contact.\n"
  }, {
    "name" : "LookupTableRevision",
    "description" : "Endpoints for creating/updating/deleting Lookup Table Revisions.\n\nLookup Tables utilize a \"Table and Revision\" model, which lets you update data cleanly, and extend the schema without modifying existing calculations:\n* Create Revisions for a Lookup Table, which you can use to define data schema and lookup keys.\n* Populate draft Revisions with data values. You can create and edit multiple draft Revisions, but only one can be published at any given time.\n* Publish a Revision to activate it. When you use Lookup functions in your calculations that reference the Lookup Table, the data values defined for the published Revision are used.\n* When you want different, updated data values to be used, publish the draft Revision containing the required new values. The currently published Revision is archived automatically.\n\n**Beta Version!** The Lookup Table feature is currently available in Beta release version. See [Feature Release Stages](https://www.m3ter.com/docs/guides/getting-started/feature-release-stages) for Beta release definition. Lookup Table Revision endpoints will only be available if Lookup Tables have been enabled for your Organization. For more details see [Lookup Tables (Beta)](https://www.m3ter.com/docs/guides/lookup-tables) in our main User documentation."
  }, {
    "name" : "Marketplace Integrations",
    "description" : "Endpoints for retrieving reporting data on Marketplace Integration runs"
  }, {
    "name" : "DataExplorer",
    "description" : "Endpoints for querying the Data Explorer and saving query selections.\n\nThe Data Explorer is a m3ter analytics tool, enabling you to query the Usage, Billing, and Prepayments data collected for your Organization in m3ter.\n\n**IMPORTANT: Request Rate Limits for Data Explorer!** As part of the Config API, requests made to the Data Explorer are subject to tighter request rate limits:\n- **Generally** 1 request per second.\n\n- **Burst** 10 requests per second.\n\nIf you exceed either of these rate limits, requests are throttled and an HTTP 429 (Too Many Requests) error response is returned. See the [Rate and Payload Limts section](https://www.m3ter.com/docs/api#section/Introduction/Rate-and-Payload-Limits) above for more details.\n"
  }, {
    "name" : "ExportJob",
    "description" : "Endpoints for retrieving/querying Data Export jobs.\n\n**Preview Version!** The Data Export feature is currently available only in Preview release version. See [Feature Release Stages](https://www.m3ter.com/docs/guides/getting-started/feature-release-stages) for Preview release definition. ExportJob endpoints will only be available if Data Export has been enabled for your Organization. For more details see [Data Export(Preview)](https://www.m3ter.com/docs/guides/data-exports) in our main User documentation. If you're interested in previewing the Data Export feature, please get in touch with m3ter Support or your m3ter contact."
  }, {
    "name" : "Plan",
    "description" : "Endpoints for listing, creating, updating, retrieving, or deleting Plans.\n\nA Plan is based on a PlanTemplate and represents a specific pricing plan for one of your products or services. Each Plan inherits general billing attributes or pricing structure from its parent Plan Template. Some attributes can be overriden for the specific Plan.\n\nWhen you've created the Plan Templates and Plans you need for your Products, you can configure the exact pricing structures for Plans to charge customers that consume one or more of your Products.\n\nYou can then attach the appropriately priced Plans to customer Accounts to create [Account Plans](https://www.m3ter.com/docs/api#tag/AccountPlan) and enable charges to be calculated correctly for billing against those Accounts.\n\nSee also:\n- [Reviewing Options for Plans and Plan Templates](https://www.m3ter.com/docs/guides/working-with-plan-templates-and-plans/reviewing-configuration-options-for-plans-and-plan-templates)."
  }, {
    "name" : "CounterAdjustments",
    "description" : "Endpoints for listing, creating, updating, retrieving, or deleting CounterAdjustments.\n\nIf you attach a Plan to an Account which is priced using a Counter to apply unit-based pricing, you can then create CounterAdjustments for the Account using that Counter to ensure the Account is billed according to the number of Counter units the Account subscribes to in a given billing period.\n\nSee [Understanding and Creating Counter Adjustments for Accounts](https://www.m3ter.com/docs/guides/recurring-charges-counters/creating-counter-adjustments-for-accounts) for more information."
  }, {
    "name" : "Charge",
    "description" : "Endpoints for creating/updating/deleting Charges.\n\nCreate Charges for your end-customer Accounts to create ad-hoc line items for Account billing. Charges are:\n* Created for either debit or credit amounts.\n* Linked to a Product for accounting purposes.\n* Optionally linked to a Contract.\n* Given a specific date for billing. When a bill job has run for the specified Charge bill date, a Charge appears as an Ad-hoc line item on the Bill.\n* Assigned a service period.\n* Available in any currency defined for your Organization.\nSee [Creating Charges for Accounts](https://www.m3ter.com/docs/guides/end-customer-accounts/creating-charges-for-accounts) in our main user documentation for more details.\n\nAlternatively, you can create a Charge for a Balance on an end-customer Account to create balance fee line items for Account billing. See [Creating Charges for Balances](https://www.m3ter.com/docs/guides/end-customer-accounts/creating-balances-for-accounts/creating-charges-for-balances) in our main user documentation for more details."
  }, {
    "name" : "Support",
    "description" : "Endpoints for requesting support and managing m3ter Support users.\n\nFor troubleshooting purposes, you can grant m3ter Support access to your Organization. m3ter Support only has access for a limited time that you specify. "
  }, {
    "name" : "CompoundAggregation",
    "description" : "Endpoints for Compound Aggregation related operations such as creation, update, list and delete.\n\nUse Compound Aggregations to create numerical measures from usage data by applying a calculation to one or more simple Aggregations or Custom Fields. These numerical measures can then be used as pricing metrics to price your Product Plans, enabling you to implement a wide range of usage-based pricing use cases.\n\nYou can create two types of Compound Aggregation:\n\n**Global**\n- Pricing: Not tied to any specific product and can be used to price Plans belonging to any Product.\n- Calculation: can reference all simple Aggregations - both Global simple Aggregations and any product-specific simple Aggregations.\n\n**Product-specific**\n- Pricing: belong to a specific Product and can only be used to price Plans belonging to the same Product.\n- Calculation: can reference any simple Aggregations belonging to the same Product and any Global simple Aggregations.\n\n**IMPORTANT!** If a simple Aggregation referenced by a Compound Aggregation has a **Quantity per unit** defined or a **Rounding** defined, these will not be factored into the value used by the calculation. For example, if the simple Aggregation referenced has a base value of 100 and has **Quantity per unit** set at 10, the Compound Aggregation calculation *will use the base value of 100 not 10*. \n\nTo better understand and use Compound Aggregations, refer to the example [Compound Aggregation Use Case](https://www.m3ter.com/docs/guides/setting-up-usage-data-meters-and-aggregations/compound-aggregations#example-use-case) in the m3ter documentation.\n\n"
  }, {
    "name" : "Account",
    "description" : "Endpoints for Account related operations such as creation, update, list and delete. \nAn Account represents one of your end-customer accounts. \n\nAccounts do not belong to a Product to allow for cases where an end customer takes more than one of your Products, and the charges for these Products differ.\n\nYou typically attach a priced Plan or Plan Template to an Account before you can generate bills for the Account:\n- If a customer consumes several of your Products, you can attach a priced Plan or Plan Template to the Account for charging against each Product.\n- If an Account is charged solely on the basis of an agreed Prepayment/Commitment amount but not all of the Prepayment is prepaid, you can use a customized billing schedule for outstanding fees without having to attach a Plan to the Account to generate Bills.\n\nYou can create Child Accounts for end customers who hold multiple Accounts with you. You can then set up billing for the Parent/Child Account usage to have the end-customer billed once for the Parent Account, instead of having separate bills issued for usage against each of their multiple Accounts.\n\n**IMPORTANT! - use of PII:** The use of any of your end-customers' Personally Identifiable Information (PII) in m3ter is restricted to a few fields on the **Account** entity. Please ensure that only the ``name``, ``address``, or ``emailAddress`` fields contain any end-customer PII data on any Accounts you create. See the [Introduction section](https://www.m3ter.com/docs/api#section/Introduction) above for more details."
  } ],
  "paths" : {
    "/organizations/{orgId}/permissionpolicies/{permissionPolicyId}/addtousergroup" : {
      "post" : {
        "tags" : [ "PermissionPolicy" ],
        "summary" : "Add a PermissionPolicy to a user group",
        "description" : "Add a permission Policy to a user group",
        "operationId" : "AddPermissionPolicyToUserGroup",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "permissionPolicyId",
          "in" : "path",
          "description" : "UUID of the permission policy",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PrincipalPermissionRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the PrincipalPermission",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PrincipalPermissionResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/resourcegroups/{type}/{resourceGroupId}/permissions" : {
      "get" : {
        "tags" : [ "ResourceGroup" ],
        "summary" : "List ResourceGroup permission policies",
        "description" : "Retrieve a list of permission policies for a ResourceGroup",
        "operationId" : "GetResourceGroupPermissions",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "type",
          "in" : "path",
          "description" : "The type of resource",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "resourceGroupId",
          "in" : "path",
          "description" : "UUID of the ResourceGroup",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of PermissionPolicy entities to retrieve per page",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "nextToken for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return a list of PermissionPolicies",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedPermissionPolicyResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/permissionpolicies/{permissionPolicyId}/removefromuser" : {
      "post" : {
        "tags" : [ "PermissionPolicy" ],
        "summary" : "Remove a PermissionPolicy from a user",
        "description" : "Remove a permission policy from a user.",
        "operationId" : "RemovePermissionPolicyFromUser",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "permissionPolicyId",
          "in" : "path",
          "description" : "UUID of the permission policy",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PrincipalPermissionRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the PrincipalPermission that was removed",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PrincipalPermissionResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/permissionpolicies/{permissionPolicyId}/addtouser" : {
      "post" : {
        "tags" : [ "PermissionPolicy" ],
        "summary" : "Add a PermissionPolicy to a user",
        "description" : "Add a permission policy to a user.",
        "operationId" : "AddPermissionPolicyToUser",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "permissionPolicyId",
          "in" : "path",
          "description" : "UUID of the permission policy",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PrincipalPermissionRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the PrincipalPermission",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PrincipalPermissionResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/users" : {
      "get" : {
        "tags" : [ "OrgUsers" ],
        "summary" : "List OrgUsers",
        "description" : "Retrieve a list of OrgUsers.\n\nRetrieves a list of all users within a specified Organization. Use this endpoint to get an overview of all users and their basic details. The list can be paginated for easier management.",
        "operationId" : "ListOrgUsers",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of OrgUsers to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of OrgUsers in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "list of ids to retrieve",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "object"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a list of OrgUsers",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedOrgUserResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/oauth/token" : {
      "post" : {
        "tags" : [ "Auth" ],
        "summary" : "Get Token",
        "description" : "Get authentication token",
        "operationId" : "GenerateToken",
        "requestBody" : {
          "description" : "grant type and scope",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BearerAccessTokenRequest"
              }
            },
            "application/x-www-form-urlencoded" : {
              "schema" : {
                "type" : "string"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Response containing access token detail",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BearerAccessTokenResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/permissionpolicies/{permissionPolicyId}/addtosupportusers" : {
      "post" : {
        "tags" : [ "PermissionPolicy" ],
        "summary" : "Add a PermissionPolicy to support users for an organization",
        "description" : "Add a permission policy  to support users for an organization.",
        "operationId" : "AddPermissionPolicyToSupportUsers",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "permissionPolicyId",
          "in" : "path",
          "description" : "UUID of the permission policy",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PermissionRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the PrincipalPermission",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PrincipalPermissionResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/support-permissions" : {
      "get" : {
        "tags" : [ "Support" ],
        "summary" : "Retrieve Support Permissions",
        "description" : "Get permission policies assigned to support users when they access your Organization.",
        "operationId" : "GetSupportUserPermissions",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32",
            "nullable" : true
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns Support User Permission Policies",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedPermissionPolicyResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/resourcegroups/{type}/{resourceGroupId}/removeresource" : {
      "post" : {
        "tags" : [ "ResourceGroup" ],
        "summary" : "Remove item",
        "description" : "Remove an item from a ResourceGroup.",
        "operationId" : "RemoveResourceFromGroup",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "resourceGroupId",
          "in" : "path",
          "description" : "The UUID of the ResourceGroup to remove the item from.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "type",
          "in" : "path",
          "description" : "The type of resource",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ResourceGroupItemRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the ResourceGroup",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceGroupResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/users/{id}" : {
      "get" : {
        "tags" : [ "OrgUsers" ],
        "summary" : "Retrieve OrgUser",
        "description" : "Retrieve the OrgUser with the given UUID.\n\nRetrieves detailed information for a specific user within an Organization, using their unique identifier (UUID).",
        "operationId" : "GetOrgUser",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Organization User to retrieve.\n\n**Note:** The `orgId` path parameter is also required.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the OrgUser",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OrgUserResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "OrgUsers" ],
        "summary" : "Update OrgUser",
        "description" : "Update the OrgUser with the given UUID.\n\nUpdates the details for a specific user within an Organization using their unique identifier (UUID). Use this endpoint when you need to modify user information such as their permission policy.",
        "operationId" : "PutOrgUser",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the OrgUser to update.\n\n**Note:** The `orgId` path parameter is also required.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/OrgUserRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated OrgUser",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OrgUserResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/resourcegroups/{type}" : {
      "get" : {
        "tags" : [ "ResourceGroup" ],
        "summary" : "List ResourceGroups",
        "description" : "Retrieve a list of ResourceGroup entities",
        "operationId" : "ListResourceGroups",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "type",
          "in" : "path",
          "description" : "The type of resource",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of ResourceGroups to retrieve per page",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "nextToken for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "ListResourceGroups 200 response",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedResourceGroupResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "ResourceGroup" ],
        "summary" : "Create ResourceGroup",
        "description" : "Create a ResourceGroup for the UUID",
        "operationId" : "PostResourceGroup",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "type",
          "in" : "path",
          "description" : "The type of resource",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ResourceGroupRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the new ResourceGroup",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceGroupResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/users/{id}/usergroups" : {
      "get" : {
        "tags" : [ "OrgUsers" ],
        "summary" : "Retrieve OrgUser Groups",
        "description" : "Retrieve a list of User Groups for an OrgUser.\n\nRetrieves a list of all User Groups that a specific user belongs to within an Organization. The list can be paginated for easier management.\n\n**Notes:**\n- **User Groups as Resource Groups**. A User Group is a Resource Group - one used to group resources of type `user`. You can use the *Create ResourceGroup* call detailed in the [ResourceGroup](https://www.m3ter.com/docs/api#tag/ResourceGroup) section to create a User Resource Group, and then use the *Add Item* and *Remove Item* calls to manage which Users belong to the User Resource Group.\n- **Using the `inherited` parameter for the Retrieve OrgUser Groups call**. Resource Groups can be nested, which means a User Resource Group can contain another User Resource Group as a member. You can use the `inherited` parameter with this *Retrieve OrgUser Groups* call as a *QUERY PARAMETER* to control which User Resource Groups are returned:\n\n* If the user specified belongs to a User Resource Group that is nested as part of another User Resource Group:\n\t* If `inherited = TRUE`, then any Groups the user belongs to AND any parent Groups those Groups belong to as nested Groups are returned.\n\t* If `inherited = FALSE`, then only those User Resource Groups to which the user belongs are returned.\n",
        "operationId" : "GetOrgUserGroups",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the user.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "inherited",
          "in" : "query",
          "description" : "Indicates whether or not to include inherited Groups.\n\n* TRUE - includes inherited groups. \n* FALSE - excludes inherited groups.\n\n**NOTE:** See explanation above for details on how to use this parameter.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of User Groups to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of User Groups in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a list of User Groups",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceGroupResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/permissionpolicies/{permissionPolicyId}/addtoserviceuser" : {
      "post" : {
        "tags" : [ "PermissionPolicy" ],
        "summary" : "Add a PermissionPolicy to a service user",
        "description" : "Add a permission policy to a service user.",
        "operationId" : "AddPermissionPolicyToServiceUser",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "permissionPolicyId",
          "in" : "path",
          "description" : "UUID of the permission policy",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PrincipalPermissionRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the PrincipalPermission",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PrincipalPermissionResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/users/me" : {
      "get" : {
        "tags" : [ "User" ],
        "summary" : "Retrieve current user information",
        "description" : "Retrieve information about the current user",
        "operationId" : "GetMe",
        "responses" : {
          "200" : {
            "description" : "GetMe 200 response",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/MeResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/users/{id}/password/resend" : {
      "put" : {
        "tags" : [ "OrgUsers" ],
        "summary" : "Resend temporary password for user",
        "description" : "Resend temporary password for user",
        "operationId" : "AdminResendTempPass",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the user",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "No user was found with the given ID."
          },
          "401" : {
            "description" : "User is not allowed to perform this action."
          },
          "400" : {
            "description" : "User in improper state."
          },
          "200" : {
            "description" : "Temporary password email sent successfully"
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/resourcegroups/{type}/{id}" : {
      "get" : {
        "tags" : [ "ResourceGroup" ],
        "summary" : "Retrieve ResourceGroup",
        "description" : "Retrieve the ResourceGroup for the UUID",
        "operationId" : "GetResourceGroup",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the ResourceGroup to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "type",
          "in" : "path",
          "description" : "The type of resource",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the ResourceGroup",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceGroupResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "ResourceGroup" ],
        "summary" : "Update ResourceGroup",
        "description" : "Update the ResourceGroup for the UUID",
        "operationId" : "PutResourceGroup",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the ResourceGroup to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "type",
          "in" : "path",
          "description" : "The type of resource",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ResourceGroupRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the updated ResourceGroup",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceGroupResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "ResourceGroup" ],
        "summary" : "Delete ResourceGroup",
        "description" : "Delete a ResourceGroup for the UUID",
        "operationId" : "DeleteResourceGroup",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the ResourceGroup to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "type",
          "in" : "path",
          "description" : "The type of resource",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the deleted ResourceGroup",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceGroupResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/permissionpolicies/{permissionPolicyId}/removefromserviceuser" : {
      "post" : {
        "tags" : [ "PermissionPolicy" ],
        "summary" : "Remove a PermissionPolicy from a service user",
        "description" : "Remove a permission policy from a service user.",
        "operationId" : "RemovePermissionPolicyFromServiceUser",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "permissionPolicyId",
          "in" : "path",
          "description" : "UUID of the permission policy",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PrincipalPermissionRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the PrincipalPermission",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PrincipalPermissionResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/permissionpolicies" : {
      "get" : {
        "tags" : [ "PermissionPolicy" ],
        "summary" : "List PermissionPolicies",
        "description" : "Retrieve a list of PermissionPolicy entities",
        "operationId" : "ListPermissionPolicies",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of permission polices to retrieve per page",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "nextToken for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "ListPermissionPolicies 200 response",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedPermissionPolicyResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "PermissionPolicy" ],
        "summary" : "Create Permission Policy",
        "description" : "Create a new Permission Policy\n\n**NOTE:** When you set up a policy statement for this call using the `permissionPolicy` request parameter to specify the `effect`, `action`, and `resource`, you must use all lower case and the format as shown in this example for a Permission Policy statement that grants full CRUD access to all meters:\n```\n\"permissionPolicy\" : [\n\t{\n\t\t\"effect\" : \"allow\",\n\t\t\"action\" : [\n\t\t\"config:create\",\n\t\t\"config:delete\",\n\t\t\"config:retrieve\",\n\t\t\"config:update\"\n\t\t]\n\t\t\"resource\" : [\n\t\t\"config:meter/*\"\n\t\t]\n\t}\n]\n```\n\nFor more details and further examples, see [Understanding, Creating, and Managing Permission Policies](https://www.m3ter.com/docs/guides/organization-and-access-management/creating-and-managing-permissions#permission-policy-statements---available-actions-and-resources) in our main Documentation.",
        "operationId" : "PostPermissionPolicy",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PermissionPolicyRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the new Permission Policy",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PermissionPolicyResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/permissionpolicies/{permissionPolicyId}/removefromsupportusers" : {
      "post" : {
        "tags" : [ "PermissionPolicy" ],
        "summary" : "Remove a PermissionPolicy from support users for an organization",
        "description" : "Remove a permission policy from support users for an organization.",
        "operationId" : "RemovePermissionPolicyFromSupportUsers",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "permissionPolicyId",
          "in" : "path",
          "description" : "UUID of the permission policy",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the PrincipalPermission",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PrincipalPermissionResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/invitations/{id}" : {
      "get" : {
        "tags" : [ "Invitations" ],
        "summary" : "Retrieve Invitation",
        "description" : "Retrieve the specified invitation with the given UUID. ",
        "operationId" : "GetOrgUserInvitation",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the specific invitation to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the specified invitation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OrgUserInvitationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/invitations" : {
      "get" : {
        "tags" : [ "Invitations" ],
        "summary" : "Retrieve Invitations",
        "description" : "Retrieve a list of all invitations in the Organization. ",
        "operationId" : "ListOrgUserInvitations",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of invitations to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "`nextToken` for multi page retrievals.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of invitations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedOrgUserInvitationResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "Invitations" ],
        "summary" : "Invite User to Organization",
        "description" : "Invite a new user to your Organization.\n\nThis sends an email to someone inviting them to join your m3ter Organization.",
        "operationId" : "CreateOrgUserInvitation",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/OrgUserInvitationRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the Invitation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OrgUserInvitationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/permissionpolicies/{permissionPolicyId}/removefromusergroup" : {
      "post" : {
        "tags" : [ "PermissionPolicy" ],
        "summary" : "Remove a PermissionPolicy from a user group",
        "description" : "Remove a permission policy from a user group.",
        "operationId" : "RemovePermissionPolicyFromUserGroup",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "permissionPolicyId",
          "in" : "path",
          "description" : "UUID of the permission policy",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PrincipalPermissionRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the PrincipalPermission that was removed",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PrincipalPermissionResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/users/{id}/permissions" : {
      "get" : {
        "tags" : [ "OrgUsers" ],
        "summary" : "Retrieve OrgUser Permissions",
        "description" : "Retrieve the permissions for the OrgUser with the given UUID.\n\nRetrieves a list of all permissions associated with a specific user in an Organization using their UUID. The list can be paginated for easier management.",
        "operationId" : "GetOrgUserPermissions",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the user whose permissions you want to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of Permission Policies to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of Permission Policies in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a list of Permission Policies.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PermissionPolicyResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/permissionpolicies/{id}" : {
      "get" : {
        "tags" : [ "PermissionPolicy" ],
        "summary" : "Retrieve Permission Policy",
        "description" : "Retrieve the permission policy for the UUID",
        "operationId" : "GetPermissionPolicy",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the PermissionPolicy to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the PermissionPolicy",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PermissionPolicyResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "PermissionPolicy" ],
        "summary" : "Update Permission Policy",
        "description" : "Update a Permission Policy for the UUID\n\n**NOTE:** When you set up a policy statement for this call to specify the `effect`, `action`, and `resource`, you must use all lower case and the format as shown in this example - a Permission Policy statement that grants full CRUD access to all meters:\n```\n\"permissionPolicy\" : [\n\t{\n\t\t\"effect\" : \"allow\",\n\t\t\"action\" : [\n\t\t\"config:create\",\n\t\t\"config:delete\",\n\t\t\"config:retrieve\",\n\t\t\"config:update\"\n\t\t]\n\t\t\"resource\" : [\n\t\t\"config:meter/*\"\n\t\t]\n\t}\n]\n```\n\nFor more details and further examples, see [Understanding, Creating, and Managing Permission Policies](https://www.m3ter.com/docs/guides/organization-and-access-management/creating-and-managing-permissions#permission-policy-statements---available-actions-and-resources) in our main Documentation.",
        "operationId" : "PutPermissionPolicy",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the PermissionPolicy to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PermissionPolicyRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated version of the PermissionPolicy",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PermissionPolicyResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "PermissionPolicy" ],
        "summary" : "Delete Permission Policy",
        "description" : "Delete the PermissionPolicy for the UUID",
        "operationId" : "DeletePermissionPolicy",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the PermissionPolicy to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the PermissionPolicy that was deleted",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PermissionPolicyResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/resourcegroups/{type}/{resourceGroupId}/addresource" : {
      "post" : {
        "tags" : [ "ResourceGroup" ],
        "summary" : "Add item",
        "description" : "Add an item to a ResourceGroup.",
        "operationId" : "AddResourceToGroup",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "resourceGroupId",
          "in" : "path",
          "description" : "The UUID of the ResourceGroup to add the item to.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "type",
          "in" : "path",
          "description" : "The type of resource the Resource Group is for, such as a Meter Resource Group.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ResourceGroupItemRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the ResourceGroup Item was added to",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ResourceGroupResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/resourcegroups/{type}/{resourceGroupId}/contents" : {
      "post" : {
        "tags" : [ "ResourceGroup" ],
        "summary" : "List ResourceGroup items",
        "description" : "Retrieve a list of items for a ResourceGroup",
        "operationId" : "ListResourceGroupsForId",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "type",
          "in" : "path",
          "description" : "The type of resource",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "resourceGroupId",
          "in" : "path",
          "description" : "UUID of the ResourceGroup",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of ResourceGroupItems to retrieve per page",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "nextToken for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return a list of ResourceGroupItems",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedResourceGroupItemResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/bills/download/csv" : {
      "post" : {
        "tags" : [ "Bill" ],
        "summary" : "Download Bills",
        "description" : "Retrieve Bills data in CSV format. \n\nUse this endpoint for retrieving Bills data in CSV format for your Organization for a specified period. The response contains the line items for Bills in the defined time period in a comma-separated string format.\n\nTo define a time period you can use exactly one of the `startDate/endDate` or `externalInvoiceDateStart/externalInvoiceDateEnd` request parameter pairings. If you try to mix them when defining a time period - such as `startDate/externalInvoiceDateEnd` - then you'll receive an error.\n\nYou can use the `externalSystem` request parameter to control the format of the Bills data given in the comma-separated response:\n- **STANDARD** A wider range of data columns is given.\n- **XERO** A more limited range of data columns is given and compatible with loading into your 3rd-party Xero system.\n\n**NOTES:** \n- **Download Limits**. You can only retrieve Bills data for a period of up to 31 days or up to a maximum of 5000 Bills. If you attempt a call that exceeds either of these two limits, you'll receive an error message\n- **Empty Bills**. The CSV formatted response string is compiled by taking each of the line items found in Bills that exist in your Organization for the specified period. The Bill for each line item record is given, along with Bill Total and other billing attributes. However, if you have an *empty Bill* that exists for the specified period - one for which *no line items currently exist* - then no line item records will be shown for this Bill in the CSV formatted response.\n- **Downloading a CSV File**. If you want to download a CSV file for Bills data for a specified period, use the [Download Bills URL](https://docs.m3ter.com/api/bill/download-bills-url) endpoint.",
        "operationId" : "DownloadBillsCsv",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DownloadCsvRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "301" : {
            "description" : "Redirect to a CSV file containing the bill details"
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/bills/{billId}/debitlineitems/{id}" : {
      "get" : {
        "tags" : [ "Debits" ],
        "summary" : "Retrieve Debit Line Item",
        "description" : "Retrieve the Debit line item with the given UUID.",
        "operationId" : "GetDebitLineItem",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "billId",
          "in" : "path",
          "description" : "UUID of the bill.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the debit line item to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the debit line item",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DebitLineItemResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "Debits" ],
        "summary" : "Update Debit Line Item",
        "description" : "Update the Debit line item with the given UUID.",
        "operationId" : "PutDebitLineItem",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "billId",
          "in" : "path",
          "description" : "UUID of the bill.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the debit line item to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DebitLineItemRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated debit line item",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DebitLineItemResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "Debits" ],
        "summary" : "Delete Debit Line Item",
        "description" : "Delete the Debit line item with the given UUID.",
        "operationId" : "DeleteDebitLineItem",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "billId",
          "in" : "path",
          "description" : "UUID of the bill.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the debit line item.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted debit line item",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DebitLineItemResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/bills/latest/{accountId}" : {
      "get" : {
        "tags" : [ "Bill" ],
        "summary" : "Retrieve latest Bill",
        "description" : "Retrieve the latest Bill for the given Account.\n\nThis endpoint retrieves the latest Bill for the given Account in the specified Organization. It facilitates tracking of the most recent charges and consumption details. ",
        "operationId" : "GetLatestBill",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "accountId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Account for which the latest Bill should be retrieved.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "additional",
          "in" : "query",
          "description" : "Comma separated list of additional fields.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the latest Bill for the given Account",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/bills/{billId}/debitlineitems" : {
      "get" : {
        "tags" : [ "Debits" ],
        "summary" : "List Debit Line Items",
        "description" : "List the Debit line items for the given bill.",
        "operationId" : "ListDebitLineItems",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "billId",
          "in" : "path",
          "description" : "UUID of the bill.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of line items to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "`nextToken` for multi page retrievals.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a list of debit line items",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedDebitLineItemResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "Debits" ],
        "summary" : "Create Debit Line Item",
        "description" : "Create a new Debit line item for the given bill.\n \nWhen creating Debit line items for Bills, use the Debit Reasons created for your Organization. See [DebitReason](https://www.m3ter.com/docs/api#tag/DebitReason).",
        "operationId" : "PostDebitLineItem",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service. ",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "billId",
          "in" : "path",
          "description" : "UUID of the bill.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DebitLineItemRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the new debit line item",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DebitLineItemResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/bills/{id}" : {
      "get" : {
        "tags" : [ "Bill" ],
        "summary" : "Retrieve Bill",
        "description" : "Retrieve the Bill with the given UUID.\n\nThis endpoint retrieves the Bill with the given unique identifier (UUID) and specific Organization. ",
        "operationId" : "GetBill",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Bill to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "additional",
          "in" : "query",
          "description" : "Comma separated list of additional fields.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the requested Bill",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "Bill" ],
        "summary" : "Delete Bill",
        "description" : "Delete the Bill with the given UUID.\n\nThis endpoint deletes the specified Bill with the given unique identifier. Use with caution since deleted Bills cannot be recovered. Suitable for removing incorrect or obsolete Bills, and for Bills that have not been sent to customers.  Where end-customer invoices for Bills have been sent to customers, Bills should not be deleted to ensure you have an audit trail of how the invoice was created. ",
        "operationId" : "DeleteBill",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Bill to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted Bill",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/balances/{balanceId}/balancechargeschedules/{id}" : {
      "get" : {
        "tags" : [ "BalanceChargeSchedule" ],
        "summary" : "Retrieve BalanceChargeSchedule",
        "description" : "Retrieve a BalanceChargeSchedule for the given UUID.",
        "operationId" : "GetBalanceChargeSchedule",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "balanceId",
          "in" : "path",
          "description" : "UUID of the balance",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the BalanceChargeSchedule to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the BalanceChargeSchedule",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BalanceChargeScheduleResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "BalanceChargeSchedule" ],
        "summary" : "Update BalanceChargeSchedule",
        "description" : "Update a BalanceChargeSchedule for the given UUID.",
        "operationId" : "UpdateBalanceChargeSchedule",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "balanceId",
          "in" : "path",
          "description" : "UUID of the balance",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the BalanceChargeSchedule to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BalanceChargeScheduleRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the updated BalanceChargeSchedule",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BalanceChargeScheduleResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "BalanceChargeSchedule" ],
        "summary" : "Delete BalanceChargeSchedule",
        "description" : "Delete the BalanceChargeSchedule for the given UUID.",
        "operationId" : "DeleteBalanceChargeSchedule",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "balanceId",
          "in" : "path",
          "description" : "UUID of the balance",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the BalanceChargeSchedule to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the deleted BalanceChargeSchedule",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BalanceChargeScheduleResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/balances/{balanceId}/balancetransactionschedules" : {
      "get" : {
        "tags" : [ "BalanceTransactionSchedule" ],
        "summary" : "List BalanceTransactionSchedule",
        "description" : "Retrieve a list of BalanceTransactionSchedule entities.",
        "operationId" : "ListBalanceTransactionSchedule",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "balanceId",
          "in" : "path",
          "description" : "UUID of the balance",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of BalanceTransactionSchedules to retrieve per page",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "nextToken for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maxItems" : 200,
            "type" : "array",
            "nullable" : true,
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "ListBalanceTransactionSchedule 200 response",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedBalanceTransactionScheduleResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "BalanceTransactionSchedule" ],
        "summary" : "Create BalanceTransactionSchedule",
        "description" : "Create a new BalanceTransactionSchedule.",
        "operationId" : "CreateBalanceTransactionSchedule",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "balanceId",
          "in" : "path",
          "description" : "UUID of the balance",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BalanceTransactionScheduleRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the created BalanceTransactionSchedule",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BalanceTransactionScheduleResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/bills/{billId}/creditlineitems/{id}" : {
      "get" : {
        "tags" : [ "Credits" ],
        "summary" : "Retrieve Credit Line Item",
        "description" : "Retrieve the Credit line item with the given UUID.",
        "operationId" : "GetCreditLineItem",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "billId",
          "in" : "path",
          "description" : "UUID of the Bill.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Credit line item to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the credit line item",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CreditLineItemResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "Credits" ],
        "summary" : "Update Credit Line Item",
        "description" : "Update the Credit line item with the given UUID.",
        "operationId" : "PutCreditLineItem",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "billId",
          "in" : "path",
          "description" : "UUID of the bill.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the credit line item to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreditLineItemRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated credit line item",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CreditLineItemResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "Credits" ],
        "summary" : "Delete Credit Line Item",
        "description" : "Delete the Credit line item with the given UUID.",
        "operationId" : "DeleteCreditLineItem",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "billId",
          "in" : "path",
          "description" : "UUID of the bill.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the credit line item to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted credit line item",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CreditLineItemResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/statementjobs/{id}/cancel" : {
      "post" : {
        "tags" : [ "StatementJob" ],
        "summary" : "Cancel StatementJob",
        "description" : "Cancel the StatementJob with the given UUID.\n\nUse this endpoint to halt the execution of a specific StatementJob identified by its UUID. This operation may be useful if you need to stop a StatementJob due to unforeseen issues or changes.",
        "operationId" : "CancelStatementJob",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the StatementJob to cancel.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the cancelled StatementJob",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/StatementJobResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/balances/{balanceId}/balancetransactionschedules/{id}" : {
      "get" : {
        "tags" : [ "BalanceTransactionSchedule" ],
        "summary" : "Retrieve BalanceTransactionSchedule",
        "description" : "Retrieve a BalanceTransactionSchedule for the given UUID.",
        "operationId" : "GetBalanceTransactionSchedule",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "balanceId",
          "in" : "path",
          "description" : "UUID of the balance",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the BalanceTransactionSchedule to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the BalanceTransactionSchedule",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BalanceTransactionScheduleResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "BalanceTransactionSchedule" ],
        "summary" : "Update BalanceTransactionSchedule",
        "description" : "Update a BalanceTransactionSchedule for the given UUID.",
        "operationId" : "UpdateBalanceTransactionSchedule",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "balanceId",
          "in" : "path",
          "description" : "UUID of the balance",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the BalanceTransactionSchedule to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BalanceTransactionScheduleRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the updated BalanceTransactionSchedule",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BalanceTransactionScheduleResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "BalanceTransactionSchedule" ],
        "summary" : "Delete BalanceTransactionSchedule",
        "description" : "Delete the BalanceTransactionSchedule for the given UUID.",
        "operationId" : "DeleteBalanceTransactionSchedule",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "balanceId",
          "in" : "path",
          "description" : "UUID of the balance",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the BalanceTransactionSchedule to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the deleted BalanceTransactionSchedule",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BalanceTransactionScheduleResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/billconfig" : {
      "get" : {
        "tags" : [ "BillConfig" ],
        "summary" : "Retrieve BillConfig",
        "description" : "Retrieve the Organization-wide BillConfig.",
        "operationId" : "GetBillConfig",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the BillConfig",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillConfigResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "BillConfig" ],
        "summary" : "Update BillConfig",
        "description" : "Update the Organization-wide BillConfig.\n\nYou can use this endpoint to set a global lock date for **all** Bills - any Bill with a service period end date on or before the set date will be locked and cannot be updated or recalculated.",
        "operationId" : "UpdateBillConfig",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BillConfigRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the updated BillConfig",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillConfigResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/bills" : {
      "get" : {
        "tags" : [ "Bill" ],
        "summary" : "List Bills",
        "description" : "Retrieve a list of Bills.\n\nThis endpoint retrieves a list of all Bills for the given Account within the specified Organization. Optional filters can be applied such as by date range, lock status, or other attributes. The list can also be paginated for easier management.",
        "operationId" : "ListBills",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of Bills to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of Bills in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "accountId",
          "in" : "query",
          "description" : "Optional filter. An Account ID - returns the Bills for the single specified Account.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "locked",
          "in" : "query",
          "description" : "Boolean flag specifying whether to include Bills with \"locked\" status.\n\n* **TRUE** - the list inlcudes \"locked\" Bills.\n* **FALSE** - excludes \"locked\" Bills from the list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "excludeLineItems",
          "in" : "query",
          "description" : "Exclude Line Items",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "includeBillTotal",
          "in" : "query",
          "description" : "Include Bill Total",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "status",
          "in" : "query",
          "description" : "Only include Bills having the given status",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "$ref" : "#/components/schemas/BillStatus"
          }
        }, {
          "name" : "billDate",
          "in" : "query",
          "description" : "The specific date *(in ISO 8601 format)* for which you want to retrieve Bills.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "billDateStart",
          "in" : "query",
          "description" : "Only include Bills with bill date equal to or later than this date *(in ISO-8601 format)*.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "billDateEnd",
          "in" : "query",
          "description" : "Only include Bills with bill dates earlier than this date  *(in ISO-8601 format)*.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "externalInvoiceDateStart",
          "in" : "query",
          "description" : "Only include Bills with external invoice dates equal to or later than this date *(in ISO-8601 format)*.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "externalInvoiceDateEnd",
          "in" : "query",
          "description" : "Only include Bills with external invoice dates earlier than this date *(in ISO-8601 format)*.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "Optional filter. The list of Bill IDs to retrieve.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "billJobId",
          "in" : "query",
          "description" : "List Bill entities by the bill job that last calculated them.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "additional",
          "in" : "query",
          "description" : "Comma separated list of additional fields.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "billingFrequency",
          "in" : "query",
          "description" : "Only include Bills using the specified bill frequency:\n* **DAILY**\n* **WEEKLY**\n* **MONTHLY**\n* **ANNUALLY**\n\n**IMPORTANT!:** Can only be used with the `billDate` query parameter.",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the requested list of Bills",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedBillResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/bills/{id}/status" : {
      "put" : {
        "tags" : [ "Bill" ],
        "summary" : "Update Bill Status",
        "description" : "Updates the status of a specified Bill with the given Bill ID. \n\nThis endpoint allows you to transition a Bill's status through various stages, such as from \"Pending\" to \"Approved\".",
        "operationId" : "UpdateBillStatus",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Bill whose status you want to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UpdateBillStatusRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated Bill",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/bills/{id}/statement/json" : {
      "get" : {
        "tags" : [ "Bill" ],
        "summary" : "Retrieve Bill Statement in JSON Format",
        "description" : "Retrieve a Bill Statement in JSON format for a given Bill ID.\n\nBill Statements are backing sheets to the invoices sent to your customers. Bill Statements provide a breakdown of the usage responsible for the usage charge line items shown on invoices.\n\nThe response to this call returns a pre-signed `downloadUrl`, which you use with a `GET` call to obtain the Bill Statement.",
        "operationId" : "GetBillJsonStatement",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Bill for which you want to retrieve the Statement.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the download URL ",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ObjectUrlResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/bills/{billId}/lineitems" : {
      "get" : {
        "tags" : [ "Bill" ],
        "summary" : "List Line Items",
        "description" : "Lists all the line items for a specific Bill. \n\nThis endpoint retrieves a list of line items for the given Bill within the specified Organization. The list can also be paginated for easier management. The line items returned in the list include individual charges, discounts, or adjustments within a Bill.\n",
        "operationId" : "ListBillLineItems",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "billId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Bill for which you want to list the line items.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of line items to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of line items in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "additional",
          "in" : "query",
          "description" : "Comma separated list of additional fields.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of Bill line items",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedBillLineItemResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/balances/{balanceId}/transactions" : {
      "get" : {
        "tags" : [ "Balances" ],
        "summary" : "List Transactions",
        "description" : "Retrieve all Transactions for a specific Balance.\n\nThis endpoint returns a list of all Transactions associated with a specific Balance. You can paginate through the Transactions by using the `pageSize` and `nextToken` parameters.",
        "operationId" : "ListBalanceTransactions",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "balanceId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for the Balance whose Transactions you want to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "The maximum number of transactions to return per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "`nextToken` for multi page retrievals. A token for retrieving the next page of transactions. You'll get this from the response to your request. ",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "transactionTypeId",
          "in" : "query",
          "description" : "",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        }, {
          "name" : "entityType",
          "in" : "query",
          "description" : "",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "nullable" : true,
            "allOf" : [ {
              "$ref" : "#/components/schemas/EntityType"
            } ]
          }
        }, {
          "name" : "entityId",
          "in" : "query",
          "description" : "",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of Balance Transactions",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedBalanceTransactionResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "Balances" ],
        "summary" : "Create Balance Transaction",
        "description" : "Add a Transaction to a Balance. This endpoint allows you to create a new Transaction amount for a Balance. This amount then becomes available at billing for draw-down to cover charges due. The Transaction details should be provided in the request body.\n\nBefore you can add a Transaction amount, you must first set up Transaction Types at the Organization Level - see the [Transaction Type](https://docs.m3ter.com/api/transactiontype/introduction) section in this API Reference for more details. You can then use this call to add an instance of a Transaction Type to a Balance.\n\n**Note:** If you have a customer whose payment is in a different currency to the Balance currency, you can use the `paid` and `paidCurrency` request parameters to record the amount paid and alternative currency respectively. For example, you might add a Transaction amount of 200 USD to a Balance on a customer Account where the customer actually paid you 50 units in virtual currency X.",
        "operationId" : "PostBalanceTransaction",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "balanceId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for the Balance to which you want to add a transaction.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BalanceTransactionRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the created Balance transaction",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BalanceTransactionResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/bills/accountid/{accountId}" : {
      "get" : {
        "tags" : [ "Bill" ],
        "summary" : "Retrieve Bills for an Account ID",
        "description" : "Retrieve all Bills for the given Account.\n\nThis endpoint retrieves all Bills associated with a specific Account ID in a specified organization. The list can also be paginated for easier management.\n\nThis is useful for obtaining an overview of all billing activities for an Account.\n",
        "operationId" : "GetAllBillsForAccount",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of Bills to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of Bills in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "accountId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Account for which you want to retrieve Bills.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "additional",
          "in" : "query",
          "description" : "Comma separated list of additional fields.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns list of Bills for the requested account",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedBillResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/balances/{balanceId}/balancetransactionschedules/preview" : {
      "post" : {
        "tags" : [ "BalanceTransactionSchedule" ],
        "summary" : "Preview ScheduledBalanceTransactions",
        "description" : "Previews the BalanceTransactions this Schedule would create, without persisting them. You can use this call to obtain a preview of the Transactions a Schedule you plan to create for a Balance would generate.",
        "operationId" : "PreviewBalanceTransactionSchedule",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "balanceId",
          "in" : "path",
          "description" : "UUID of the balance",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of BalanceTransactions to retrieve per page",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "nextToken for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BalanceTransactionScheduleRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the list of BalanceTransactions this request would create",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BalanceTransactionScheduleResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/bills/{billId}/lineitems/{id}" : {
      "get" : {
        "tags" : [ "Bill" ],
        "summary" : "Retrieve Line Item",
        "description" : "Retrieves a specific line item within a Bill.\n\nThis endpoint retrieves the line item given by its unique identifier (UUID) from a specific Bill.  ",
        "operationId" : "GetBillLineItem",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "billId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Bill containing the line item.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the line item you want to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "additional",
          "in" : "query",
          "description" : "Comma separated list of additional fields.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the requested line item from a Bill",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillLineItemResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/bills/{id}/lock" : {
      "put" : {
        "tags" : [ "Bill" ],
        "summary" : "Lock Bill",
        "description" : "Lock the specific Bill identified by the given UUID. Once a Bill is locked, no further changes can be made to it.\n\n**NOTE:** You cannot lock a Bill whose current status is `PENDING`. You will receive an error message if you try to do this. You must first use the [Approve Bills](https://docs.m3ter.com/api/bill/approve-bills) call to approve a Bill before you can lock it.",
        "operationId" : "LockBill",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Bill to lock.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the locked Bill",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/bills/billingperiod/{lastDateInBillingPeriod}/{billingFrequency}/approve" : {
      "post" : {
        "tags" : [ "Bill" ],
        "summary" : "Approve Bills in Billing Period",
        "description" : "Approve all Bills within a specified billing period. This endpoint allows you to approve Bills on various frequencies, such as daily, weekly, monthly, or annually. Specify the last day of the period to define the range. \n\nFor example, to approve all Bills on monthly billing up to September with due date of 1st of month, use the last day of September, which is September 30th.",
        "operationId" : "ApproveAllBillsInBillingPeriod",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lastDateInBillingPeriod",
          "in" : "path",
          "description" : "The last date of the billing period for which you want to approve Bills. This date defines the range of Bills to be approved.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "billingFrequency",
          "in" : "path",
          "description" : "The billing frequency for the specified period. Valid options are daily, weekly, monthly, or annually.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a message indicating the success/failure of Bills approval",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillApprovalResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/charges" : {
      "get" : {
        "tags" : [ "Charge" ],
        "summary" : "List Charges",
        "description" : "Retrieve a list of Charge entities",
        "operationId" : "ListCharges",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of Charges to retrieve per page",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "nextToken for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "accountId",
          "in" : "query",
          "description" : "List Charge items for the Account UUID",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "entityType",
          "in" : "query",
          "description" : "List Charge items for the EntityType",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "$ref" : "#/components/schemas/ChargeEntityType"
          }
        }, {
          "name" : "entityId",
          "in" : "query",
          "description" : "List Charge items for the Entity UUID",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "billDate",
          "in" : "query",
          "description" : "List Charge items for the Bill Date",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string",
            "format" : "date"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "List of Charge UUIDs to retrieve",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "scheduleId",
          "in" : "query",
          "description" : "List Charge items for the Schedule UUID",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "ListCharges 200 response",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedChargeResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "Charge" ],
        "summary" : "Create Charge",
        "description" : "Create a new Charge.\n\n**NOTES:**\n* To create an ad-hoc Charge on an Account, use the `accountId` request parameter.\n* To create a balance fee Charge for a Balance, use the `entityId` request parameter to specify which Balance on an Account the Charge is for.\n* To define the value of the Charge amount that is billed, you can simply specify an `amount` or use a number of `units` together with a `unitPrice` for a calculated value = units x unit price. But you cannot specify *both an amount and units/unit price*.",
        "operationId" : "CreateCharge",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ChargeRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the created Charge",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ChargeResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/balances/{balanceId}/transactions/summary" : {
      "get" : {
        "tags" : [ "Balances" ],
        "summary" : "Get Balance Transactions Summary",
        "description" : "Retrieves the Balance Transactions Summary for a given Balance.\n\nThe response contains useful recorded and calculated Transaction amounts created for a Balance during the time it is active for the Account, including amounts relevant to any rollover amount configured for a Balance:\n* `totalCreditAmount`. The sum of all credits amounts created for the Balance.\n* `totalDebitAmount`. The sum of all debit amounts created for the Balance.\n* `initialCreditAmount`. The initial credit amount created for the Balance.\n* `expiredBalanceAmount`. The amount of the Balance remaining at the time the Balance expires and which is not included in any configured Rollover amount. For example,suppose a Balance reaches its end date and 1000 credit remains unused. If the Balance is configured to rollover 800, then the `expiredBalanceAmount` is calculated as 1000 - 800 = 200.\n* `rolloverConsumed`. The sum of debits made against the configured rollover amount. Note that this amount is dynamic relative to when the API call is made until either the rollover end date is reached or the cap configured for the rollover amount is reached, after which it will be unchanged. If no rollover is configured for a Balance, then this is ignored.\n* `balanceConsumed`. The sum of debits made against the Balance. Note that this amount is dynamic relative to when the API call is made until either the Balance end date is reached or the available Balance amount reaches zero, after which it will be unchanged. ",
        "operationId" : "GetBalanceTransactionsSummary",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "balanceId",
          "in" : "path",
          "description" : "The UUID of the Balance",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Summary of all Balance Transactions",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BalanceTransactionsSummary"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/billjobs/{id}" : {
      "get" : {
        "tags" : [ "BillJob" ],
        "summary" : "Retrieve BillJob",
        "description" : "Retrieve a Bill Job for the given UUID.",
        "operationId" : "GetBillJob",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Bill Job to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the Bill Job",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillJobResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/balances" : {
      "get" : {
        "tags" : [ "Balances" ],
        "summary" : "List Balances",
        "description" : "Retrieve a list of all Balances for your Organization.\n\nThis endpoint returns a list of all Balances associated with your organization. You can filter the Balances by the end customer's Account UUID and end dates, and paginate through them using the `pageSize` and `nextToken` parameters.\n\n**NOTE:** If a Balance has a rollover amount configured and you want to use the `endDateStart` or `endDateEnd` query parameters, the `rolloverEndDate` is used as the end date/time for the Balance.",
        "operationId" : "ListBalances",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your organization. The Organization represents your company as a direct customer of our service. ",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "The maximum number of Balances to return per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for retrieving the next page of Balances. It is used to fetch the next page of Balances in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "accountId",
          "in" : "query",
          "description" : "The unique identifier (UUID) for the end customer's account.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "endDateStart",
          "in" : "query",
          "description" : "Only include Balances with end date/times equal to or later than this date/time *(in ISO-8601 format)*. If a Balance has a rollover amount configured, then the `rolloverEndDate` will be used as the end date/time.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "endDateEnd",
          "in" : "query",
          "description" : "Only include Balances with end date/times earlier than this date/time *(in ISO-8601 format)*. If a Balance has a rollover amount configured, then the `rolloverEndDate` will be used as the end date/time.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "contract",
          "in" : "query",
          "description" : "",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "contractId",
          "in" : "query",
          "description" : "Filter Balances by contract id. Use '' with accountId to fetch unlinked balances.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "A list of unique identifiers (UUIDs) for specific Balances to retrieve.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns list of Balances",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedBalanceResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "Balances" ],
        "summary" : "Create Balance",
        "description" : "Create a new Balance for the given end customer Account. \n\nThis endpoint allows you to create a new Balance for a specific end customer Account. The Balance details should be provided in the request body.",
        "operationId" : "PostBalance",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BalanceRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the created Balance",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BalanceResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/statementjobs/{id}" : {
      "get" : {
        "tags" : [ "StatementJob" ],
        "summary" : "Get StatementJob",
        "description" : "Retrieves the details of a specific StatementJob using its UUID.\n\nUse this call to obtain the time-bound pre-signed download URL for the generated Bill Statement if the initial [Create StatementJob](https://www.m3ter.com/docs/api#tag/StatementJob/operation/CreateStatementJob) returned a response showing the `statementJobStatus` not yet complete and as `PENDING` or `RUNNING`.\n\n**Note:** When you have submitted a StatementJob and a Bill Statement has been generated, you can also download the Statement directly from a Bill Details page in the Console. See [Working with Bill Statements](https://www.m3ter.com/docs/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements) in our user Documentation.",
        "operationId" : "GetStatementJob",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the StatementJob",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/StatementJobResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/bills/{id}/statement/csv" : {
      "get" : {
        "tags" : [ "Bill" ],
        "summary" : "Retrieve Bill Statement in CSV Format",
        "description" : "Retrieve a specific Bill Statement for the given Bill UUID in CSV format. \n\nBill Statements are backing sheets to the invoices sent to your customers. Bill Statements provide a breakdown of the usage responsible for the usage charge line items shown on invoices.\n\nThe response includes a pre-signed `downloadUrl`, which must be used with a separate `GET` call to download the actual Bill Statement. This ensures secure access to the requested information.",
        "operationId" : "GetBillCsvStatement",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Bill for which to retrieve the Statement in CSV format.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the download URL",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ObjectUrlResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "Bill" ],
        "summary" : "Create Bill Statement in CSV Format",
        "description" : "Generate a specific Bill Statement for the provided Bill UUID in CSV format. \n\nBill Statements are backing sheets to the invoices sent to your customers. Bill Statements provide a breakdown of the usage responsible for the usage charge line items shown on invoices.\n\nThe response to this call returns a pre-signed `downloadUrl`, which you then use with a `GET` call to obtain the Bill statement in CSV format.",
        "operationId" : "CreateBillCsvStatement",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Bill for which you want to generate the Statement in CSV format.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the download URL ",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ObjectUrlResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/billjobs" : {
      "get" : {
        "tags" : [ "BillJob" ],
        "summary" : "List BillJobs",
        "description" : "Retrieve a list of BillJobs.\n\nThis endpoint retrieves a list of BillJobs for the specified Organization. The list can be paginated for easier management, and allows you to query and filter based on various parameters, such as BillJob `status` and whether or not BillJob remains `active`.",
        "operationId" : "ListBillJobs",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of BillJobs to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of BillJobs in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "active",
          "in" : "query",
          "description" : "Boolean filter to retrieve only active BillJobs and exclude completed or cancelled BillJobs from the results.\n\n* **TRUE** - only active BillJobs.\n* **FALSE** - all BillJobs including completed and cancelled BillJobs.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "status",
          "in" : "query",
          "description" : "Filter BillJobs by specific status. Allows for targeted retrieval of BillJobs based on their current processing status.\n\nPossible states are:\n\n* **PENDING** \n* **INITIALIZING** \n* **RUNNING** \n* **COMPLETE** \n* **CANCELLED**",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns list of BillJobs",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedBillJobResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "BillJob" ],
        "summary" : "Create BillJob",
        "description" : "Create a new BillJob to handle asynchronous bill calculations for a specific Organization. \n\nThis operation allows you to initiate the processing of bills according to specified parameters. For example, create a BillJob to run only those bills where `billingFrequency` is `MONTHLY`. Note that if you want to run a BillJob for all billing frequencies, simply omit the `billingFrequency` request parameter.\n\nOnce created, the BillJob's progress can be monitored:\n- In the Running Tasks panel in the m3ter Console - for more details, see [Running Bills Manually](https://www.m3ter.com/docs/guides/billing-and-usage-data/running-viewing-and-managing-bills/running-bills-and-viewing-bill-details#running-bills-manually)\n- Queried using the [List BillJobs](https://docs.m3ter.com/api/billjob/list-billjobs) endpoint.\n\n**NOTES:**\n- **Consolidated bills**. If you've already run billing with the Consolidate bills option disabled for your Organization but you then enable it, subsequent Bills for specific bill dates will now start afresh and not update earlier non-consolidated Bills for the same bill date. To avoid any billing conflicts, you might want to archive these earlier versions or delete them entirely.\n- **Maximum concurrent BillJobs**. If you already have 10 BillJobs currently running, and try to create another one, you'll get an HTTP 429 response (Too many requests). When one of the existing BillJobs has completed, you'll be able to submit another job",
        "operationId" : "CreateBillJob",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BillJobRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the details of the created BillJob",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillJobResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/balances/{balanceId}/balancechargeschedules/preview" : {
      "post" : {
        "tags" : [ "BalanceChargeSchedule" ],
        "summary" : "Preview ScheduledBalanceCharges",
        "description" : "Previews the Charges this Schedule would create, without persisting them. You can use this call to obtain a preview of the Charges a Schedule you plan to create for a Balance would generate.",
        "operationId" : "PreviewScheduledCharge",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "balanceId",
          "in" : "path",
          "description" : "UUID of the balance",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of Charges to retrieve per page",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "nextToken for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BalanceChargeScheduleRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the list of BalanceCharges this request would create",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BalanceChargeScheduleResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/lineitems" : {
      "get" : {
        "tags" : [ "Line Item" ],
        "summary" : "List Line Items",
        "description" : "List the billing line items for the given Organization, which can be filtered by the type of line item, Bill ID, or Commitment *(prepayment)* ID.",
        "operationId" : "ListLineItems",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "commitmentId",
          "in" : "query",
          "description" : "Filter the line items list using the given Commitment ID. \n",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lineItemType",
          "in" : "query",
          "description" : "Filter the line items list using the given line item type. \nSee [Bill Line Item Types](https://www.m3ter.com/docs/guides/running-viewing-and-managing-bills/bill-line-item-types) for more information on each line item type. ",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "$ref" : "#/components/schemas/LineItemType"
          }
        }, {
          "name" : "billId",
          "in" : "query",
          "description" : "Filter the line items list using the given Bill ID.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of Line Items to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "`nextToken` for multi page retrievals.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "additional",
          "in" : "query",
          "description" : "Comma separated list of additional fields.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns list of billing line items",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedBillLineItemResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/balances/{id}" : {
      "get" : {
        "tags" : [ "Balances" ],
        "summary" : "Retrieve Balance",
        "description" : "Retrieve a specific Balance.\n\nThis endpoint returns the details of the specified Balance.",
        "operationId" : "GetBalance",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Balance to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the Balance",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BalanceResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "Balances" ],
        "summary" : "Update Balance",
        "description" : "Update a specific Balance.\n\nThis endpoint allows you to update the details of a specific Balance. The updated Balance details should be provided in the request body.",
        "operationId" : "PutBalance",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Balance to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BalanceRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated Balance",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BalanceResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "Balances" ],
        "summary" : "Delete Balance",
        "description" : "Delete a specific Balance.\n\nThis endpoint allows you to delete a specific Balance with the given UUID.",
        "operationId" : "DeleteBalance",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Balance to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted Balance",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BalanceResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/billjobs/{id}/cancel" : {
      "post" : {
        "tags" : [ "BillJob" ],
        "summary" : "Cancel BillJob",
        "description" : "Cancel an ongoing BillJob for the given Organization and BillJob UUID. \n\nThis endpoint allows you to halt the processing of a specific BillJob, which might be necessary if there are changes in billing requirements or other operational considerations.",
        "operationId" : "CancelBillJob",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the BillJob to cancel.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the cancelled BillJob",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillJobResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/counteradjustments" : {
      "get" : {
        "tags" : [ "CounterAdjustments" ],
        "summary" : "List CounterAdjustments",
        "description" : "Retrieve a list of CounterAdjustments created for Accounts in your Organization. You can filter the list returned by date, Account ID, or Counter ID.\n\n**CONSTRAINTS:**\n* The `counterId` query parameter is always required when calling this endpoint, used either as a single query parameter or in combination with any of the other query parameters.\n* If you want to use the `date`, `dateStart`, or `dateEnd` query parameters, you must also use the `accountId` query parameter.",
        "operationId" : "ListCounterAdjustments",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of CounterAdjustments to retrieve per page",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "nextToken for multi page retrievals.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "counterId",
          "in" : "query",
          "description" : "List CounterAdjustment items for the Counter UUID.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "accountId",
          "in" : "query",
          "description" : "List CounterAdjustment items for the Account UUID.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "date",
          "in" : "query",
          "description" : "List CounterAdjustment items for the given date.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "endDateStart",
          "in" : "query",
          "description" : "Only include CounterAdjustments with end dates equal to or later than this date.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "endDateEnd",
          "in" : "query",
          "description" : "Only include CounterAdjustments with end dates earlier than this date.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "sortOrder",
          "in" : "query",
          "description" : "Sort order for the results",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "dateStart",
          "in" : "query",
          "description" : "",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        }, {
          "name" : "dateEnd",
          "in" : "query",
          "description" : "",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns list of CounterAdjustments",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedCounterAdjustmentResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "CounterAdjustments" ],
        "summary" : "Create CounterAdjustment",
        "description" : "Create a new CounterAdjustment for an Account using a Counter.\n\n**Notes:**\n* Use the new absolute value for the Counter for the selected date - if it was 15 and has increased to 20, enter 20; if it was 15 and has decreased to 10, enter 10. *Do not enter* the plus or minus value relative to the previous Counter value on the Account.\n* CounterAdjustments on Accounts are supported down to a *specific day* of granularity - you cannot create more than one CounterAdjustment for any given day using the same Counter and you'll receive an error if you try to do this.",
        "operationId" : "PostCounterAdjustment",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CounterAdjustmentRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the created CounterAdjustment",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CounterAdjustmentResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/bills/preview" : {
      "post" : {
        "tags" : [ "Bill" ],
        "summary" : "Preview Bill",
        "description" : "Preview the current Bill for a specific account. \n\nThis endpoint is designed to provide a preview of the Bill for exactly one account, allowing you to review charges, frequencies, and other details before finalization. Required parameters include: \n* `accountIds` - exactly 1 account must be specified for previewing a Bill. \n* `billingFrequency` \n* `billFrequencyInterval` \n\nOther request parameters are optional. If `version` is not specified, the latest version of the Bill is previewed.",
        "operationId" : "PreviewBill",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "debug",
          "in" : "query",
          "description" : "",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "boolean",
            "nullable" : true
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BillJobRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the Bill preview",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/statementjobs/batch" : {
      "post" : {
        "tags" : [ "StatementJob" ],
        "summary" : "Create Batch StatementJobs",
        "description" : "Create a batch of StatementJobs for multiple bills.\n\nInitiate the creation of multiple StatementJobs asynchronously for the list of bills with the given UUIDs:\n* The default format for generating Bill Statements is in JSON format and according to the Bill Statement Definition you've specified at either Organization level or Account level.\n* If you also want to generate the Statements in CSV format, use the `includeCsvFormat` request body parameter.\n* The response body provides a time-bound pre-signed URL, which you can use to download the JSON format Statement.\n* When you have generated a Statement for a Bill, you can also obtain a time-bound pre-signed download URL using either the [Retrieve Bill Statement in JSON Format](https://www.m3ter.com/docs/api#tag/Bill/operation/GetBillJsonStatement) and [Retrieve Bill Statement in CSV Format](https://www.m3ter.com/docs/api#tag/Bill/operation/GetBillCsvStatement) calls found in the [Bill](https://www.m3ter.com/docs/api#tag/Bill) section of this API Reference.\n\n**Notes:**\n* If the response to the Create StatementJob call shows the `statementJobStatus` as `PENDING` or `RUNNING`, you will not receive the pre-signed URL in the response. Wait a few minutes to allow the StatementJob to complete and then use the [Get StatmentJob](https://www.m3ter.com/docs/api#tag/StatementJob/operation/GetStatementJob) call in this section to obtain the pre-signed download URL for the generated Bill Statement.\n* When you have submitted a StatementJob and a Bill Statement has been generated, you can also download the Statement directly from a Bill Details page in the Console. See [Working with Bill Statements](https://www.m3ter.com/docs/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements) in our user Documentation.",
        "operationId" : "CreateStatementJobBatch",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/StatementsBatchJobRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns a list of the created StatementJobs",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/StatementJobResponse"
                  }
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/counteradjustments/{id}" : {
      "get" : {
        "tags" : [ "CounterAdjustments" ],
        "summary" : "Retrieve CounterAdjustment",
        "description" : "Retrieve a CounterAdjustment for the given UUID.",
        "operationId" : "GetCounterAdjustment",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the CounterAdjustment to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the CounterAdjustment",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CounterAdjustmentResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "CounterAdjustments" ],
        "summary" : "Update CounterAdjustment",
        "description" : "Update a CounterAdjustment for an Account.",
        "operationId" : "PutCounterAdjustment",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the CounterAdjustment to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CounterAdjustmentRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated CounterAdjustment",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CounterAdjustmentResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "CounterAdjustments" ],
        "summary" : "Delete CounterAdjustment",
        "description" : "Delete a CounterAdjustment for the given UUID.",
        "operationId" : "DeleteCounterAdjustment",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the CounterAdjustment to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted CounterAdjustment",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CounterAdjustmentResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/billjobs/recalculate" : {
      "post" : {
        "tags" : [ "BillJob" ],
        "summary" : "Create Recalculation BillJob",
        "description" : "Create a new BillJob specifically to recalculate existing bills for a given Organization. \n\nThis operation is essential when adjustments or corrections are required in previously calculated bills. The recalculated bills when the BillJob is complete can be checked in the m3ter Console Bill Management page or queried by using the [List Bills](https://docs.m3ter.com/api/bill/list-bills) operation.\n\n**NOTE:**\n- **Response Schema**. The response schema for this call is dynamic. This means that the response might not contain all of the parameters listed.  If set to null,the parameter is hidden to help simplify the output as well as to reduce its size and improve  performance.",
        "operationId" : "RecalculateBillJob",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BillJobRecalculateRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the recalculated BillJob",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillJobResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/bills/{billId}/lineitems/{id}/usage/json" : {
      "get" : {
        "tags" : [ "Bill" ],
        "summary" : "Retrieve Line Item Usage in JSON Format",
        "description" : "Retrieve the line item with the given UUID in JSON format.\n\nThis endpoint retrieves detailed usage information for a specific billing line item in JSON format. It is designed to provide granular insights into the consumption pattern for the given line item.\n\nThe response includes a pre-signed `downloadUrl`, which must be used with a separate `GET` call to download the Bill line item. This ensures secure access to the requested information.",
        "operationId" : "GetBillLineItemJsonUsage",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "billId",
          "in" : "path",
          "description" : "UUID of the Bill",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Bill line item for which to retrieve the usage.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the download URL",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ObjectUrlResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        },
        "deprecated" : true
      }
    },
    "/organizations/{orgId}/bills/{billId}/creditlineitems" : {
      "get" : {
        "tags" : [ "Credits" ],
        "summary" : "List Credit Line Items",
        "description" : "List the Credit line items for the given Bill.",
        "operationId" : "ListCreditLineItems",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "billId",
          "in" : "path",
          "description" : "UUID of the bill.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of Line Items to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "`nextToken` for multi page retrievals.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a list of credit line items",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedCreditLineItemResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "Credits" ],
        "summary" : "Create Credit Line Item",
        "description" : "Create a new Credit line item for the given Bill.\n \nWhen creating Credit line items for Bills, use the Credit Reasons created for your Organization. See [CreditReason](https://www.m3ter.com/docs/api#tag/CreditReason).",
        "operationId" : "PostCreditLineItem",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "billId",
          "in" : "path",
          "description" : "UUID of the bill.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreditLineItemRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the new credit line item",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CreditLineItemResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/balances/{balanceId}/balancechargeschedules" : {
      "get" : {
        "tags" : [ "BalanceChargeSchedule" ],
        "summary" : "List BalanceChargeSchedule",
        "description" : "Retrieve a list of BalanceChargeSchedule entities",
        "operationId" : "ListBalanceChargeSchedule",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "balanceId",
          "in" : "path",
          "description" : "UUID of the balance",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of BalanceChargeSchedules to retrieve per page",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "nextToken for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maxItems" : 200,
            "type" : "array",
            "nullable" : true,
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "ListBalanceChargeSchedule 200 response",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedBalanceChargeScheduleResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "BalanceChargeSchedule" ],
        "summary" : "Create BalanceChargeSchedule",
        "description" : "Create a new BalanceChargeSchedule.",
        "operationId" : "CreateBalanceChargeSchedule",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "balanceId",
          "in" : "path",
          "description" : "UUID of the balance",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BalanceChargeScheduleRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the created BalanceChargeSchedule",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BalanceChargeScheduleResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/bills/approve" : {
      "post" : {
        "tags" : [ "Bill" ],
        "summary" : "Approve Bills",
        "description" : "Approve multiple Bills for the specified Organization based on the given criteria. \n\nThis endpoint allows you to change currently *Pending* Bills to *Approved* status for further processing.\n\nQuery Parameters:\n- Use `accountIds` to approve Bills for specifed Accounts.\n\nRequest Body Schema Parameter:\n- Use `billIds` to specify a collection of Bills for batch approval.\n\n**Important!** If you use the `billIds` Request Body Schema parameter, any Query parameters you might have also used are ignored when the call is processed.\n\n",
        "operationId" : "ApproveBills",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "externalInvoiceDateStart",
          "in" : "query",
          "description" : "Start date for filtering Bills by external invoice date. Includes Bills with dates equal to or later than this date.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "externalInvoiceDateEnd",
          "in" : "query",
          "description" : "End date for filtering Bills by external invoice date. Includes Bills with dates earlier than this date.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "accountIds",
          "in" : "query",
          "description" : "List of Account IDs to filter Bills. This allows you to approve Bills for specific Accounts within the Organization.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ApproveBillsRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns a message indicating the success/failure of Bills approval",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillApprovalResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/bills/billingperiod/{lastDateInBillingPeriod}/{billingFrequency}" : {
      "get" : {
        "tags" : [ "Bill" ],
        "summary" : "Retrieve Bills in Billing Period",
        "description" : "Retrieve all Bills within a specified billing period. This endpoint allows you to retrieve Bills on various frequencies, such as daily, weekly, monthly, or annually. Specify the last day of the period to define the range. \n\nFor example, to retrieve all Bills on monthly billing up to September with due date of 1st of month, use the last day of September, which is September 30th.\n\nThe list can also be paginated for easier management.",
        "operationId" : "GetAllBillsInBillingPeriod",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of Bills to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of Bills in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lastDateInBillingPeriod",
          "in" : "path",
          "description" : "The last date of the billing period for which you want to retrieve Bills. This date defines the range of Bills to be retrieved.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "billingFrequency",
          "in" : "path",
          "description" : "The billing frequency for the specified period. Valid options are daily, weekly, monthly, or annually.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "additional",
          "in" : "query",
          "description" : "Comma separated list of additional fields.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of Bills within the billing period",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedBillResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/statementjobs" : {
      "get" : {
        "tags" : [ "StatementJob" ],
        "summary" : "List Statement Jobs",
        "description" : "Retrieve a list of StatementJobs.\n\nRetrieves a list of all StatementJobs for a specific Organization. You can filter the results based on:\n* StatementJob status.\n* Whether StatementJob is neither completed nor cancelled but remains active.\n* The ID of the Bill the StatementJob is associated with.\n\nYou can also paginate the results for easier management.\n\n**WARNING!**\n* You can use only one of the valid Query parameters: `active`, `status`, or `billId` in any call. If you use more than one of these Query parameters in the same call, then a 400 Bad Request is returned with an error message.",
        "operationId" : "ListStatementJobs",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of StatementJobs to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of StatementJobs in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "active",
          "in" : "query",
          "description" : "Boolean filter on whether to only retrieve active *(i.e. not completed/cancelled)* StatementJobs.\n\n* TRUE - only active StatementJobs retrieved.\n* FALSE - all StatementJobs retrieved.\n",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "status",
          "in" : "query",
          "description" : "Filter using the StatementJobs status. Possible values:\n\n* `PENDING`\n* `RUNNING`\n* `COMPLETE`\n* `CANCELLED`\n* `FAILED`",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "billId",
          "in" : "query",
          "description" : "Filter Statement Jobs by billId",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns list of StatementJobs",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedStatementJobResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "StatementJob" ],
        "summary" : "Create StatementJob",
        "description" : "This endpoint creates a StatementJob for a single bill within an Organization using the Bill UUID. \n\nThe Bill Statement is generated asynchronously:\n* The default format for generating the Statement is in JSON format and according to the Bill Statement Definition you've specified at either Organization level or Account level.\n* If you also want to generate the Statement in CSV format, use the `includeCsvFormat` request body parameter.\n* The response body provides a time-bound pre-signed URL, which you can use to download the JSON format Statement.\n* When you have generated a Statement for a Bill, you can also obtain a time-bound pre-signed download URL using either the [Retrieve Bill Statement in JSON Format](https://www.m3ter.com/docs/api#tag/Bill/operation/GetBillJsonStatement) and [Retrieve Bill Statement in CSV Format](https://www.m3ter.com/docs/api#tag/Bill/operation/GetBillCsvStatement) calls found in the [Bill](https://www.m3ter.com/docs/api#tag/Bill) section of this API Reference.\n\n**Notes:**\n* If the response to the Create StatementJob call shows the `statementJobStatus` as `PENDING` or `RUNNING`, you will not receive the pre-signed URL in the response. Wait a few minutes to allow the StatementJob to complete and then use the [Get StatmentJob](https://www.m3ter.com/docs/api#tag/StatementJob/operation/GetStatementJob) call in this section to obtain the pre-signed download URL for the generated Bill Statement.\n* When you have submitted a StatementJob and a Bill Statement has been generated, you can also download the Statement directly from a Bill Details page in the Console. See [Working with Bill Statements](https://www.m3ter.com/docs/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements) in our user Documentation.",
        "operationId" : "CreateStatementJob",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/StatementJobRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the created StatementJob",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/StatementJobResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/bills/download/csv/url" : {
      "post" : {
        "tags" : [ "Bill" ],
        "summary" : "Download Bills URL",
        "description" : "Generate a URL for downloading a CSV file containing a comprehensive list of Bills data  for the specified organization for a specified period. This endpoint facilitates easy exporting of billing data for external analysis and reporting.\n\nThe response to this call returns a pre-signed `downloadUrl`, which you then enter into your browser to download the CSV file of the Bill entities.\n\nYou can use the `externalSystem` request parameter to control the format of the Bills data in the CSV file:\n- **STANDARD** A wider range of Bills data columns is given.\n- **XERO** A more limited range of data columns is given and compatible with loading into your 3rd-party Xero system.\n\n**NOTES:** \n- **Download Limits**. You can only download Bills for a period of up to 31 days or up to a maximum of 5000 Bills. If you attempt a download that exceeds either of these two limits, you'll receive an error message\n- **Empty Bills**. The CSV formatted file is compiled for download by taking each of the line items found in Bills that exist in your Organization for the specified period. The Bill for each line item record is given, along with Bill Total and other billing attributes. However, this means that if you have an *empty Bill* that exists for the specified period - one for which *no line items currently exist* - then no line item records will be shown for this Bill in the CSV file you download.",
        "operationId" : "DownloadBillsCsvUrl",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DownloadCsvRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the download URL",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ObjectUrlResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/charges/{id}" : {
      "get" : {
        "tags" : [ "Charge" ],
        "summary" : "Retrieve Charge",
        "description" : "Retrieve a Charge for the given UUID.",
        "operationId" : "GetCharge",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Charge to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the Charge",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ChargeResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "Charge" ],
        "summary" : "Update Charge",
        "description" : "Update a Charge for the given UUID.\n\n**NOTE:** When you update a Charge on an Account, you can provide either a Charge `amount` or Charge `units` together with a `unitPrice`, but *not both*.",
        "operationId" : "UpdateCharge",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Charge to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ChargeRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated Charge",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ChargeResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "Charge" ],
        "summary" : "Delete Charge",
        "description" : "Delete the Charge for the given UUID.",
        "operationId" : "DeleteCharge",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Charge to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the deleted Charge",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ChargeResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/bills/search" : {
      "get" : {
        "tags" : [ "Bill" ],
        "summary" : "Search Bills",
        "description" : "Search for Bill entities.\n\nThis endpoint executes a search query for Bills based on the user specified search criteria. The search query is customizable, allowing for complex nested conditions and sorting. The returned list of Bills can be paginated for easier management.",
        "operationId" : "SearchBills",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "searchQuery",
          "in" : "query",
          "description" : "Query for data using special syntax:\n- Query parameters should be delimited using $ (dollar sign).\n- Allowed comparators are:\n\t- (greater than) >\n\t- (greater than or equal to) >=\n\t- (equal to) : \n\t- (less than) < \n\t- (less than or equal to) <= \n\t- (match phrase/prefix) ~ \n-  Allowed parameters: accountId, locked, billDate, startDate, endDate, dueDate, billingFrequency, id, createdBy, dtCreated, lastModifiedBy, ids.\n-  Query example:\n\t-  searchQuery=startDate>2023-01-01$accountId:62eaad67-5790-407e-b853-881564f0e543.\n\t-  This query is translated into: find Bills that startDate is older than 2023-01-01 AND accountId is equal to 62eaad67-5790-407e-b853-881564f0e543.\n\n**Note:** Using the ~ match phrase/prefix comparator. For best results, we recommend treating this as a \"starts with\" comparator for your search query.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "fromDocument",
          "in" : "query",
          "description" : "`fromDocument` for multi page retrievals.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of Bills to retrieve per page.\n\n**NOTE:** If not defined, default is 10.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "operator",
          "in" : "query",
          "description" : "Search Operator to be used while querying search.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "AND", "OR" ]
          }
        }, {
          "name" : "sortBy",
          "in" : "query",
          "description" : "Name of the parameter on which sorting is performed. Use any field available on the Bill entity to sort by, such as `accountId`, `endDate`, and so on.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "sortOrder",
          "in" : "query",
          "description" : "Sorting order.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "ASC", "DESC" ]
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the Bills matching the search criteria",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedBillResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexports/schedules/{id}" : {
      "get" : {
        "tags" : [ "ExportSchedule" ],
        "summary" : "Retrieve Schedule",
        "description" : "Retrieve a Data Export Schedule for the given UUID. Each Schedule can be configured for exporting *only one* of either Usage or Operational data.\n",
        "operationId" : "GetSchedule",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Schedule to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the requested Export Schedule",
            "content" : {
              "application/json" : {
                "schema" : {
                  "discriminator" : {
                    "propertyName" : "sourceType",
                    "mapping" : {
                      "USAGE" : "#/components/schemas/UsageDataExportConfigurationResponseV2",
                      "OPERATIONAL" : "#/components/schemas/OperationalDataExportConfigurationResponse"
                    }
                  },
                  "oneOf" : [ {
                    "$ref" : "#/components/schemas/OperationalDataExportConfigurationResponse"
                  }, {
                    "$ref" : "#/components/schemas/UsageDataExportConfigurationResponseV2"
                  } ]
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "ExportSchedule" ],
        "summary" : "Update Schedule",
        "description" : "Update a Data Export Schedule for the given UUID. Each Schedule can be configured for exporting *only one* of either Usage or Operational data:\n\n**Operational Data Exports**.\n* Use the `operationalDataTypes` parameter to specify the entities whose operational data you want to include in the export each time the Export Schedule runs.\n* For each of the entity types you select, each time the Export Schedule runs a separate file is compiled containing the operational data for all entities of that type that exist in your Organization\n\n**Usage Data Exports**.\n* Select the Meters and Accounts whose usage data you want to include in the export each time the Export Schedule runs.\n* You can use the `dimensionFilters` parameter to filter the usage data returned for export by adding specific values of non-numeric Dimension data fields on included Meters. Only the data collected for the values you've added for the selected Dimension fields will be included in the export.\n* You can use the `aggregations` to apply aggregation methods the usage data returned for export. This restricts the range of usage data returned for export to only the data collected by aggregated fields on selected Meters. Nothing is returned for any non-aggregated fields on Meters. The usage data for Meter fields is returned as the values resulting from applying the selected aggregation method. See the [Aggregations for Queries - Options and Consequences](https://www.m3ter.com/docs/guides/data-explorer/usage-data-explorer-v2#aggregations-for-queries---understanding-options-and-consequences) for more details.\n* If you've applied `aggregations` to the usage returned for export, you can then use the `groups` parameter to group the data by *Account*, *Dimension*, or *Time*.\n\n",
        "operationId" : "UpdateSchedule",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Schedule to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "discriminator" : {
                  "propertyName" : "sourceType",
                  "mapping" : {
                    "USAGE" : "#/components/schemas/UsageDataExportConfigurationRequestV2",
                    "OPERATIONAL" : "#/components/schemas/OperationalDataExportConfigurationRequest"
                  }
                },
                "oneOf" : [ {
                  "$ref" : "#/components/schemas/OperationalDataExportConfigurationRequest"
                }, {
                  "$ref" : "#/components/schemas/UsageDataExportConfigurationRequestV2"
                } ]
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated Export Schedule",
            "content" : {
              "application/json" : {
                "schema" : {
                  "discriminator" : {
                    "propertyName" : "sourceType",
                    "mapping" : {
                      "USAGE" : "#/components/schemas/UsageDataExportConfigurationResponseV2",
                      "OPERATIONAL" : "#/components/schemas/OperationalDataExportConfigurationResponse"
                    }
                  },
                  "oneOf" : [ {
                    "$ref" : "#/components/schemas/OperationalDataExportConfigurationResponse"
                  }, {
                    "$ref" : "#/components/schemas/UsageDataExportConfigurationResponseV2"
                  } ]
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "ExportSchedule" ],
        "summary" : "Delete Schedule",
        "description" : "Delete the Data Export Schedule for the given UUID. Each Schedule can be configured for exporting *only one* of either Usage or Operational data.",
        "operationId" : "DeleteSchedule",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Schedule to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted Export Schedule.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "discriminator" : {
                    "propertyName" : "sourceType",
                    "mapping" : {
                      "USAGE" : "#/components/schemas/UsageDataExportConfigurationResponseV2",
                      "OPERATIONAL" : "#/components/schemas/OperationalDataExportConfigurationResponse"
                    }
                  },
                  "oneOf" : [ {
                    "$ref" : "#/components/schemas/OperationalDataExportConfigurationResponse"
                  }, {
                    "$ref" : "#/components/schemas/UsageDataExportConfigurationResponseV2"
                  } ]
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexports/destinations" : {
      "get" : {
        "tags" : [ "ExportDestination" ],
        "summary" : "List ExportDestinations",
        "description" : "Retrieve a list of Export Destination entities. You can filter the list of Destinations returned by UUID.",
        "operationId" : "ListDestinations",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of returned Export Destinations to list per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "nextToken for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "List of Export Destination UUIDs to retrieve.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "object"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a list of Export Destinations.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedExportDestinationBaseResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "ExportDestination" ],
        "summary" : "Create ExportDestination",
        "description" : "Create a new Export Destination to use for your Data Export Schedules or Ad-Hoc Data Exports. \n\nCurrently, two options for setting up Data Export Destinations are available:\n* S3 buckets on your AWS account.\n* Buckets in your Google Cloud Storage account.\n\nRequest and Response schema:\n* Use the selector under the `destinationType` parameter to expose the relevant request and response schema for the type of Destination.\n\nRequest and Response samples:\n* Use the **Example** selector to show the relevant request and response samples for the type of Destination.",
        "operationId" : "PostDestination",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "discriminator" : {
                  "propertyName" : "destinationType",
                  "mapping" : {
                    "S3" : "#/components/schemas/ExportDestinationS3Request",
                    "GCS" : "#/components/schemas/ExportDestinationGoogleCloudStorageRequest"
                  }
                },
                "oneOf" : [ {
                  "$ref" : "#/components/schemas/ExportDestinationS3Request"
                }, {
                  "$ref" : "#/components/schemas/ExportDestinationGoogleCloudStorageRequest"
                } ]
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the created Export Destination.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "discriminator" : {
                    "propertyName" : "destinationType",
                    "mapping" : {
                      "S3" : "#/components/schemas/ExportDestinationS3Response",
                      "GCS" : "#/components/schemas/ExportDestinationGoogleCloudStorageResponse"
                    }
                  },
                  "oneOf" : [ {
                    "$ref" : "#/components/schemas/ExportDestinationS3Response"
                  }, {
                    "$ref" : "#/components/schemas/ExportDestinationGoogleCloudStorageResponse"
                  } ]
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexports/destinations/{id}" : {
      "get" : {
        "tags" : [ "ExportDestination" ],
        "summary" : "Retrieve ExportDestination",
        "description" : "Retrieve an Export Destination for the given UUID.",
        "operationId" : "GetExportDestination",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the ExportDestination to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the Export Destination",
            "content" : {
              "application/json" : {
                "schema" : {
                  "discriminator" : {
                    "propertyName" : "destinationType",
                    "mapping" : {
                      "S3" : "#/components/schemas/ExportDestinationS3Response",
                      "GCS" : "#/components/schemas/ExportDestinationGoogleCloudStorageResponse"
                    }
                  },
                  "oneOf" : [ {
                    "$ref" : "#/components/schemas/ExportDestinationS3Response"
                  }, {
                    "$ref" : "#/components/schemas/ExportDestinationGoogleCloudStorageResponse"
                  } ]
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "ExportDestination" ],
        "summary" : "Update ExportDestination",
        "description" : "Update an Export Destination for the given UUID.\n\nCurrently, two options for setting up Data Export Destinations are available:\n* S3 buckets on your AWS account.\n* Buckets in your Google Cloud Storage account.\n\nRequest and Response schema:\n* Use the selector under the `destinationType` parameter to expose the relevant request and response schema for the type of Destination.\n\nRequest and Response samples:\n* Use the **Example** selector to show the relevant request and response samples for the type of Destination.\n",
        "operationId" : "PutDestination",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Export Destination to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "discriminator" : {
                  "propertyName" : "destinationType",
                  "mapping" : {
                    "S3" : "#/components/schemas/ExportDestinationS3Request",
                    "GCS" : "#/components/schemas/ExportDestinationGoogleCloudStorageRequest"
                  }
                },
                "oneOf" : [ {
                  "$ref" : "#/components/schemas/ExportDestinationS3Request"
                }, {
                  "$ref" : "#/components/schemas/ExportDestinationGoogleCloudStorageRequest"
                } ]
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated Export Destination",
            "content" : {
              "application/json" : {
                "schema" : {
                  "discriminator" : {
                    "propertyName" : "destinationType",
                    "mapping" : {
                      "S3" : "#/components/schemas/ExportDestinationS3Response",
                      "GCS" : "#/components/schemas/ExportDestinationGoogleCloudStorageResponse"
                    }
                  },
                  "oneOf" : [ {
                    "$ref" : "#/components/schemas/ExportDestinationS3Response"
                  }, {
                    "$ref" : "#/components/schemas/ExportDestinationGoogleCloudStorageResponse"
                  } ]
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "ExportDestination" ],
        "summary" : "Delete ExportDestination",
        "description" : "Delete an Export Destination for the given UUID.\n\n**NOTE:** If you attempt to delete an Export Destination that is currently linked to a Data Export Schedule, an error message is returned and you won't be able to delete the Destination.",
        "operationId" : "DeleteDestination",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Export Destination to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted Export Destination",
            "content" : {
              "application/json" : {
                "schema" : {
                  "discriminator" : {
                    "propertyName" : "destinationType",
                    "mapping" : {
                      "S3" : "#/components/schemas/ExportDestinationS3Response",
                      "GCS" : "#/components/schemas/ExportDestinationGoogleCloudStorageResponse"
                    }
                  },
                  "oneOf" : [ {
                    "$ref" : "#/components/schemas/ExportDestinationS3Response"
                  }, {
                    "$ref" : "#/components/schemas/ExportDestinationGoogleCloudStorageResponse"
                  } ]
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexports/jobs/{jobId}/getdownloadurl" : {
      "get" : {
        "tags" : [ "ExportDestination" ],
        "summary" : "Get Data Export File Download URL",
        "description" : "Returns a presigned download URL for data export file download based on the `jobId` provided.\n\nIf you omit `destinationIds` when setting up your [Ad-Hoc data exports](https://www.m3ter.com/docs/api#tag/ExportAdHoc) or [Scheduled data exports](https://www.m3ter.com/docs/api#tag/ExportSchedule), then the data is not copied to a destination but is available for you to download using the returned download URL.\n\n**Constraints:**\n* Only valid for Export jobs ran in the past 24 hours.\n* The download URL is time-bound and is only valid for 15 minutes.\n\n**NOTE!** This ExportDestination endpoint is available in Beta release version. See [Feature Release Stages](https://www.m3ter.com/docs/guides/getting-started/feature-release-stages) for Beta release definition.",
        "operationId" : "GenerateDataExportFileDownloadUrl",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "jobId",
          "in" : "path",
          "description" : "The job ID",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a presigned URL for data export file download",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GenerateExportDownloadUrlResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexports/schedules" : {
      "get" : {
        "tags" : [ "ExportSchedule" ],
        "summary" : "List Schedules",
        "description" : "Retrieve a list of Data Export Schedules created for your Organization. You can filter the response by Schedules `ids`.\n\nThe response will contain an array for both the operational and usage Data Export Schedules in your Organization.",
        "operationId" : "listSchedules",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of schedules to retrieve per page",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "`nextToken` for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "Data Export Schedule IDs to filter the returned list by.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "object"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a list of Export Schedules.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedDataExportConfigurationResponseBaseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "ExportSchedule" ],
        "summary" : "Create Schedule",
        "description" : "Create a new Data Export Schedule. Each Schedule can be configured for exporting *only one* of either Usage or Operational data:\n\n**Operational Data Exports**.\n* Use the `operationalDataTypes` parameter to specify the entities whose operational data you want to include in the export each time the Export Schedule runs.\n* For each of the entity types you select, each time the Export Schedule runs a separate file is compiled containing the operational data for all entities of that type that exist in your Organization\n\n**Usage Data Exports**.\n* Select the Meters and Accounts whose usage data you want to include in the export each time the Export Schedule runs.\n* You can use the `dimensionFilters` parameter to filter the usage data returned for export by adding specific values of non-numeric Dimension data fields on included Meters. Only the data collected for the values you've added for the selected Dimension fields will be included in the export.\n* You can use the `aggregations` to apply aggregation methods the usage data returned for export. This restricts the range of usage data returned for export to only the data collected by aggregated fields on selected Meters. Nothing is returned for any non-aggregated fields on Meters. The usage data for Meter fields is returned as the values resulting from applying the selected aggregation method. See the [Aggregations for Queries - Options and Consequences](https://www.m3ter.com/docs/guides/data-explorer/usage-data-explorer-v2#aggregations-for-queries---understanding-options-and-consequences) for more details.\n* If you've applied `aggregations` to the usage returned for export, you can then use the `groups` parameter to group the data by *Account*, *Dimension*, or *Time*.\n\nRequest and Response schema:\n* Use the selector under the `sourceType` parameter to expose the relevant request and response schema for the source data type.\n\nRequest and Response samples:\n* Use the **Example** selector to show the relevant request and response samples for source data type.\n",
        "operationId" : "CreateSchedule",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "discriminator" : {
                  "propertyName" : "sourceType",
                  "mapping" : {
                    "USAGE" : "#/components/schemas/UsageDataExportConfigurationRequestV2",
                    "OPERATIONAL" : "#/components/schemas/OperationalDataExportConfigurationRequest"
                  }
                },
                "oneOf" : [ {
                  "$ref" : "#/components/schemas/OperationalDataExportConfigurationRequest"
                }, {
                  "$ref" : "#/components/schemas/UsageDataExportConfigurationRequestV2"
                } ]
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the created Export Schedule",
            "content" : {
              "application/json" : {
                "schema" : {
                  "discriminator" : {
                    "propertyName" : "sourceType",
                    "mapping" : {
                      "USAGE" : "#/components/schemas/UsageDataExportConfigurationResponseV2",
                      "OPERATIONAL" : "#/components/schemas/OperationalDataExportConfigurationResponse"
                    }
                  },
                  "oneOf" : [ {
                    "$ref" : "#/components/schemas/OperationalDataExportConfigurationResponse"
                  }, {
                    "$ref" : "#/components/schemas/UsageDataExportConfigurationResponseV2"
                  } ]
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexports/jobs/{id}" : {
      "get" : {
        "tags" : [ "ExportJob" ],
        "summary" : "Retrieve Job",
        "description" : "Retrieve an Export Job for the given UUID.\n\nThe response returns:\n* The source type for the data exported by the Export Job: one of USAGE or OPERATIONAL.\n* The status of the Export Job.",
        "operationId" : "GetJob",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Job to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the requested Export Job.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/JobResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexports/jobs" : {
      "get" : {
        "tags" : [ "ExportJob" ],
        "summary" : "List Jobs",
        "description" : "Retrieve a list of Export Job entities.",
        "operationId" : "listJobStatuses",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "List Job entities for the given UUIDs",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "scheduleId",
          "in" : "query",
          "description" : "List Job entities for the schedule UUID",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "status",
          "in" : "query",
          "description" : "List Job entities for the status",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "$ref" : "#/components/schemas/Status"
          }
        }, {
          "name" : "dateCreatedStart",
          "in" : "query",
          "description" : "Include only Job entities created on or after this date. Format: yyyy-MM-dd'T'HH:mm:ss'Z'",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "dateCreatedEnd",
          "in" : "query",
          "description" : "Include only Job entities created before this date. Format: yyyy-MM-dd'T'HH:mm:ss'Z'",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of Jobs to retrieve per page",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "nextToken for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a list Export Job entities",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedJobResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexports/adhoc" : {
      "post" : {
        "tags" : [ "ExportAdHoc" ],
        "summary" : "Trigger data export.",
        "description" : "Trigger an ad-hoc Data Export. Each ad-hoc Export can be configured for exporting *only one of* either Usage or Operational data:\n\n**Operational Data Exports**.\n* **Entity Types**. Use the `operationalDataTypes` parameter to specify the entities whose operational data you want to include in the ad-hoc export.\n* **Export Files**. For each of the entity types you select, when the ad-hoc export runs a separate file is compiled containing the operational data for all entities of that type that exist in your Organization\n\n**Usage Data Exports**.\n* Select the Meters and Accounts whose usage data you want to include in the ad-hoc export.\n* You can use the `dimensionFilters` parameter to filter the usage data returned for export by adding specific values of non-numeric Dimension data fields on included Meters. Only the data collected for the values you've added for the selected Dimension fields will be included in the export.\n* You can use the `aggregations` to apply aggregation methods the usage data returned for export. This restricts the range of usage data returned for export to only the data collected by aggregated fields on selected Meters. Nothing is returned for any non-aggregated fields on Meters. The usage data for Meter fields is returned as the values resulting from applying the selected aggregation method. See the [Aggregations for Queries - Options and Consequences](https://www.m3ter.com/docs/guides/data-explorer/usage-data-explorer-v2#aggregations-for-queries---understanding-options-and-consequences) for more details.\n* If you've applied `aggregations` to the usage returned for export, you can then use the `groups` parameter to group the data by *Account*, *Dimension*, or *Time*.\n\n**Date Range for Operational Data Exports**. To restrict the operational data included in the ad-hoc export by a date/time range, use the `startDate` date/time request parameter to specify the start of the time period. The export will include all operational data from the specified `startDate` up until the date/time the export job runs.\n\n**Date Range for Usage Data Exports**. To restrict the usage data included in the ad-hoc export by date/time range, use the `startDate` and `endDate` date/time parameters:\n* Both `startDate` and `endDate` are required.\n* `endDate` must be after `startDate`.\n* `endDate` cannot be after tomorrow at midnight UTC. For example if today is May 20th 2025, you can only choose `endDate` to be equal or before 2025-05-21T00:00:00.000Z.\n\n**NOTE:** You can use the ExportJob `id` returned to check the status of the triggered ad-hoc export. See the [ExportJob](https://www.m3ter.com/docs/api#tag/ExportJob) section of this API Reference.",
        "operationId" : "TriggerDataExport",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "discriminator" : {
                  "propertyName" : "sourceType",
                  "mapping" : {
                    "USAGE" : "#/components/schemas/AdHocUsageDataExportConfigurationRequestV2",
                    "OPERATIONAL" : "#/components/schemas/AdHocOperationalDataExportConfigurationRequest"
                  }
                },
                "oneOf" : [ {
                  "$ref" : "#/components/schemas/AdHocOperationalDataExportConfigurationRequest"
                }, {
                  "$ref" : "#/components/schemas/AdHocUsageDataExportConfigurationRequestV2"
                } ]
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the job id for the ah-hoc data export.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AdHocResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/usage/savedqueries" : {
      "get" : {
        "tags" : [ "DataExplorerV2" ],
        "summary" : "List UsageSavedQueries",
        "description" : "Retrieve a list of UsageSavedQuery entities",
        "operationId" : "ListUsageSavedQueries",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of UsageSavedQueries to retrieve per page",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "nextToken for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "",
          "required" : false,
          "style" : "form",
          "explode" : false,
          "schema" : {
            "maxItems" : 200,
            "type" : "array",
            "nullable" : true,
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "queryType",
          "in" : "query",
          "description" : "",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "ListUsageSavedQueries 200 response",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedUsageSavedQueryResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "DataExplorerV2" ],
        "summary" : "Create UsageSavedQuery",
        "description" : "Create a new UsageSavedQuery.",
        "operationId" : "CreateUsageSavedQuery",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UsageSavedQueryRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the created UsageSavedQuery",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UsageSavedQueryResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/usage/savedqueries/{id}" : {
      "get" : {
        "tags" : [ "DataExplorerV2" ],
        "summary" : "Retrieve UsageSavedQuery",
        "description" : "Retrieve a UsageSavedQuery for the given UUID.",
        "operationId" : "GetUsageSavedQuery",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the UsageSavedQuery to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the UsageSavedQuery",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UsageSavedQueryResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "DataExplorerV2" ],
        "summary" : "Update UsageSavedQuery",
        "description" : "Update a UsageSavedQuery for the given UUID.",
        "operationId" : "UpdateUsageSavedQuery",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the UsageSavedQuery to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UsageSavedQueryRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the updated UsageSavedQuery",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UsageSavedQueryResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "DataExplorerV2" ],
        "summary" : "Delete UsageSavedQuery",
        "description" : "Delete the UsageSavedQuery for the given UUID.",
        "operationId" : "DeleteUsageSavedQuery",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the UsageSavedQuery to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the deleted UsageSavedQuery",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UsageSavedQueryResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/usage/query" : {
      "post" : {
        "tags" : [ "DataExplorerV2" ],
        "summary" : "Query and filter usage data",
        "description" : "Query and filter usage data collected for your Organization.\n\nYou can use several parameters to filter the range of usage data returned:\n* **Time period.** Use `startDate` and `endDate` to define a period. The query references the `timestamp` values of usage data submissions for applying the defined time period, and not the time submissions were `receivedAt` by the platform. Only usage data with a `timestamp` that falls in the defined time period are returned.(Required)\n* **Meters.** Specify the Meters you want the query to return data for.\n* **Accounts.** Specify the Accounts you want the query to return data for.\n* **Dimension Filters.** Specify values for Dimension data fields on included Meters. Only data that match the specified Dimension field values will be returned for the query.\n\nYou can apply Aggregations functions to the usage data returned for the query. If you apply Aggregations, you can select to group the data by:\n* **Account**\n* **Time**\n* **Dimension**",
        "operationId" : "PostUsageDataQuery",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UsageQueryRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns a list of usage data",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UsageQueryResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/measurements/failedIngest/getDownloadUrl" : {
      "get" : {
        "tags" : [ "Measurements" ],
        "summary" : "Get Failed Ingest File Download URL",
        "description" : "Returns a presigned download URL for failed ingest file download based on the file path provided.\n\nIf a usage data ingest measurement you submit to the m3ter platform fails, an `ingest.validation.failure` Event is generated. Use this call to obtain a download URL which you can then use to download a file containing details of what went wrong with the attempted usage data measurement ingest, and allowing you to follow-up and resolve the issue.\n\nTo obtain the `file` query parameter:\n- Use the [List Events](https://www.m3ter.com/docs/api#tag/Events/operation/ListEventFields) call with the `ingest.validation.failure` for the `eventName` query parameter.\n- The response contains a `getDownloadUrl` response parameter and this contains the file path you can use to obtain the failed ingest file download URL.\n\n**Notes:**\n- The presigned Url returned to use for failed ingest file download is time-bound and expires after 5 minutes.\n- If you make a List Events call for `ingest.validation.failure` Events in your Organization, then you can perform this **GET** call using the full URL returned for any ingest failure Event to obtain a failed ingest file download URL for the Event.",
        "operationId" : "GetValidationErrorDownloadUrl",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "file",
          "in" : "query",
          "description" : "The file path",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a presigned URL for failed ingest file download",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/GenerateDownloadUrlResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        },
        "security" : [ {
          "OAuth2" : [ "measurements:retrieve" ]
        } ]
      }
    },
    "/organizations/{orgId}/picklists/transactiontypes/{id}" : {
      "get" : {
        "tags" : [ "TransactionType" ],
        "summary" : "Retrieve TransactionType",
        "description" : "Retrieves the TransactionType with the given UUID from the specified Organization.\n\n",
        "operationId" : "GetTransactionType",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the TransactionType to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the specified TransactionType",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TransactionTypeResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "TransactionType" ],
        "summary" : "Update TransactionType",
        "description" : "Updates the TransactionType with the specified UUID for the specified Organization. Update details for the TransactionType should be included in the request body. ",
        "operationId" : "UpdateTransactionType",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifer (UUID) of the TransactionType to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/TransactionTypeRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated TransactionType",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TransactionTypeResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "TransactionType" ],
        "summary" : "Delete TransactionType",
        "description" : "Deletes the TransactionType with the given UUID from the specified Organization.",
        "operationId" : "DeleteTransactionType",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the TransactionType to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted TransactionType",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TransactionTypeResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/plantemplates" : {
      "get" : {
        "tags" : [ "PlanTemplate" ],
        "summary" : "List PlanTemplates",
        "description" : "Retrieve a list of PlanTemplates. \n\nThis endpoint enables you to retrieve a paginated list of PlanTemplates belonging to a specific Organization, identified by its UUID. You can filter the list by PlanTemplate IDs or Product IDs for more focused retrieval.",
        "operationId" : "ListPlanTemplates",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of PlanTemplates to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of PlanTemplates in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "productId",
          "in" : "query",
          "description" : "The unique identifiers (UUIDs) of the Products to retrieve associated PlanTemplates.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "List of specific PlanTemplate UUIDs to retrieve. ",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of requested PlanTemplates",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedPlanTemplateResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "PlanTemplate" ],
        "summary" : "Create PlanTemplate",
        "description" : "Create a new PlanTemplate.\n\nThis endpoint creates a new PlanTemplate within a specific Organization, identified by its unique UUID. The request body should contain the necessary information for the new PlanTemplate.",
        "operationId" : "PostPlanTemplate",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PlanTemplateRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the created PlanTemplate",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PlanTemplateResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/statementdefinitions/{id}" : {
      "get" : {
        "tags" : [ "StatementDefinition" ],
        "summary" : "Retrieve StatementDefinition",
        "description" : "Retrieve a StatementDefinition with the given UUID.\n\nRetrieves the details of a specific StatementDefinition for the specified Organization, using its unique identifier (UUID). This endpoint is useful when you want to retrieve the complete details of a single StatementDefinition.",
        "operationId" : "GetStatementDefinition",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the StatementDefinition to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the StatementDefinition",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/StatementDefinitionResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "StatementDefinition" ],
        "summary" : "Update StatementDefinition",
        "description" : "Update StatementDefinition for the given UUID.\n\nUpdate the details of a specific StatementDefinition for the specified Organization, using its unique identifier (UUID). The updated details for the StatementDefinition should be sent in the request body. ",
        "operationId" : "PutStatementDefinition",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/StatementDefinitionRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated StatementDefinition",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/StatementDefinitionResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "StatementDefinition" ],
        "summary" : "Delete StatementDefinition",
        "description" : "Delete a StatementDefinition with the given UUID.\n\nThis endpoint deletes a specific StatementDefinition within a specified Organization, using the StatementDefinition UUID.",
        "operationId" : "DeleteStatementDefinition",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the StatementDefinition to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted StatementDefinition",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/StatementDefinitionResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/support" : {
      "get" : {
        "tags" : [ "Support" ],
        "summary" : "Retrieve Support Details",
        "description" : "Get support user details on the specific permissions applied and the date and time support access ends.",
        "operationId" : "GetSupport",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns Support User details",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SupportResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "Support" ],
        "summary" : "Request Support",
        "description" : "Use this call to make a request and grant m3ter Support access to your Organization for a specified timeframe and with specific permissions assigned to Support users. You might want to grant Support access when you've submitted a request for help in resolving an issue you've encountered in your Organization",
        "operationId" : "PutSupport",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SupportRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns Support request details",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SupportResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/accountplans/{id}" : {
      "get" : {
        "tags" : [ "AccountPlan" ],
        "summary" : "Retrieve AccountPlan",
        "description" : "Retrieve the AccountPlan or AccountPlanGroup details corresponding to the given UUID.",
        "operationId" : "GetAccountPlan",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the AccountPlan or AccountPlanGroup to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the AccountPlan or AccountPlanGroup",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AccountPlanResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "AccountPlan" ],
        "summary" : "Update AccountPlan",
        "description" : "Update the AccountPlan or AccountPlanGroup with the given UUID.\n\nThis endpoint updates a new AccountPlan or AccountPlanGroup for a specific Account in your Organization. The updated information should be provided in the request body.\n\n**Notes:**\n* You cannot use this call to update *both* an AccountPlan and AccountPlanGroup for an Account at the same time. If you want to update an AccounPlan and an AccountPlanGroup attached to an Account, you must submit two separate calls.\n* If you have created Custom Fields for an AccountPlan, when you use this endpoint to update the AccountPlan use the `customFields` parameter to preserve those Custom Fields. If you omit them from the update request, they will be lost.",
        "operationId" : "PutAccountPlan",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the AccountPlan or AccountPlanGroup to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AccountPlanRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated AccountPlan or AccountPlanGroup.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AccountPlanResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "AccountPlan" ],
        "summary" : "Delete AccountPlan",
        "description" : "Delete the AccountPlan or AccountPlanGroup with the given UUID.\n\nThis endpoint deletes an AccountPlan or AccountPlanGroup that has been attached to a specific Account in your Organization.",
        "operationId" : "DeleteAccountPlan",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifer (UUID) of the AccountPlan or AccountPlanGroup to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted AccountPlan or AccountPlanGroup",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AccountPlanResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/contracts" : {
      "get" : {
        "tags" : [ "Contract" ],
        "summary" : "List Contracts",
        "description" : "Retrieves a list of Contracts by Organization ID. Supports pagination and includes various query parameters to filter the Contracts returned based on Contract IDs or short codes.",
        "operationId" : "ListContracts",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of Contracts to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of Contracts in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "An optional parameter to filter the list based on specific Contract unique identifiers (UUIDs).",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "codes",
          "in" : "query",
          "description" : "An optional parameter to retrieve specific Contracts based on their short codes.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "accountId",
          "in" : "query",
          "description" : "",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maxLength" : 36,
            "minLength" : 36,
            "type" : "string",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a list of Contracts",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedContractResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "Contract" ],
        "summary" : "Create Contract",
        "description" : "Creates a new Contract for the specified Account. The Contract includes information such as the associated Account along with start and end dates.\n\nIf you intend to bill an Account on a Contract basis, you can use the `billGroupingKeyId`, `applyContractPeriodLimits`, and `usageFilters` request parameters to control Contract billing.",
        "operationId" : "PostContract",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ContractRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the created Contract",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ContractResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/contracts/{id}/enddatebillingentities" : {
      "put" : {
        "tags" : [ "Contract" ],
        "summary" : "End-date Contract Account billing entities",
        "description" : "Apply the specified end-date to billing entities associated with Accounts the Contract has been added to, and apply the end-date to the Contract itself.\n\n**NOTES:**\n- If you want to apply the end-date to the Contract *itself* - the Contract `id` you use as the required PATH PARAMETER - you must also specify `CONTRACT` as a  `billingEntities` option in the request body schema.\n- Only the Contract whose id you specify for the PATH PARAMETER will be end-dated. If there are other Contracts associated with the Account, these will not be end-dated.\n- When you successfully end-date billing entities, the version number of each entity is incremented.",
        "operationId" : "EndDateBillingEntitiesForContract",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "Unique identifier (UUID) of the Contract - the specified billing entities associated with the Account the Contract has been added to will be end-dated.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/EndDateBillingEntitiesRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the status and details of the updated active billing entities",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EndDateBillingEntitiesResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/pricings/{id}" : {
      "get" : {
        "tags" : [ "Pricing" ],
        "summary" : "Retrieve Pricing",
        "description" : "Retrieve the Pricing with the given UUID.",
        "operationId" : "GetPricing",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Pricing to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the requested Pricing",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PricingResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "Pricing" ],
        "summary" : "Update Pricing",
        "description" : "Update Pricing for the given UUID.\n\n**Notes:**\n* Exactly one of `planId` or `planTemplateId` request parameters are required for this call to be valid. If you omit both, then you will receive a validation error.\n* Exactly one of `aggregationId` or `compoundAggregationId` request parameters are required for this call to be valid. If you omit both, then you will receive a validation error.",
        "operationId" : "PutPricing",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Pricing to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PricingRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated Pricing",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PricingResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "Pricing" ],
        "summary" : "Delete Pricing",
        "description" : "Delete the Pricing with the given UUID.",
        "operationId" : "DeletePricing",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Pricing to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the deleted Pricing",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PricingResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/accounts/search" : {
      "get" : {
        "tags" : [ "Account" ],
        "summary" : "Search Accounts",
        "description" : "Search for Account entities.\n\nThis endpoint executes a search query for Accounts based on the user specified search criteria. The search query is customizable, allowing for complex nested conditions and sorting. The returned list of Accounts can be paginated for easier management.",
        "operationId" : "SearchAccounts",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "searchQuery",
          "in" : "query",
          "description" : "Query for data using special syntax:\n- Query parameters should be delimited using the $ (dollar sign).\n- Allowed comparators are:\n\t- (greater than) > \n\t- (greater than or equal to) >= \n\t- (equal to) : \n\t- (less than) <\n\t- (less than or equal to) <=\n\t- (match phrase/prefix) ~\n-  Allowed parameters are: name, code, currency, purchaseOrderNumber, parentAccountId, codes, id, createdBy, dtCreated, lastModifiedBy, ids.\n-  Query example: \n\t-  searchQuery=name~Premium On$currency:USD.\n\t-  This query is translated into: find accounts whose name contains the phrase/prefix 'Premium On' AND the account currency is USD.\n\n**Note:** Using the ~ match phrase/prefix comparator. For best results, we recommend treating this as a \"starts with\" comparator for your search query.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "fromDocument",
          "in" : "query",
          "description" : "`fromDocument` for multi page retrievals.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of Accounts to retrieve per page.\n\n**NOTE:** If not defined, default is 10.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "operator",
          "in" : "query",
          "description" : "Search Operator to be used while querying search.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "AND", "OR" ]
          }
        }, {
          "name" : "sortBy",
          "in" : "query",
          "description" : "Name of the parameter on which sorting is performed. Use any field available on the Account entity to sort by, such as `name`, `code`, and so on.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "sortOrder",
          "in" : "query",
          "description" : "Sorting order.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "ASC", "DESC" ]
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the Accounts that match the search criteria",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedAccountResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/picklists/creditreasons" : {
      "get" : {
        "tags" : [ "CreditReason" ],
        "summary" : "List Credit Reasons",
        "description" : "Retrieve a list of the Credit Reason entities created for your Organization. You can filter the list returned for the call by Credit Reason ID, Credit Reason short code, or by Archive status. ",
        "operationId" : "ListCreditReasons",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of credit reasons to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "`nextToken` for multi page retrievals.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "List of Credit Reason IDs to retrieve.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "codes",
          "in" : "query",
          "description" : "List of Credit Reason short codes to retrieve.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "archived",
          "in" : "query",
          "description" : "TRUE / FALSE archived flag to filter the list. CreditReasons can be archived once they are obsolete.\n\n* TRUE includes archived CreditReasons.\n* FALSE excludes CreditReasons that are archived. ",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "boolean"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of CreditReasons",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedCreditReasonResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "CreditReason" ],
        "summary" : "Create Credit Reason",
        "description" : "Create a new Credit Reason for your Organization. When you've created a Credit Reason, it becomes available as a credit type for adding Credit line items to Bills. See [Credits](https://www.m3ter.com/docs/api#tag/Credits).",
        "operationId" : "CreateCreditReason",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreditReasonRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the created Credit Reason",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CreditReasonResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/meters/{id}" : {
      "get" : {
        "tags" : [ "Meter" ],
        "summary" : "Retrieve Meter",
        "description" : "Retrieve the Meter with the given UUID.",
        "operationId" : "GetMeter",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Meter to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the requested Meter",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/MeterResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "Meter" ],
        "summary" : "Update Meter",
        "description" : "Update the Meter with the given UUID.\n\n**Note:** If you have created Custom Fields for a Meter, when you use this endpoint to update the Meter use the `customFields` parameter to preserve those Custom Fields. If you omit them from the update request, they will be lost.",
        "operationId" : "PutMeter",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Meter to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/MeterRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the updated Meter",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/MeterResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "Meter" ],
        "summary" : "Delete Meter",
        "description" : "Delete the Meter with the given UUID.",
        "operationId" : "DeleteMeter",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Meter to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the deleted Meter",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/MeterResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/commitments/{id}" : {
      "get" : {
        "tags" : [ "Commitments" ],
        "summary" : "Retrieve Commitment",
        "description" : "Retrieve a specific Commitment.\n\nRetrieve the details of the Commitment with the given UUID. It provides comprehensive information about the Commitment, such as the agreed amount, overage surcharge percentage, and other related details.",
        "operationId" : "GetCommitment",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Commitment to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the Commitment",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CommitmentResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "Commitments" ],
        "summary" : "Update Commitment",
        "description" : "Modify a specific Commitment.\n\nUpdate the details of the Commitment with the given UUID. Use this endpoint to adjust Commitment parameters such as the fixed amount, overage surcharge percentage, or associated contract details.",
        "operationId" : "PutCommitment",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) for the Commitment to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CommitmentRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated Commitment",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CommitmentResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "Commitments" ],
        "summary" : "Delete Commitment",
        "description" : "Remove a specific Commitment.\n\nDeletes the Commitment with the given UUID. Use this endpoint when a Commitment is no longer valid or needs to be removed from the system.",
        "operationId" : "DeleteCommitment",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your organization. The Organization represents your company as a direct customer our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) for the Commitment to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted Commitment",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CommitmentResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/accounts/{id}/enddatebillingentities" : {
      "put" : {
        "tags" : [ "Account" ],
        "summary" : "End-date Account billing entities",
        "description" : "Apply the specified end-date to billing entities associated with an Account.\n\n**NOTE:**\n- When you successfully end-date billing entities, the version number of each entity is incremented.",
        "operationId" : "EndDateBillingEntitiesForAccount",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Account.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/EndDateBillingEntitiesRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the status and details of the updated active billing entities.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EndDateBillingEntitiesResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/picklists/transactiontypes" : {
      "get" : {
        "tags" : [ "TransactionType" ],
        "summary" : "List TransactionTypes",
        "description" : "Retrieves a list of TransactionType entities for the specified Organization. The list can be paginated for easier management, and supports filtering by various parameters. ",
        "operationId" : "ListTransactionTypes",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of TransactionTypes to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of TransactionTypes in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "A list of TransactionType unique identifiers (UUIDs) to retrieve.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "codes",
          "in" : "query",
          "description" : "A list of TransactionType short codes to retrieve.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "archived",
          "in" : "query",
          "description" : "Filter with this Boolean flag whether to include TransactionTypes that are archived. \n\n* TRUE - include archived TransactionTypes in the list.\n* FALSE - exclude archived TransactionTypes. ",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "boolean"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a list of TransactionTypes",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedTransactionTypeResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "TransactionType" ],
        "summary" : "Create TransactionType",
        "description" : "Create a new TransactionType for the specified Organization. Details of the new TransactionType should be included in the request body.",
        "operationId" : "CreateTransactionType",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/TransactionTypeRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the created TransactionType",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TransactionTypeResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/products/{id}" : {
      "get" : {
        "tags" : [ "Product" ],
        "summary" : "Retrieve Product",
        "description" : "Retrieve a Product with the given UUID.\n\nThis endpoint retrieves the details of a specific Product within a specified Organization, using the Product UUID.",
        "operationId" : "GetProduct",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Product to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the Product",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProductResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "Product" ],
        "summary" : "Update Product",
        "description" : "Update a Product with the given UUID.\n\nThis endpoint updates the details of a specific Product within a specified Organization, using the Product UUID. The updated details are provided in the request body.\n\n**Note:** If you have created Custom Fields for a Product, when you use this endpoint to update the Product use the `customFields` parameter to preserve those Custom Fields. If you omit them from the update request, they will be lost.",
        "operationId" : "PutProduct",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifer (UUID) of the Product to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ProductRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated Product",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProductResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "Product" ],
        "summary" : "Delete Product",
        "description" : "Delete a Product with the given UUID.\n\nThis endpoint deletes a specific Product within a specified Organization, using the Product UUID.",
        "operationId" : "DeleteProduct",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifer (UUID) of the Product to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted Product",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProductResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/meters" : {
      "get" : {
        "tags" : [ "Meter" ],
        "summary" : "List Meters",
        "description" : "Retrieve a list of Meters that can be filtered by Product, Meter ID, or Meter short code. ",
        "operationId" : "ListMeters",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of Meters to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "`nextToken` for multi page retrievals.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "productId",
          "in" : "query",
          "description" : "The UUIDs of the Products to retrieve Meters for.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "List of Meter IDs to retrieve.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "codes",
          "in" : "query",
          "description" : "List of Meter codes to retrieve. These are the unique short codes that identify each Meter.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of Meters",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedMeterResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "Meter" ],
        "summary" : "Create Meter",
        "description" : "Create a new Meter.\n\nWhen you create a Meter, you can define two types of field for usage data collection and ingest into the platform:\n- `dataFields` to collect raw usage data measures - numeric quantitative data values or non-numeric point data values.\n- `derivedFields` to derive usage data measures that are the result of applying a calculation to `dataFields`, `customFields`, or system `Timestamp` fields.\n\nYou can also:\n- Create `customFields` for a Meter, which allows you to attach custom data to the Meter as name/value pairs.\n- Create Global Meters, which are not tied to a specific Product and allow you collect to usage data that will form the basis of usage-based pricing across more than one of your Products.\n\n**IMPORTANT! - use of PII:** The use of any of your end-customers' Personally Identifiable Information (PII) in m3ter is restricted to a few fields on the **Account** entity. Please ensure that any fields you configure for Meters, such as Data Fields or Derived Fields, do not contain any end-customer PII data. See the [Introduction section](https://www.m3ter.com/docs/api#section/Introduction) above for more details.\n\nSee also:\n- [Reviewing Meter Options](https://www.m3ter.com/docs/guides/setting-up-usage-data-meters-and-aggregations/reviewing-meter-options).",
        "operationId" : "PostMeter",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/MeterRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the created Meter",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/MeterResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/picklists/billgroupingkeys" : {
      "get" : {
        "tags" : [ "BillGroupingKey" ],
        "summary" : "List Bill Grouping Keys",
        "description" : "Retrieve a list of Bill Grouping Keys created for your Organization.",
        "operationId" : "ListBillGroupingKeys",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of Bill Grouping Keys to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "`nextToken` for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "List of Bill Grouping Key IDs to retrieve.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "codes",
          "in" : "query",
          "description" : "List of Bill Grouping Key codes to retrieve.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "archived",
          "in" : "query",
          "description" : "Filter by archived flag",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "boolean"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a list of BillGroupingKeys",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedBillGroupingKeyResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "BillGroupingKey" ],
        "summary" : "Create BillGroupingKey",
        "description" : "Create a new Bill Grouping Key.",
        "operationId" : "CreateBillGroupingKey",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization.The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BillGroupingKeyRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the created BillGroupingKey",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillGroupingKeyResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/accounts/{id}/children" : {
      "get" : {
        "tags" : [ "Account" ],
        "summary" : "List Account Children",
        "description" : "Retrieve a list of Accounts that are children of the specified Account.",
        "operationId" : "ListAccountChildren",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization.\nThe Organization represents your company as a direct customer of the m3ter service. ",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Account to list children for.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32",
            "nullable" : true
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of child Accounts",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedAccountResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/picklists/billgroupingkeys/{id}" : {
      "get" : {
        "tags" : [ "BillGroupingKey" ],
        "summary" : "Retrieve BillGroupingKey",
        "description" : "Retrieve a Bill Grouping Key for the given UUID.",
        "operationId" : "GetBillGroupingKey",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Bill Grouping Key to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the BillGroupingKey.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillGroupingKeyResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "BillGroupingKey" ],
        "summary" : "Update BillGroupingKey",
        "description" : "Update a Bill Grouping Key for the given UUID.",
        "operationId" : "UpdateBillGroupingKey",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Bill Grouping Key to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BillGroupingKeyRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated BillGroupingKey",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillGroupingKeyResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "BillGroupingKey" ],
        "summary" : "Delete BillGroupingKey",
        "description" : "Delete a Bill Grouping Key for the given UUID.",
        "operationId" : "DeleteBillGroupingKey",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Bill Grouping Key to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted BillGroupingKey",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillGroupingKeyResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/compoundaggregations/{id}" : {
      "get" : {
        "tags" : [ "CompoundAggregation" ],
        "summary" : "Retrieve Compound Aggregation",
        "description" : "Retrieve a Compound Aggregation using the given UUID.\n\nThis endpoint returns a specific Compound Aggregation associated with an Organization. It provides detailed information about the Compound Aggregation. ",
        "operationId" : "GetCompoundAggregation",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Compound Aggregation to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the Compound Aggregation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CompoundAggregationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "CompoundAggregation" ],
        "summary" : "Update Compound Aggregation",
        "description" : "Update the Compound Aggregation with the given UUID.\n\nThis endpoint allows you to update the details of a specific Compound Aggregation associated with an Organization. Use it to modify details of an existing Compound Aggregation such as the Calculation formula.\n\n**Note:** If you have created Custom Fields for a Compound Aggregation, when you use this endpoint to update the Compound Aggregation use the `customFields` parameter to preserve those Custom Fields. If you omit them from the update request, they will be lost.",
        "operationId" : "PutCompoundAggregation",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Compound Aggregation to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CompoundAggregationRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated Compound Aggregation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CompoundAggregationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "CompoundAggregation" ],
        "summary" : "Delete Compound Aggregation",
        "description" : "Delete a Compound Aggregation with the given UUID.\n\nThis endpoint enables deletion of a specific Compound Aggregation associated with a specific Organization. Useful when you need to remove an existing Compound Aggregation that is no longer required, such as when changing pricing or planning models.",
        "operationId" : "DeleteCompoundAggregation",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Compound Aggregation to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted Compound Aggregation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CompoundAggregationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/commitments" : {
      "get" : {
        "tags" : [ "Commitments" ],
        "summary" : "List Commitments",
        "description" : "Retrieve a list of Commitments.\n\nRetrieves a list of all Commitments associated with an Organization. This endpoint supports pagination and includes various query parameters to filter the Commitments based on Account, Product, date, and end dates.",
        "operationId" : "ListCommitments",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of Commitments to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of Commitments in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "accountId",
          "in" : "query",
          "description" : "The unique identifier (UUID) for the Account. This parameter helps filter the Commitments related to a specific end-customer Account.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        }, {
          "name" : "productId",
          "in" : "query",
          "description" : "The unique identifier (UUID) for the Product. This parameter helps filter the Commitments related to a specific Product.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        }, {
          "name" : "date",
          "in" : "query",
          "description" : "A date *(in ISO-8601 format)* to filter Commitments which are active on this specific date.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "endDateStart",
          "in" : "query",
          "description" : "A date *(in ISO-8601 format)* used to filter Commitments. Only Commitments with end dates on or after this date will be included.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "endDateEnd",
          "in" : "query",
          "description" : "A date *(in ISO-8601 format)* used to filter Commitments. Only Commitments with end dates before this date will be included.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "A list of unique identifiers (UUIDs) for the Commitments to retrieve. Use this to fetch specific Commitments in a single request.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "contractId",
          "in" : "query",
          "description" : "",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maxLength" : 36,
            "type" : "string",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a list of Commitments",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedCommitmentResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "Commitments" ],
        "summary" : "Create Commitment",
        "description" : "Create a new Commitment.\n\nCreates a new Commitment for an Organization. The request body must include all the necessary details such as the agreed amount, overage surcharge percentage, and the associated account and product details.\n\n**Note:** If some of the agreed Commitment amount remains unpaid at the start of an end-customer contract period, when you create a Commitment for an Account you can set up billing for the outstanding amount in one of two ways:\n- Select a Product *Plan to bill with*. Use the `billingPlanId` request parameter to select the Plan used for billing.\n- Define a *schedule of billing dates*. Omit a `billingPlanId` and use the `feeDates` request parameter to define a precise schedule of bill dates and amounts.",
        "operationId" : "PostCommitment",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. This represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CommitmentRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the created Commitment",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CommitmentResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/picklists/creditreasons/{id}" : {
      "get" : {
        "tags" : [ "CreditReason" ],
        "summary" : "Retrieve Credit Reason",
        "description" : "Retrieve the Credit Reason with the given UUID.",
        "operationId" : "GetCreditReason",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Credit Reason to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the Credit Reason",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CreditReasonResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "CreditReason" ],
        "summary" : "Update Credit Reason",
        "description" : "Update the Credit Reason with the given UUID.",
        "operationId" : "UpdateCreditReason",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Credit Reason to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CreditReasonRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the updated Credit Reason",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CreditReasonResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "CreditReason" ],
        "summary" : "Delete Credit Reason",
        "description" : "Delete the Credit Reason with the given UUID.",
        "operationId" : "DeleteCreditReason",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Credit Reason to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the deleted Credit Reason",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CreditReasonResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/plangrouplinks" : {
      "get" : {
        "tags" : [ "PlanGroupLink" ],
        "summary" : "List PlanGroupLinks",
        "description" : "Retrieve a list of PlanGroupLink entities",
        "operationId" : "ListPlanGroupLinks",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of PlanGroupLinks to retrieve per page",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "nextToken for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "planGroup",
          "in" : "query",
          "description" : "UUID of the PlanGroup to retrieve PlanGroupLinks for",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        }, {
          "name" : "plan",
          "in" : "query",
          "description" : "UUID of the Plan to retrieve PlanGroupLinks for",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "list of IDs to retrieve",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "ListPlanGroupLinks 200 response",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedPlanGroupLinkResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "PlanGroupLink" ],
        "summary" : "Create PlanGroupLink",
        "description" : "Create a new PlanGroupLink.",
        "operationId" : "PostPlanGroupLink",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PlanGroupLinkRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the created PlanGroupLink",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PlanGroupLinkResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/plangroups" : {
      "get" : {
        "tags" : [ "PlanGroup" ],
        "summary" : "List PlanGroups",
        "description" : "Retrieve a list of PlanGroups.\n\nRetrieves a list of PlanGroups within the specified organization. You can optionally filter by Account IDs or PlanGroup IDs, and also paginate the results for easier management.",
        "operationId" : "ListPlanGroups",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of PlanGroups to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of PlanGroups in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "accountId",
          "in" : "query",
          "description" : "Optional filter. The list of Account IDs to which the PlanGroups belong.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "Optional filter. The list of PlanGroup IDs to retrieve.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of PlanGroups",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedPlanGroupResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "PlanGroup" ],
        "summary" : "Create PlanGroup",
        "description" : "Create a new PlanGroup.\nThis endpoint creates a new PlanGroup within the specified organization.",
        "operationId" : "PostPlanGroup",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PlanGroupRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the created PlanGroup",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PlanGroupResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/plangroups/{id}" : {
      "get" : {
        "tags" : [ "PlanGroup" ],
        "summary" : "Retrieve PlanGroup",
        "description" : "Retrieve a specific PlanGroup with the given UUID.\n\nThis endpoint retrieves detailed information about a specific PlanGroup identified by the given UUID within a specific organization.",
        "operationId" : "GetPlanGroup",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the PlanGroup to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the requested PlanGroup",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PlanGroupResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "PlanGroup" ],
        "summary" : "Update PlanGroup",
        "description" : "Update the PlanGroup with the given UUID.\n\nThis endpoint updates the details of a specific PlanGroup identified by the given UUID within a specific organization. This allows modifications to existing PlanGroup attributes.\n\n**Note:** If you have created Custom Fields for a PlanGroup, when you use this endpoint to update the PlanGroup use the `customFields` parameter to preserve those Custom Fields. If you omit them from the update request, they will be lost.",
        "operationId" : "PutPlanGroup",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the PlanGroup to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PlanGroupRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated PlanGroup",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PlanGroupResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "PlanGroup" ],
        "summary" : "Delete PlanGroup",
        "description" : "Delete a PlanGroup with the given UUID.\n\nThis endpoint deletes the PlanGroup identified by the given UUID within a specific organization. This operation is irreversible and removes the PlanGroup along with any associated settings.",
        "operationId" : "DeletePlanGroup",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the PlanGroup to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted PlanGroup",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PlanGroupResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/counterpricings" : {
      "get" : {
        "tags" : [ "CounterPricing" ],
        "summary" : "List CounterPricings",
        "description" : "Retrieve a list of CounterPricing entities filtered by date, Plan ID, Plan Template ID, or CounterPricing ID.",
        "operationId" : "ListCounterPricings",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of CounterPricings to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "`nextToken` for multi page retrievals.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "date",
          "in" : "query",
          "description" : "Date on which to retrieve active CounterPricings.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "planId",
          "in" : "query",
          "description" : "UUID of the Plan to retrieve CounterPricings for.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "planTemplateId",
          "in" : "query",
          "description" : "UUID of the Plan Template to retrieve CounterPricings for.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "List of CounterPricing IDs to retrieve.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of requested CounterPricings",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedCounterPricingResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "CounterPricing" ],
        "summary" : "Create CounterPricing",
        "description" : "Create a new CounterPricing.\n\n**Note:** Either `planId` or `planTemplateId` request parameters are required for this call to be valid. If you omit both, then you will receive a validation error.",
        "operationId" : "PostCounterPricing",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CounterPricingRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the created CounterPricing",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CounterPricingResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/plans" : {
      "get" : {
        "tags" : [ "Plan" ],
        "summary" : "List Plans",
        "description" : "Retrieve a list of Plans that can be filtered by Product, Account, or Plan ID.  ",
        "operationId" : "ListPlans",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of Plans to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "`nextToken` for multi-page retrievals.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "productId",
          "in" : "query",
          "description" : "UUID of the Product to retrieve Plans for.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        }, {
          "name" : "accountId",
          "in" : "query",
          "description" : "List of Account IDs the Plan belongs to.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "List of Plan IDs to retrieve. ",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of requested Plans",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedPlanResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "Plan" ],
        "summary" : "Create Plan",
        "description" : "Create a new Plan.",
        "operationId" : "PostPlan",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PlanRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the created Plan",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PlanResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/accountplans" : {
      "get" : {
        "tags" : [ "AccountPlan" ],
        "summary" : "List AccountPlans",
        "description" : "Retrieves a list of AccountPlan and AccountPlanGroup entities for the specified Organization. The list can be paginated for easier management, and supports filtering with various query parameters.\n\n",
        "operationId" : "ListAccountPlans",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "The maximum number of AccountPlans and AccountPlanGroups to return per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for retrieving the next page of AccountPlans and AccountPlanGroups. It is used to fetch the next page of AccountPlans and AccountPlanGroups in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "date",
          "in" : "query",
          "description" : "The specific date/time *(in ISO-8601 format)* for which you want to retrieve AccountPlans and AccountPlanGroups.\n\n**NOTE:** Returns both active and inactive AccountPlans and AccountPlanGroups for the specified date/time.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "account",
          "in" : "query",
          "description" : "The unique identifier (UUID) for the Account whose AccountPlans and AccountPlanGroups you want to retrieve.\n\n**NOTE:** Only returns the currently active AccountPlans and AccountPlanGroups for the specified Account. Use in combination with the `includeall` query parameter to return both active and inactive.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "plan",
          "in" : "query",
          "description" : "The unique identifier (UUID) for the Plan whose associated AccountPlans you want to retrieve.\n\n**NOTE:** Does not return AccountPlanGroups if you use a `planGroupId`.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "product",
          "in" : "query",
          "description" : "The unique identifier (UUID) for the Product whose associated AccountPlans you want to retrieve.\n\n**NOTE:** You cannot use the `product` query parameter as a single filter condition, but must always use it in combination with the `account` query parameter.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "includeall",
          "in" : "query",
          "description" : "A Boolean flag that specifies whether to include both active and inactive AccountPlans and AccountPlanGroups in the list.\n\n* **TRUE** - both active and inactive AccountPlans and AccountPlanGroups are included in the list.\n* **FALSE** - only active AccountPlans and AccountPlanGroups are retrieved in the list.*(Default)*\n\n**NOTE:** Only operative if you also have one of `account`, `plan` or `contract` as a query parameter.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "A list of unique identifiers (UUIDs) for specific AccountPlans and AccountPlanGroups you want to retrieve.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "contract",
          "in" : "query",
          "description" : "The unique identifier (UUID) of the Contract which the AccountPlans you want to retrieve have been linked to.\n\n**NOTE:** Does not return AccountPlanGroups that have been linked to the Contract.",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of AccountPlans and AccountPlanGroups",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedAccountPlanResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "AccountPlan" ],
        "summary" : "Create AccountPlan",
        "description" : "Create a new AccountPlan or AccountPlanGroup.\n\nThis endpoint creates a new AccountPlan or AccountPlanGroup for a specific Account in your Organization. The details of the new AccountPlan or AccountPlanGroup should be supplied in the request body.\n\n**Note:** You cannot use this call to create *both* an AccountPlan and AccountPlanGroup for an Account at the same time. If you want to create both for an Account, you must submit two separate calls.",
        "operationId" : "PostAccountPlan",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AccountPlanRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the created AccountPlan or AccountPlanGroup",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AccountPlanResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/customfields" : {
      "get" : {
        "tags" : [ "CustomField" ],
        "summary" : "Retrieve CustomField",
        "description" : "Retrieve all Custom Fields added at Organizational level for the entities that support them. ",
        "operationId" : "GetCustomField",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the CustomFields",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CustomFieldResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "CustomField" ],
        "summary" : "Update CustomFields",
        "description" : "Update Custom Fields added at Organization level to entities that support them. ",
        "operationId" : "UpdateCustomFields",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CustomFieldRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the updated CustomFields",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CustomFieldResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/compoundaggregations" : {
      "get" : {
        "tags" : [ "CompoundAggregation" ],
        "summary" : "List Compound Aggregations",
        "description" : "Retrieve a list of all Compound Aggregations. \n\nThis endpoint retrieves a list of Compound Aggregations associated with a specific organization. Compound Aggregations enable you to define numerical measures based on simple Aggregations of usage data. It supports pagination, and includes various query parameters to filter the Compound Aggregations based on Product, Compound Aggregation IDs or short codes.",
        "operationId" : "ListCompoundAggregations",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of Compound Aggregations to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of Compound Aggregations in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "productId",
          "in" : "query",
          "description" : "An optional parameter to filter the Compound Aggregations based on specific Product unique identifiers (UUIDs).",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "An optional parameter to retrieve specific Compound Aggregations based on their unique identifiers (UUIDs).",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "codes",
          "in" : "query",
          "description" : "An optional parameter to retrieve specific Compound Aggregations based on their short codes.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of Compound Aggregations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedCompoundAggregationResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "CompoundAggregation" ],
        "summary" : "Create Compound Aggregation",
        "description" : "Create a new Compound Aggregation.\n\nThis endpoint allows you to create a new Compound Aggregation for a specific Organization. The request body must include all the necessary details such as the Calculation formula.",
        "operationId" : "PostCompoundAggregation",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CompoundAggregationRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the created Compound Aggregation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CompoundAggregationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/statementdefinitions" : {
      "get" : {
        "tags" : [ "StatementDefinition" ],
        "summary" : "List StatementDefinitions",
        "description" : "Retrieve a list of StatementDefinitions.\n\nThis endpoint retrieves a list of all the StatementDefinitions within a specified Organization. The list can be paginated for easier management.",
        "operationId" : "ListStatementDefinitions",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of StatementDefinitions to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of StatementDefinitions in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of requested StatementDefinitions",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedStatementDefinitionResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "StatementDefinition" ],
        "summary" : "Create StatementDefinition",
        "description" : "Create a new StatementDefinition.\n\nThis endpoint creates a new StatementDefinition within the specified Organization. The details of the StatementDefinition are provided in the request body.",
        "operationId" : "PostStatementDefinition",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/StatementDefinitionRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the created StatementDefinition",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/StatementDefinitionResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/commitments/search" : {
      "get" : {
        "tags" : [ "Commitments" ],
        "summary" : "Search Commitments",
        "description" : "Search for commitment entities.\n\nThis endpoint executes a search query for Commitments based on the user specified search criteria. The search query is customizable, allowing for complex nested conditions and sorting. The returned list of Commitments can be paginated for easier management.",
        "operationId" : "SearchCommitments",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "searchQuery",
          "in" : "query",
          "description" : "Query for data using special syntax:\n* Query parameters should be delimited using $ (dollar sign).\n* Allowed comparators are:\n\t* (greater than) >\n\t* (greater than or equal to) >=\n\t* (equal to) :\n\t* (less than) <\n\t* (less than or equal to) <=\n\t* (match phrase/prefix) ~\n*  Allowed parameters: startDate, endDate, contractId, accountId, productId, productIds, id, createdBy, dtCreated, lastModifiedBy, ids.\n*  Query example:\n\t*  searchQuery=startDate>2023-01-01$accountId:062085ab-a301-4f21-a081-411020864452.\n\t*  This query is translated into: find commitments where the startDate is older than 2023-01-01 AND the accountId is equal to 062085ab-a301-4f21-a081-411020864452.\n\n**Note:** Using the ~ match phrase/prefix comparator. For best results, we recommend treating this as a \"starts with\" comparator for your search query.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "fromDocument",
          "in" : "query",
          "description" : "`fromDocument` for multi page retrievals.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of Commitments to retrieve per page.\n\n**NOTE:** If not defined, default is 10.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "operator",
          "in" : "query",
          "description" : "Search Operator to be used while querying search.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "AND", "OR" ]
          }
        }, {
          "name" : "sortBy",
          "in" : "query",
          "description" : "Name of the parameter on which sorting is performed. Use any field available on the Commitment entity to sort by, such as `accountId`, `endDate`, and so on.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "sortOrder",
          "in" : "query",
          "description" : "Sorting order.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "ASC", "DESC" ]
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the Commitments that match the search criteria",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedCommitmentResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/plans/{id}" : {
      "get" : {
        "tags" : [ "Plan" ],
        "summary" : "Retrieve Plan",
        "description" : "Retrieve the Plan with the given UUID.",
        "operationId" : "GetPlan",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Plan to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the Plan",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PlanResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "Plan" ],
        "summary" : "Update Plan",
        "description" : "Update the Plan with the given UUID.\n\n**Note:** If you have created Custom Fields for a Plan, when you use this endpoint to update the Plan use the `customFields` parameter to preserve those Custom Fields. If you omit them from the update request, they will be lost.",
        "operationId" : "PutPlan",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Plan to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PlanRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated Plan",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PlanResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "Plan" ],
        "summary" : "Delete Plan",
        "description" : "Delete the Plan with the given UUID.",
        "operationId" : "DeletePlan",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Plan to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted Plan",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PlanResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/products" : {
      "get" : {
        "tags" : [ "Product" ],
        "summary" : "List Products",
        "description" : "Retrieve a list of Products.\n\nThis endpoint retrieves a list of all the Products within a specified Organization. The list can be paginated, and supports filtering by specific Product IDs.\n",
        "operationId" : "ListProducts",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of Products to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of Products in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "List of specific Product UUIDs to retrieve. ",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of requested Products",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedProductResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "Product" ],
        "summary" : "Create Product",
        "description" : "Create a new Product.\n\nThis endpoint creates a new Product within the specified Organization. The details of the Product are provided in the request body.",
        "operationId" : "PostProduct",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ProductRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the created Product",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProductResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/picklists/currency/{id}" : {
      "get" : {
        "tags" : [ "Currency" ],
        "summary" : "Retrieve Currency",
        "description" : "Retrieve the specified Currency with the given UUID. Used to obtain the details of a specified existing Currency in your Organization.",
        "operationId" : "GetCurrency",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Currency to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the Currency",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CurrencyResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "Currency" ],
        "summary" : "Update Currency",
        "description" : "Update a Currency with the given UUID.\n\nUsed to update the attributes of the specified Currency for the specified Organization.",
        "operationId" : "UpdateCurrency",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Currency to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CurrencyRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated Currency",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CurrencyResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "Currency" ],
        "summary" : "Delete Currency",
        "description" : "Delete the Currency with the given UUID.\n\nUsed to remove an existing Currency from your Organization that is no longer required.",
        "operationId" : "DeleteCurrency",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Currency to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted Currency",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CurrencyResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/organizationconfig" : {
      "get" : {
        "tags" : [ "OrganizationConfig" ],
        "summary" : "Retrieve OrganizationConfig",
        "description" : "Retrieve the Organization-wide configuration details.",
        "operationId" : "GetOrganizationConfig",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the Organization configuration",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OrganizationConfigResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "OrganizationConfig" ],
        "summary" : "Update OrganizationConfig",
        "description" : "Update the Organization-wide configuration details.",
        "operationId" : "UpdateOrganizationConfig",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/OrganizationConfigRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the updated Organization configuration",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OrganizationConfigResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/picklists/currency" : {
      "get" : {
        "tags" : [ "Currency" ],
        "summary" : "List Currencies",
        "description" : "Retrieve a list of Currencies. \n\nRetrieves a list of Currencies for the specified Organization. This endpoint supports pagination and includes various query parameters to filter the Currencies based on Currency ID, and short codes.",
        "operationId" : "ListCurrencies",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of Currencies to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of Currencies in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "An optional parameter to filter the list based on specific Currency unique identifiers (UUIDs).",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "codes",
          "in" : "query",
          "description" : "An optional parameter to retrieve specific Currencies based on their short codes.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "archived",
          "in" : "query",
          "description" : "Filter by archived flag. A True / False flag indicating whether to return Currencies that are archived *(obsolete)*.\n\n* TRUE - return archived Currencies.\n* FALSE - archived Currencies are not returned.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "boolean"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of Currencies",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedCurrencyResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "Currency" ],
        "summary" : "Create Currency",
        "description" : "Creates a new Currency for the specified Organization.\n\nUsed to create a Currency that your Organization will start to use.",
        "operationId" : "CreateCurrency",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CurrencyRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the created Currency",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CurrencyResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/picklists/debitreasons" : {
      "get" : {
        "tags" : [ "DebitReason" ],
        "summary" : "List Debit Reasons",
        "description" : "Retrieve a list of the Debit Reason entities created for your Organization. You can filter the list returned for the call by Debit Reason ID, Debit Reason short code, or by Archive status.",
        "operationId" : "ListDebitReasons",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of Debit Reasons to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "`nextToken` for multi page retrievals.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "List of Debit Reason IDs to retrieve.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "codes",
          "in" : "query",
          "description" : "List of Debit Reason short codes to retrieve.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "archived",
          "in" : "query",
          "description" : "Filter using the boolean archived flag. DebitReasons can be archived if they are obsolete.\n* TRUE includes DebitReasons that have been archived.\n* FALSE excludes archived DebitReasons.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "boolean"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of Debit Reasons",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedDebitReasonResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "DebitReason" ],
        "summary" : "Create Debit Reason",
        "description" : "Create a new Debit Reason for your Organization. When you've created a Debit Reason, it becomes available as a debit type for adding Debit line items to Bills. See [Debits](https://www.m3ter.com/docs/api#tag/Debits).",
        "operationId" : "CreateDebitReason",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DebitReasonRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the created Debit Reason",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DebitReasonResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/metergroups" : {
      "get" : {
        "tags" : [ "MeterGroup" ],
        "summary" : "List MeterGroups",
        "description" : "Retrieve a list of MeterGroup entities",
        "operationId" : "ListMeterGroups",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of MeterGroups to retrieve per page",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "nextToken for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "list of ids to retrieve",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "ListMeterGroups 200 response",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedMeterGroupResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "MeterGroup" ],
        "summary" : "Create MeterGroup",
        "description" : "Create a new MeterGroup.",
        "operationId" : "PostMeterGroup",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/MeterGroupRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the created MeterGroup",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/MeterGroupResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/accounts/{id}" : {
      "get" : {
        "tags" : [ "Account" ],
        "summary" : "Retrieve Account",
        "description" : "Retrieve the Account with the given Account UUID.",
        "operationId" : "GetAccount",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization.\nThe Organization represents your company as a direct customer of the m3ter service. ",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Account to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the requested Account",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AccountResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "Account" ],
        "summary" : "Update Account",
        "description" : "Update the Account with the given Account UUID.\n\n**Note:** If you have created Custom Fields for an Account, when you use this endpoint to update the Account, use the `customFields` parameter to preserve those Custom Fields. If you omit them from the update request, they will be lost.",
        "operationId" : "PutAccount",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service. ",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Account to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AccountRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated Account",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AccountResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "Account" ],
        "summary" : "Delete Account",
        "description" : "Delete the Account with the given UUID. This may fail if there are any AccountPlans that reference the Account being deleted.",
        "operationId" : "DeleteAccount",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization.\nThe Organization represents your company as a direct customer of the m3ter service. ",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Account to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the deleted Account",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AccountResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/counterpricings/{id}" : {
      "get" : {
        "tags" : [ "CounterPricing" ],
        "summary" : "Retrieve CounterPricing",
        "description" : "Retrieve a CounterPricing for the given UUID.",
        "operationId" : "GetCounterPricing",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the CounterPricing to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the CounterPricing",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CounterPricingResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "CounterPricing" ],
        "summary" : "Update CounterPricing",
        "description" : "Update CounterPricing for the given UUID.\n\n**Note:** Either `planId` or `planTemplateId` request parameters are required for this call to be valid. If you omit both, then you will receive a validation error.",
        "operationId" : "PutCounterPricing",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the CounterPricing to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CounterPricingRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated CounterPricing",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CounterPricingResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "CounterPricing" ],
        "summary" : "Delete CounterPricing",
        "description" : "Delete a CounterPricing for the given UUID.",
        "operationId" : "DeleteCounterPricing",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the CounterPricing to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted CounterPricing",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CounterPricingResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/counters" : {
      "get" : {
        "tags" : [ "Counter" ],
        "summary" : "List Counters",
        "description" : "Retrieve a list of Counter entities that can be filtered by Product, Counter ID, or Codes.",
        "operationId" : "ListCounters",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of Counters to retrieve per page",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "NextToken for multi page retrievals.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "List of Counter IDs to retrieve.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "codes",
          "in" : "query",
          "description" : "List of Counter codes to retrieve. These are unique short codes to identify each Counter.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "productId",
          "in" : "query",
          "description" : "List of Products UUIDs to retrieve Counters for.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of Counters.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedCounterResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "Counter" ],
        "summary" : "Create Counter",
        "description" : "Create a new Counter.",
        "operationId" : "PostCounter",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of m3ter.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CounterRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the created Counter",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CounterResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/plangrouplinks/{id}" : {
      "get" : {
        "tags" : [ "PlanGroupLink" ],
        "summary" : "Retrieve PlanGroupLink",
        "description" : "Retrieve a PlanGroupLink for the given UUID.",
        "operationId" : "GetPlanGroupLink",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the PlanGroupLink to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the PlanGroupLink",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PlanGroupLinkResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "PlanGroupLink" ],
        "summary" : "Update PlanGroupLink",
        "description" : "Update PlanGroupLink for the given UUID.",
        "operationId" : "PutPlanGroupLink",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the PlanGroupLink to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PlanGroupLinkRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the updated PlanGroup",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PlanGroupLinkResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "PlanGroupLink" ],
        "summary" : "Delete PlanGroupLink",
        "description" : "Delete a PlanGroupLink for the given UUID.",
        "operationId" : "DeletePlanGroupLink",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the PlanGroupLink to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the deleted PlanGroupLink",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PlanGroupLinkResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/aggregations" : {
      "get" : {
        "tags" : [ "Aggregation" ],
        "summary" : "List Aggregations",
        "description" : "Retrieve a list of Aggregations that can be filtered by Product, Aggregation ID, or Code.",
        "operationId" : "ListAggregations",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of Aggregations to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "`nextToken` for multi-page retrievals.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "productId",
          "in" : "query",
          "description" : "The UUIDs of the Products to retrieve Aggregations for.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "List of Aggregation IDs to retrieve.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "codes",
          "in" : "query",
          "description" : "List of Aggregation codes to retrieve. These are unique short codes to identify each Aggregation.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of Aggregations  ",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedAggregationResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "Aggregation" ],
        "summary" : "Create Aggregation",
        "description" : "Create a new Aggregation.",
        "operationId" : "PostAggregation",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service. ",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AggregationRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the created Aggregation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AggregationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/accounts" : {
      "get" : {
        "tags" : [ "Account" ],
        "summary" : "List Accounts",
        "description" : "Retrieve a list of Accounts that can be filtered by Account ID or Account Code.",
        "operationId" : "ListAccounts",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization.\nThe Organization represents your company as a direct customer of the m3ter service. ",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of accounts to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "`nextToken` for multi-page retrievals.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "List of Account IDs to retrieve.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "codes",
          "in" : "query",
          "description" : "List of Account Codes to retrieve. \nThese are unique short codes for each Account.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of Accounts",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedAccountResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "Account" ],
        "summary" : "Create Account",
        "description" : "Create a new Account within the Organization.",
        "operationId" : "PostAccount",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization.\nThe Organization represents your company as a direct customer of the m3ter service. ",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AccountRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the created Account",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AccountResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/counters/{id}" : {
      "get" : {
        "tags" : [ "Counter" ],
        "summary" : "Retrieve Counter",
        "description" : "Retrieve a Counter for the given UUID.",
        "operationId" : "GetCounter",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of m3ter.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Counter to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the Counter",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CounterResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "Counter" ],
        "summary" : "Update Counter",
        "description" : "Update Counter for the given UUID.",
        "operationId" : "PutCounter",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of m3ter.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Counter to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/CounterRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the updated Counter",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CounterResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "Counter" ],
        "summary" : "Delete Counter",
        "description" : "Delete a Counter for the given UUID.",
        "operationId" : "DeleteCounter",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of m3ter.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Counter to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the deleted Counter",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CounterResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/picklists/debitreasons/{id}" : {
      "get" : {
        "tags" : [ "DebitReason" ],
        "summary" : "Retrieve Debit Reason",
        "description" : "Retrieve the Debit Reason with the given UUID.",
        "operationId" : "GetDebitReason",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Debit Reason to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the Debit Reason",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DebitReasonResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "DebitReason" ],
        "summary" : "Update Debit Reason",
        "description" : "Update the Debit Reason with the given UUID. ",
        "operationId" : "UpdateDebitReason",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Debit Reason to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DebitReasonRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the updated Debit Reason",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DebitReasonResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "DebitReason" ],
        "summary" : "Delete Debit Reason",
        "description" : "Delete the Debit Reason with the given UUID.",
        "operationId" : "DeleteDebitReason",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Debit Reason to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the deleted Debit Reason",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DebitReasonResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/pricings" : {
      "get" : {
        "tags" : [ "Pricing" ],
        "summary" : "List Pricings",
        "description" : "Retrieve a list of Pricings filtered by date/time, Plan ID, PlanTemplate ID, or Pricing ID. ",
        "operationId" : "ListPricings",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of Pricings to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "`nextToken` for multi-page retrievals.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "date",
          "in" : "query",
          "description" : "Date/Time *(in ISO-8601 format)* to retrieve active Pricings for.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "planId",
          "in" : "query",
          "description" : "UUID of the Plan to retrieve Pricings for.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        }, {
          "name" : "planTemplateId",
          "in" : "query",
          "description" : "UUID of the PlanTemplate to retrieve Pricings for.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        }, {
          "name" : "aggregationId",
          "in" : "query",
          "description" : "UUID of the Aggregation to retrieve pricings for",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "List of Pricing IDs to retrieve. ",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of requested Pricings",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedPricingResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "Pricing" ],
        "summary" : "Create Pricing",
        "description" : "Create a new Pricing.\n\n**Notes:**\n* Exactly one of `planId` or `planTemplateId` request parameters are required for this call to be valid. If you omit both, then you will receive a validation error.\n* Exactly one of `aggregationId` or `compoundAggregationId` request parameters are required for this call to be valid. If you omit both, then you will receive a validation error.",
        "operationId" : "PostPricing",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PricingRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the created Pricing",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PricingResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/plantemplates/{id}" : {
      "get" : {
        "tags" : [ "PlanTemplate" ],
        "summary" : "Retrieve PlanTemplate",
        "description" : "Retrieve a specific PlanTemplate.\n\nThis endpoint allows you to retrieve a specific PlanTemplate within a specific Organization, both identified by their unique identifiers (UUIDs).",
        "operationId" : "GetPlanTemplate",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the PlanTemplate to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the PlanTemplate",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PlanTemplateResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "PlanTemplate" ],
        "summary" : "Update PlanTemplate",
        "description" : "Update a specific PlanTemplate.\n\nThis endpoint enables you to update a specific PlanTemplate within a specific Organization, both identified by their unique identifiers (UUIDs). The request body should contain the updated information for the PlanTemplate.\n\n**Note:** If you have created Custom Fields for a Plan Template, when you use this endpoint to update the Plan Template use the `customFields` parameter to preserve those Custom Fields. If you omit them from the update request, they will be lost.",
        "operationId" : "PutPlanTemplate",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the PlanTemplate to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PlanTemplateRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated PlanTemplate",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PlanTemplateResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "PlanTemplate" ],
        "summary" : "Delete PlanTemplate",
        "description" : "Delete a specific PlanTemplate.\n\nThis endpoint enables you to delete a specific PlanTemplate within a specific Organization, both identified by their unique identifiers (UUIDs).",
        "operationId" : "DeletePlanTemplate",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the PlanTemplate to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "maximum" : 36,
            "minimum" : 36,
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted PlanTemplate",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PlanTemplateResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/aggregations/{id}" : {
      "get" : {
        "tags" : [ "Aggregation" ],
        "summary" : "Retrieve Aggregation",
        "description" : "Retrieve the Aggregation with the given UUID.",
        "operationId" : "GetAggregation",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Aggregation to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the Aggregation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AggregationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "Aggregation" ],
        "summary" : "Update Aggregation",
        "description" : "Update the Aggregation with the given UUID.\n\n**Note:** If you have created Custom Fields for an Aggregation, when you use this endpoint to update the Aggregation use the `customFields` parameter to preserve those Custom Fields. If you omit them from the update request, they will be lost.",
        "operationId" : "PutAggregation",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Aggregation to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AggregationRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the updated Aggregation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AggregationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "Aggregation" ],
        "summary" : "Delete Aggregation",
        "description" : "Delete the Aggregation with the given UUID.",
        "operationId" : "DeleteAggregation",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Aggregation to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the deleted Aggregation",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AggregationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/metergroups/{id}" : {
      "get" : {
        "tags" : [ "MeterGroup" ],
        "summary" : "Retrieve MeterGroup",
        "description" : "Retrieve a MeterGroup for the given UUID.",
        "operationId" : "GetMeterGroup",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the MeterGroup to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the MeterGroup",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/MeterGroupResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "MeterGroup" ],
        "summary" : "Update MeterGroup",
        "description" : "Update MeterGroup for the given UUID.",
        "operationId" : "PutMeterGroup",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the MeterGroup to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/MeterGroupRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the updated MeterGroup",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/MeterGroupResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "MeterGroup" ],
        "summary" : "Delete MeterGroup",
        "description" : "Delete a MeterGroup for the given UUID.",
        "operationId" : "DeleteMeterGroup",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the MeterGroup to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the deleted MeterGroup",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/MeterGroupResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/accountplans/{id}/replace" : {
      "post" : {
        "tags" : [ "AccountPlan" ],
        "summary" : "Replace AccountPlan",
        "description" : "End-dates the specified AccountPlan at the new startDate and creates the new AccountPlan.",
        "operationId" : "ReplaceAccountPlan",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the AccountPlan to replace.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AccountPlanRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the updated existing AccountPlan and the created AccountPlan",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ReplaceAccountPlanResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/contracts/{id}" : {
      "get" : {
        "tags" : [ "Contract" ],
        "summary" : "Retrieve Contract",
        "description" : "Retrieves the Contract with the given UUID. Used to obtain the details of a Contract.",
        "operationId" : "GetContract",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Contract to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the Contract",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ContractResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "Contract" ],
        "summary" : "Update Contract",
        "description" : "Update the Contract with the given UUID.\n\nThis endpoint updates the details of the Contract with the specified ID. Used to modify details of an existing Contract such as the start or end dates.\n\n**Note:** If you have created Custom Fields for a Contract, when you use this endpoint to update the Contract use the `customFields` parameter to preserve those Custom Fields. If you omit them from the update request, they will be lost.",
        "operationId" : "PutContract",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Contract to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ContractRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated Contract",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ContractResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "Contract" ],
        "summary" : "Delete Contract",
        "description" : "Deletes the Contract with the specified UUID. Used to remove an existing Contract from an Account.\n\n**Note:** This call will fail if there are any other billing entities associated with the Account and that have been added to the Contract, such as AccountPlans, Balance, or Commitments.\n\n  ",
        "operationId" : "DeleteContract",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Contract to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted Contract",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ContractResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexplorer/usagedata" : {
      "post" : {
        "tags" : [ "DataExplorer" ],
        "summary" : "Query and filter aggregated usage data.",
        "description" : "Query and filter aggregated usage data.",
        "operationId" : "PostQueryAggregatedUsageData",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/QueryUsageDataRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns a list of aggregated usage data.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AggregatedUsageDataResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexplorer/mergedmeterdimensions" : {
      "post" : {
        "tags" : [ "DataExplorer" ],
        "summary" : "Retrieve the values of a single Dimension for one or more Meters.",
        "description" : "Retrieve the values of a single Dimension for one or more Meters stored in the Data Warehouse over a period of time.",
        "operationId" : "GetMergedMeterDimensions",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/QueryMergedMeterDimensionsRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns a Meter's Dimensions from the Data Warehouse.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/MeterDimensionsResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexplorer/bills/accounts" : {
      "get" : {
        "tags" : [ "DataExplorer" ],
        "summary" : "Get account values for querying bill line items.",
        "description" : "Get account values for querying bill line items.",
        "operationId" : "GetBillAccounts",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Limit the number of items returned.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 2000,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a list of accounts.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AccountsResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexplorer/usagedata/download/json" : {
      "post" : {
        "tags" : [ "DataExplorer" ],
        "summary" : "Download aggregated usage data as JSON.",
        "description" : "Download aggregated usage data as JSON.",
        "operationId" : "DownloadAggregatedUsageDataJson",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/QueryUsageDataRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Contains a link to download the file.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DownloadDataExplorerResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexplorer/bills/download/csv" : {
      "post" : {
        "tags" : [ "DataExplorer" ],
        "summary" : "Download Bill data as a CSV.",
        "description" : "Download Bill data as a CSV.",
        "operationId" : "DownloadBillDataCsv",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/QueryBillDataRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Contains a link to download the file.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DownloadDataExplorerResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexplorer/commitments/obligations" : {
      "post" : {
        "tags" : [ "DataExplorer" ],
        "summary" : "Query and filter for obligations.",
        "description" : "Query and filter for obligations.",
        "operationId" : "PostQueryObligations",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/QueryObligationsRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns a list of obligations.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Obligation"
                  }
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexplorer/bills/download/json" : {
      "post" : {
        "tags" : [ "DataExplorer" ],
        "summary" : "Download Bill data as JSON.",
        "description" : "Download Bill data as JSON.",
        "operationId" : "DownloadBillDataJson",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/QueryBillDataRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Contains a link to download the file.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DownloadDataExplorerResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexplorer/commitments/v2/lineitems" : {
      "post" : {
        "tags" : [ "DataExplorer" ],
        "summary" : "Query and filter for commitment line items.",
        "description" : "Query and filter for commitment line items.",
        "operationId" : "PostQueryCommitmentLineItems",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/QueryCommitmentsRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns a list of commitment line items.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillDataResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexplorer/commitments/v2" : {
      "post" : {
        "tags" : [ "DataExplorer" ],
        "summary" : "Query and filter for commitments.",
        "description" : "Query and filter for commitments.",
        "operationId" : "PostQueryCommitments",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/QueryCommitmentsRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns a list of commitments.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillDataResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexplorer/commitments/obligations/download/csv" : {
      "post" : {
        "tags" : [ "DataExplorer" ],
        "summary" : "Download Commitments Obligations data in CSV format",
        "description" : "Download Commitments Obligations data in CSV format.",
        "operationId" : "DownloadCommitmentsObligationsDataCsv",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/QueryObligationsRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Link to download the file",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DownloadDataExplorerResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexplorer/commitments/accounts" : {
      "get" : {
        "tags" : [ "DataExplorer" ],
        "summary" : "Get account values for querying commitments.",
        "description" : "Get account values for querying commitments.",
        "operationId" : "GetCommitmentsAccounts",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Limit the number of items returned.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 10000,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a list of accounts.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AccountsResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexplorer/meterdimensions" : {
      "post" : {
        "tags" : [ "DataExplorer" ],
        "summary" : "Retrieve the values of a Meter Dimension.",
        "description" : "Retrieve the Dimensions of a Meter stored in the Data Warehouse over a period of time.",
        "operationId" : "GetMeterDimensions",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/QueryMeterDimensionsRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns a Meter's Dimensions from the Data Warehouse.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/MeterDimensionsResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexplorer/usagedata/download/csv" : {
      "post" : {
        "tags" : [ "DataExplorer" ],
        "summary" : "Download aggregated usage data as a CSV.",
        "description" : "Download aggregated usage data as a CSV.",
        "operationId" : "DownloadAggregatedUsageDataCsv",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/QueryUsageDataRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Contains a link to download the file.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DownloadDataExplorerResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexplorer/commitments/download/json" : {
      "post" : {
        "tags" : [ "DataExplorer" ],
        "summary" : "Download Commitments data as JSON.",
        "description" : "Download Commitments data as JSON.",
        "operationId" : "DownloadCommitmentsDataJson",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/QueryCommitmentsRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Contains a link to download the file.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DownloadDataExplorerResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexplorer/bills" : {
      "post" : {
        "tags" : [ "DataExplorer" ],
        "summary" : "Query and filter for bill line items.",
        "description" : "Query and filter for bill line items.",
        "operationId" : "PostQueryBillData",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/QueryBillDataRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns a list of bill line items.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillDataResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexplorer/commitments/download/csv" : {
      "post" : {
        "tags" : [ "DataExplorer" ],
        "summary" : "Download Commitments data as a CSV.",
        "description" : "Download Commitments data as a CSV.",
        "operationId" : "DownloadCommitmentsDataCsv",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/QueryCommitmentsRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Contains a link to download the file.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DownloadDataExplorerResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexplorer/commitments/obligations/download/json" : {
      "post" : {
        "tags" : [ "DataExplorer" ],
        "summary" : "Download Commitments Obligations data as JSON.",
        "description" : "Download Commitments Obligations data as JSON.",
        "operationId" : "DownloadCommitmentsObligationsDataJson",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/QueryObligationsRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Contains a link to download the file.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DownloadDataExplorerResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexplorer/meters" : {
      "get" : {
        "tags" : [ "DataExplorer" ],
        "summary" : "Retrieve Meters stored in the Data Warehouse over a period of time.",
        "description" : "Retrieve the Meters and their dimension and measure names that are stored in the Data Warehouse over a period of time.",
        "operationId" : "GetMeters",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "startDate",
          "in" : "query",
          "description" : "Start date",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "endDate",
          "in" : "query",
          "description" : "End date",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a list of Meters from the Data Warehouse.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/MetersResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexplorer/bills/products" : {
      "get" : {
        "tags" : [ "DataExplorer" ],
        "summary" : "Get product values for querying bill line items.",
        "description" : "Get product values for querying bill line items.",
        "operationId" : "GetBillProducts",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "Limit the number of items returned.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 2000,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a list of products.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillProductsResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/dataexplorer/commitments/remaining" : {
      "post" : {
        "tags" : [ "DataExplorer" ],
        "summary" : "Query and filter for Remaining Commitments.",
        "description" : "Query and filter for remaining commitments.",
        "operationId" : "PostQueryRemainingCommitment",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/QueryObligationsRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns a list of remaining commitments.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RemainingCommitmentsResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/integrationruns/{entityType}/latest/{id}" : {
      "get" : {
        "tags" : [ "Integrations" ],
        "summary" : "Retrieve Latest IntegrationRun",
        "description" : "Retrieve the latest integration run for the entity.",
        "operationId" : "GetIntegrationRunLatest",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "entityType",
          "in" : "path",
          "description" : "The type of the entity you want to retrieve the last integration run for. Two options:\n* Bill\n* Notification",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the entity to retrieve the latest integration run for.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the Integration Run",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/IntegrationRunResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/integrationconfigs/available/{systemName}/entities" : {
      "get" : {
        "tags" : [ "Integrations" ],
        "summary" : "Retrieve Available Entity Types for System",
        "description" : "Retrieve the valid entity types for provided system.",
        "operationId" : "GetAvailableSystemEntities",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "systemName",
          "in" : "path",
          "description" : "The system to retrieve the configuration for.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the available entity types",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "type" : "object"
                  }
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/integrationruns/{entityType}/{entityId}" : {
      "get" : {
        "tags" : [ "Integrations" ],
        "summary" : "List IntegrationRuns",
        "description" : "Retrieve a list of the integration runs for the specified entity.\n\nYou can filter the list using the `startDate` and `endDate` query parameters to specify date/times to define the time period you want to return integration runs for.",
        "operationId" : "ListIntegrationRuns",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "entityId",
          "in" : "path",
          "description" : "The UUID of the entity to retrieve the integration runs for.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "entityType",
          "in" : "path",
          "description" : "The type of the entity you want to retrieve the integration runs for. Two options:\n* Bill\n* Notification",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "startDate",
          "in" : "query",
          "description" : "Retrieve only those integration runs started after the specified date/time.*(ISO 8601 formatted)*",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "endDate",
          "in" : "query",
          "description" : "Retrieve only those integration runs started before or on the specified date/time.*(ISO 8601 formatted)*",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of integration runs to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "`nextToken` for multi page retrievals.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "status",
          "in" : "query",
          "description" : "Status of the integration run",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "$ref" : "#/components/schemas/RunStatus"
          }
        }, {
          "name" : "order",
          "in" : "query",
          "description" : "Integration runs order",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "$ref" : "#/components/schemas/IntegrationRunDao.Order"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the Integration Runs",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedIntegrationRunResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/integrationconfigs/entity/{entityType}" : {
      "get" : {
        "tags" : [ "Integrations" ],
        "summary" : "Retrieve IntegrationConfig",
        "description" : "Retrieve the integration configuration for the entity",
        "operationId" : "GetIntegrationConfigForType",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "entityType",
          "in" : "path",
          "description" : "The entity to retrieve the configuration for.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "entityId",
          "in" : "query",
          "description" : "UUID of the entity to retrieve IntegrationConfigs for",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "destination",
          "in" : "query",
          "description" : "Destination type to retrieve IntegrationConfigs for",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "destinationId",
          "in" : "query",
          "description" : "UUID of the destination to retrieve IntegrationConfigs for",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "nextToken for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of configs to retrieve per page",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the IntegrationConfig",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/IntegrationRunResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/externalmappings" : {
      "get" : {
        "tags" : [ "External Mapping" ],
        "summary" : "List External Mappings",
        "description" : "Retrieve a list of all External Mapping entities.\n\nThis endpoint retrieves a list of all External Mapping entities for a specific Organization. The list can be paginated for better management, and supports filtering using the external system.  ",
        "operationId" : "ListExternalMappings",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of External Mappings to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of External Mappings in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "externalSystemId",
          "in" : "query",
          "description" : "The name of the external system to use as a filter.\n\nFor example, if you want to list only those external mappings created for your Organization for the Salesforce external system, use:\n\n`?externalSystemId=Salesforce`",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "m3terIds",
          "in" : "query",
          "description" : "IDs for m3ter entities",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "object"
            }
          }
        }, {
          "name" : "integrationConfigId",
          "in" : "query",
          "description" : "ID of the integration config",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of External Mapping entities ",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedExternalMappingResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "External Mapping" ],
        "summary" : "Create an External Mapping",
        "description" : "Creates a new External Mapping.\n\nThis endpoint enables you to create a new External Mapping for the specified Organization. You need to supply a request body with the details of the new External Mapping.  ",
        "operationId" : "CreateExternalMapping",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ExternalMappingRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the created External Mapping",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExternalMappingResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/integrationdestinations/webhooks/{id}/active" : {
      "put" : {
        "tags" : [ "Integrations" ],
        "summary" : "Activate Webhook Destination",
        "description" : "Set the `active` status on a webhook integration destination.\n\nUse this endpoint to activate or deactivate a webhook integration destination. It toggles the `active` status of the specific wehbook destination with the given ID. ",
        "operationId" : "ActivateWebhookDestination",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the webhook destination. This ID is used to specify which webhook integration is being targeted for activation or deactivation.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "active",
          "in" : "query",
          "description" : "active status of the webhook",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "boolean"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the WebhookDestinationRequest",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/WebhookDestinationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/externalmappingconfiguration/values/{destination}/{entityType}/{integrationCredentialsId}" : {
      "get" : {
        "tags" : [ "External Mapping" ],
        "summary" : "Retrieve a list of external entities from the destination system for a particular credential",
        "description" : "Retrieve a list of possible values to create an external mapping using a particular credential. These options are retrieved from the destination system if the system has been successfully authenticated and provides the mechanism to do so. Otherwise an empty response is returned.",
        "operationId" : "GetExternalMappingOptionsForDestinationForCredentialsId",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "destination",
          "in" : "path",
          "description" : "Name of the destination system",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "entityType",
          "in" : "path",
          "description" : "The m3ter entity type.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "integrationCredentialsId",
          "in" : "path",
          "description" : "The UUID of the credentials to use.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "externalTable",
          "in" : "query",
          "description" : "Name of the target externalTable",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return a list of the external systems entities using a particular credential.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ExternalEntityResponse"
                  }
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/integrationconfigs/available/{systemName}/auth/{entityType}" : {
      "get" : {
        "tags" : [ "Integrations" ],
        "summary" : "Retrieve Available Auth Config for System and Entity Type",
        "description" : "Retrieve the valid auth config for provided system and entity type.",
        "operationId" : "GetAvailableAuthForSystemAndEntityType",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "systemName",
          "in" : "path",
          "description" : "The system to retrieve the configuration for.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "entityType",
          "in" : "path",
          "description" : "The entity to retrieve the configuration for.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the available auth config",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ConfigOptions"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/integrationruns/logs/{id}" : {
      "get" : {
        "tags" : [ "Integrations" ],
        "summary" : "Get IntegrationRun Log",
        "description" : "Retrieve the integrationrun log for the given UUID.\n\nThis endpoint is for retrieving logs of a specific integrationrun. It is useful for debugging and monitoring the performance of integrations within your organization.",
        "operationId" : "GetIntegrationRunLogs",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID associated with the integrationrun. This ID helps in pinpointing the exact integrationrun logs you are looking to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the IntegrationRun",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/IntegrationRunLogResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/integrationconfigs/values/{systemName}/{configOption}" : {
      "get" : {
        "tags" : [ "Integrations" ],
        "summary" : "Get ConfigOption Values",
        "description" : "Get possible values for specific configuration setting.",
        "operationId" : "GetConfigOptionValues",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "systemName",
          "in" : "path",
          "description" : "The name of the system.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "configOption",
          "in" : "path",
          "description" : "The entity to retrieve the configuration for.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the ConfigOption Values",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ConfigOptionsResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/integrationdestinations/marketplace/usageReport" : {
      "get" : {
        "tags" : [ "Marketplace Integrations" ],
        "summary" : "Retrieve reported usage",
        "description" : "Retrieve a list of reported usage records that match the provided filters.\n\nWhen Bill integration runs are performed, all interactions between m3ter and a Marketplace system are persisted as logs. Use this endpoint to retrieve these logs, which you can use to track all amounts sent over to the Marketplace system together with the date and time the Bill data was sent. This provides a report on usage data sent to the Marketplace for each Bill integration run",
        "operationId" : "GetUsageReport",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "billStartDate",
          "in" : "query",
          "description" : "Only include usage with bill start dates equal to this date",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "accountId",
          "in" : "query",
          "description" : "List usage for the customer UUID",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "externalSystem",
          "in" : "query",
          "description" : "Filter usage for the provided marketplace",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of usage records to retrieve per page",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 50,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "nextToken for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "billId",
          "in" : "query",
          "description" : "",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maxLength" : 50,
            "type" : "string",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return Usage reports",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedMarketplaceUsageReportResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/externalmappingconfiguration/values/{destination}/{entityType}" : {
      "get" : {
        "tags" : [ "External Mapping" ],
        "summary" : "Retrieve External Entities from Destination",
        "description" : "Retrieve a list of external entities from the specified destination system.\n\nThis endpoint enables you to retrieve a list of potential values for creating an External Mapping from a specified destination system. The list is only returned if the destination system has been authenticated successfully and it supports such functionality, otherwise, you will receive an empty response.\n",
        "operationId" : "GetExternalMappingOptionsForDestination",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "destination",
          "in" : "path",
          "description" : "The name of the destination system from where the external entities are to be retrieved.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "entityType",
          "in" : "path",
          "description" : "The m3ter entity type.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "externalTable",
          "in" : "query",
          "description" : "Name of the target externalTable",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a list of the external systems entities",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ExternalEntityResponse"
                  }
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/integrationdestinations/webhooks/{id}" : {
      "get" : {
        "tags" : [ "Integrations" ],
        "summary" : "Retrieve Destination",
        "description" : "Retrieve the webhook Destination for the UUID.",
        "operationId" : "GetWebhookIntegrationDestination",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the webhook destination.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the Destination",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/WebhookDestinationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "Integrations" ],
        "summary" : "Update Destination",
        "description" : "Update a destination to be used for a webhook.",
        "operationId" : "UpdateWebhookDestination",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the WebhookDestination to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/WebhookDestinationRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the Destination Update Request",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/WebhookDestinationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "Integrations" ],
        "summary" : "Delete Webhook Destination",
        "description" : "This endpoint deletes a specific webhook destination identified by its UUID.",
        "operationId" : "DeleteWebhookDestination",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the webhook destination to be deleted.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted Destination",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/WebhookDestinationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/externalmappingconfiguration" : {
      "get" : {
        "tags" : [ "External Mapping" ],
        "summary" : "Retrieve External Mapping Configuration",
        "description" : "Retrieve the global External Mapping configuration.\n\nThis endpoint retrieves the global External Mapping configuration for the specified Organization.",
        "operationId" : "GetExternalMappingConfiguration",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns External Mapping configuration",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExternalMappingConfigurationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/integrationconfigs/available" : {
      "get" : {
        "tags" : [ "Integrations" ],
        "summary" : "Retrieve Available Configurations",
        "description" : "This endpoint gets the available configuration options for integrations.",
        "operationId" : "GetAvailableConfig",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "systemName",
          "in" : "query",
          "description" : "The system to retrieve the configuration for.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "entityType",
          "in" : "query",
          "description" : "The entity to retrieve the configuration for.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the configuration details",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AvailableConfigurationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/integrationruns/destinations/{destinationId}" : {
      "get" : {
        "tags" : [ "Integrations" ],
        "summary" : "List IntegrationRuns By DestinationId",
        "description" : "Retrieve a list of the integration runs for the destination",
        "operationId" : "ListIntegrationRunsByDestinationId",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "destinationId",
          "in" : "path",
          "description" : "The UUID of the destination.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "destination",
          "in" : "query",
          "description" : "Destination system",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "startDate",
          "in" : "query",
          "description" : "Retrieve entities started after the specified date.",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "endDate",
          "in" : "query",
          "description" : "Retrieve entities started before the specified date.",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of products to retrieve per page",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "nextToken for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "status",
          "in" : "query",
          "description" : "Status of the integration run",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "$ref" : "#/components/schemas/RunStatus"
          }
        }, {
          "name" : "order",
          "in" : "query",
          "description" : "Integration runs order",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "$ref" : "#/components/schemas/IntegrationRunDao.Order"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "ListIntegrationRunsByDestinationId 200 response",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedIntegrationRunResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/integrationconfigs/available/systems" : {
      "get" : {
        "tags" : [ "Integrations" ],
        "summary" : "Retrieve Available Integration Systems",
        "description" : "Retrieve the valid integration systems. Can be filtered by entityType.",
        "operationId" : "GetAvailableSystems",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "entityType",
          "in" : "query",
          "description" : "The entity to retrieve the configuration for.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the available integration systems",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/SystemResponse"
                  }
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/integrationconfigs/{id}/enable" : {
      "post" : {
        "tags" : [ "Integrations" ],
        "summary" : "Enable IntegrationConfig",
        "description" : "Enables a previously disabled integration configuration, allowing it to be operational again.",
        "operationId" : "EnableIntegrationConfig",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the integration configuration",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the IntegrationConfig",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/IntegrationConfigResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/integrationconfigs" : {
      "get" : {
        "tags" : [ "Integrations" ],
        "summary" : "List All IntegrationConfigs",
        "description" : "List all integration configurations.\n\nThis endpoint retrieves a list of all integration configurations for the specified Organization. The list can be paginated for easier management.",
        "operationId" : "GetIntegrationConfigs",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for the organization. This specifies the organization within which the webhook destination is created.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of integration configurations to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of integration configurations in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "destinationId",
          "in" : "query",
          "description" : "optional filter for a specific destination",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the IntegrationConfigs",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedIntegrationConfigResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "Integrations" ],
        "summary" : "Create IntegrationConfig",
        "description" : "Set the integration configuration for the entity.",
        "operationId" : "PostIntegrationConfig",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/IntegrationConfigRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the IntegrationConfig",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/IntegrationConfigResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/externalmappings/externalid/{system}/{externalTable}/{externalId}" : {
      "get" : {
        "tags" : [ "External Mapping" ],
        "summary" : "List External Mappings for External Entity",
        "description" : "Retrieve a list of External Mapping entities for a specified external system entity.\n\nUse this endpoint to retrieve a list of External Mapping entities associated with a specific external system entity. The list can be paginated for easier management.",
        "operationId" : "ListExternalMappingsForExternalSystemAndEntity",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "system",
          "in" : "path",
          "description" : "The identifier for the external system.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "externalTable",
          "in" : "path",
          "description" : "The identifier for the external table. ",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "externalId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for the external entity.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of External Mappings to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of External Mappings in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of External Mapping entities for the external entity",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedExternalMappingResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/integrationdestinations/webhooks" : {
      "get" : {
        "tags" : [ "Integrations" ],
        "summary" : "List Destinations",
        "description" : "Retrieve a list of all Destinations created in the Organization.",
        "operationId" : "ListWebhookIntegrations",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of WebhookIntegrations to retrieve per page",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "nextToken for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maxItems" : 200,
            "type" : "array",
            "nullable" : true,
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a list of Destinations.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedWebhookDestinationResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "Integrations" ],
        "summary" : "Create Webhook Destination",
        "description" : "This endpoint creates a new webhook destination. A webhook destination is a URL where webhook payloads will be sent.",
        "operationId" : "CreateWebhookDestination",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) for the organization. This specifies the organization within which the webhook destination is created.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/WebhookDestinationRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the DestinationCreateRequest",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/WebhookDestinationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/integrationruns/{entityType}/latest" : {
      "get" : {
        "tags" : [ "Integrations" ],
        "summary" : "Retrieve IntegrationRuns",
        "description" : "Retrieve the latest integration runs for entity and ids",
        "operationId" : "GetIntegrationRunLatestForIds",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "entityType",
          "in" : "path",
          "description" : "The type of the entity (e.g. Bill).",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "List of ids to retrieve",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the IntegrationRuns",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/IntegrationRunResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/externalmappings/external/{entity}/{m3terId}" : {
      "get" : {
        "tags" : [ "External Mapping" ],
        "summary" : "List External Mappings for a m3ter Entity",
        "description" : "Retrieve a list of External Mapping entities for a specified m3ter entity.\n\nUse this endpoint to retrieve a list of External Mapping entities associated with a specific m3ter entity. The list can be paginated for easier management. ",
        "operationId" : "ListExternalMappingsForM3terEntity",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "entity",
          "in" : "path",
          "description" : "The entity type.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "m3terId",
          "in" : "path",
          "description" : "The unique identifer (UUID) of the m3ter entity.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of External Mappings to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of External Mappings in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of External Mappings for a m3ter entity",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedExternalMappingResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/externalmappings/{id}" : {
      "get" : {
        "tags" : [ "External Mapping" ],
        "summary" : "Retrieve External Mapping",
        "description" : "Retrieve an External Mapping with the given UUID.\n\nThis endpoint enables you to retrieve the External Mapping with the specified UUID for a specific Organization.",
        "operationId" : "GetExternalMapping",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the External Mapping to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the External Mapping",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExternalMappingResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "External Mapping" ],
        "summary" : "Update External Mapping",
        "description" : "Updates an External Mapping with the given UUID.\n\nThis endpoint enables you to update an existing External Mapping entity, identified by its UUID. You must supply a request body with the new details for the External Mapping.",
        "operationId" : "UpdateExternalMapping",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the External Mapping to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ExternalMappingRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated External Mapping",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExternalMappingResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "External Mapping" ],
        "summary" : "Delete an External Mapping",
        "description" : "Delete an External Mapping with the given UUID.",
        "operationId" : "DeleteExternalMapping",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the External Mapping to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted External Mapping",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ExternalMappingResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/integrationruns/{id}" : {
      "get" : {
        "tags" : [ "Integrations" ],
        "summary" : "Get IntegrationRun for the UUID",
        "description" : "Retrieve the integration run for the id",
        "operationId" : "GetIntegrationRun",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the entity.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the IntegrationRun",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/IntegrationRunResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/integrationconfigs/{id}" : {
      "get" : {
        "tags" : [ "Integrations" ],
        "summary" : "Retrieve IntegrationConfig for UUID",
        "description" : "Retrieve the integration configuration for the given UUID.\n\nThis endpoint retrieves the configuration details of a specific integration within an organization. It is useful for obtaining the settings and parameters of an integration.",
        "operationId" : "GetIntegrationConfig",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the integration configuration. This ID specifies which integration's configuration details are being requested.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the IntegrationConfig",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/IntegrationRunResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "Integrations" ],
        "summary" : "Update IntegrationConfig",
        "description" : "Update the integration configuration for the given UUID.\n\nThis endpoint allows you to update the configuration of a specific integration within your organization. It is used to modify settings or parameters of an existing integration.",
        "operationId" : "UpdateIntegrationConfig",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the IntegrationConfig. This ID identifies which specific integration configuration you wish to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/IntegrationConfigRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the IntegrationConfig",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/IntegrationConfigResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "Integrations" ],
        "summary" : "Delete IntegrationConfig",
        "description" : "Delete the integration configuration for the given UUID.\n\nUse this endpoint to delete the configuration of a specific integration within your organization. It is intended for removing integration settings that are no longer needed.",
        "operationId" : "DeleteIntegrationConfig",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the IntegrationConfig to be deleted. This ID specifies the exact integration configuration that needs removal.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the IntegrationConfig",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/IntegrationConfigResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/events/{id}" : {
      "get" : {
        "tags" : [ "Events" ],
        "summary" : "Retrieve EventResponse",
        "description" : "Retrieve a specific Event.\n\nRetrieves detailed information about the specific Event with the given UUID. An Event corresponds to a unique instance of a state change within the system, classified under a specific Event Type.\n",
        "operationId" : "GetEvent",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Event to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the Event",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EventResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/scheduledevents/configurations/{id}" : {
      "get" : {
        "tags" : [ "ScheduledEventConfigurations" ],
        "summary" : "Retrieve ScheduledEventConfiguration",
        "description" : "Retrieve a ScheduledEventConfiguration for the given UUID.",
        "operationId" : "GetScheduledEventConfiguration",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the ScheduledEventConfiguration to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the ScheduledEventConfiguration",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ScheduledEventConfigurationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "ScheduledEventConfigurations" ],
        "summary" : "Update ScheduledEventConfiguration",
        "description" : "Update a ScheduledEventConfiguration for the given UUID.",
        "operationId" : "UpdateScheduledEventConfiguration",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the ScheduledEventConfiguration to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ScheduledEventConfigurationRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the updated ScheduledEventConfiguration",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ScheduledEventConfigurationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "ScheduledEventConfigurations" ],
        "summary" : "Delete ScheduledEventConfiguration",
        "description" : "Delete the ScheduledEventConfiguration for the given UUID.",
        "operationId" : "DeleteScheduledEventConfiguration",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the ScheduledEventConfiguration to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the deleted ScheduledEventConfiguration",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ScheduledEventConfigurationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/notifications/configurations" : {
      "get" : {
        "tags" : [ "Notifications" ],
        "summary" : "List Notifications",
        "description" : "Retrieve a list of Event Notifications for the specified Organization.\n\nThis endpoint retrieves a list of all Event Notifications for the Organization identified by its UUID. The list can be paginated for easier management. The list also supports filtering by parameters such as Notification UUID. ",
        "operationId" : "ListNotifications",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Specifies the maximum number of Notifications to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of Notifications in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "active",
          "in" : "query",
          "description" : "A Boolean flag indicating whether to retrieve only active or only inactive Notifications.\n\n* **TRUE** - only active Notifications are returned. \n* **FALSE** - only inactive Notifications are returned.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "eventName",
          "in" : "query",
          "description" : "Use this to filter the Notifications returned - only those Notifications that are based on the *Event type* specified by `eventName` are returned.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "A list of specific Notification UUIDs to retrieve.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "object"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of Event Notifications",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedNotificationResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "Notifications" ],
        "summary" : "Create Notification",
        "description" : "Create a new Notification for an Event.\n\nThis endpoint enables you to create a new Event Notification for the specified Organization. You need to supply a request body with the details of the new Notification.  \n",
        "operationId" : "CreateNotification",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/NotificationRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the created Notification",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/NotificationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/scheduledevents/configurations" : {
      "get" : {
        "tags" : [ "ScheduledEventConfigurations" ],
        "summary" : "List ScheduledEventConfigurations",
        "description" : "Retrieve a list of ScheduledEventConfiguration entities",
        "operationId" : "ListScheduledEventConfigurations",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of ScheduledEventConfigurations to retrieve per page",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "nextToken for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "list of UUIDs to retrieve",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "object"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "ListScheduledEventConfigurations 200 response",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedScheduledEventConfigurationResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "ScheduledEventConfigurations" ],
        "summary" : "Create ScheduledEventConfiguration",
        "description" : "Create a new ScheduledEventConfiguration.",
        "operationId" : "CreateScheduledEventConfiguration",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ScheduledEventConfigurationRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the created ScheduledEventConfiguration",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ScheduledEventConfigurationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/events/fields" : {
      "get" : {
        "tags" : [ "Events" ],
        "summary" : "List Event Fields",
        "description" : "List Event Fields. \n\nRetrieves a list of Fields for a specific Event Type. These Fields are dynamic and forward compatibile, enabling calculation operations on the Event schema.\n\n**Notes:**\n- In many of the Response schema for this call, such as when you retrieve the Fields for a `configuration.commitment.created` Event Type, `new` represents the attributes the newly created object has. The Response to a call to retrieve the Fields for a `configuration.commitment.updated` Event Type will contain Field values for both the `old` and `new` objects. The Response to a call to retrieve the Fields for a `configuration.commitment.deleted` Event Type will only contain `old` Fields, for values at point of deletion. Having access to reference both `new` and `old` Field values for an object can be very useful if you want to base a Notification rule on an Event and include a calculation in the rule that, for example, compares `new` values with `old` - for example, trigger a Notification only when a Commitment has been updated and the `new` value for the `amount` is at least $1,000 greater than the `old` value.\n- Some Event types will show `customFields` even though the specific billing or configuration object the Event is for does not yet have the custom fields functionality implemented. For these Events, their `customFields` values will not be populated until such time as the custom fields functionality is implemented for them",
        "operationId" : "ListEventFields",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "eventName",
          "in" : "query",
          "description" : "The name of the specific Event Type to use as a list filter, for example `configuration.commitment.created`.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of Fields for an Event Type",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EventFieldsResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/notifications/configurations/{id}" : {
      "get" : {
        "tags" : [ "Notifications" ],
        "summary" : "Retrieve Notification",
        "description" : "Retrieve the details of a specific Notification using its UUID. Includes the Event the Notification is based on, and any calculation referencing the Event's field and which defines further conditions that must be met to trigger the Notification when the Event occurs.\n",
        "operationId" : "GetNotification",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Notification to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the Notification",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/NotificationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "Notifications" ],
        "summary" : "Update Notification",
        "description" : "Update a Notification with the given UUID.\n\nThis endpoint modifies the configuration details of an existing Notification. You can change the Event that triggers the Notification and/or update the conditions for sending the Notification.\n",
        "operationId" : "UpdateNotification",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Notification to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/NotificationRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated Notification",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/NotificationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "Notifications" ],
        "summary" : "Delete Notification",
        "description" : "Delete the Notification with the given UUID.\n\nThis endpoint permanently removes a specified Notification and its configuration. This action cannot be undone.\n",
        "operationId" : "DeleteNotification",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Notification to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted Notification",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/NotificationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/events" : {
      "get" : {
        "tags" : [ "Events" ],
        "summary" : "List EventResponse",
        "description" : "List all Events.\n\nRetrieve a list of all Events, with options to filter the returned list based on various criteria. Each Event represents a unique instance of a state change within the system, classified under a specific kind of Event.\n\n**NOTES:** You can:\n* Use `eventName` as a valid Query parameter to filter the list of Events returned. For example:\n`.../organizations/{orgId}/events?eventName=configuration.commitment.created`\n* Use the [List Notification Events](https://www.m3ter.com/docs/api#tag/Events/operation/ListEventTypes) endpoint in this section. The response lists the valid Query parameters.",
        "operationId" : "ListEvents",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of the Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "The maximum number of Events to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "List of Event UUIDs to filter the results. \n\n**NOTE:** cannot be used with other filters.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "object"
            }
          }
        }, {
          "name" : "notificationId",
          "in" : "query",
          "description" : "Notification UUID to filter the results. Returns the Events that have triggered the Notification.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "accountId",
          "in" : "query",
          "description" : "The Account ID associated with the Event to filter the results. Returns the Events that have been generated for the Account.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "eventType",
          "in" : "query",
          "description" : "The category of Events to filter the results by. Options:\n* Notification\n* IntegrationEvent\n* IngestValidationFailure\n* DataExportJobFailure",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "notificationCode",
          "in" : "query",
          "description" : "Short code of the Notification to filter the results. Returns the Events that have triggered the Notification.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "includeActioned",
          "in" : "query",
          "description" : "A Boolean flag indicating whether to return Events that have been actioned.\n\n* **TRUE** - include actioned Events.\n* **FALSE** - exclude actioned Events. ",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The `nextToken` for multi-page retrievals. It is used to fetch the next page of Events in a paginated list.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "eventName",
          "in" : "query",
          "description" : "",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        }, {
          "name" : "resourceId",
          "in" : "query",
          "description" : "",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns list of Events",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedEventResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/notifications/evaluate" : {
      "post" : {
        "tags" : [ "Notifications" ],
        "summary" : "Evaluate Calculation",
        "description" : "Evaluates a calculation against a specific Event or an Event type without triggering a Notification. This is useful for validating your calculation logic before adding it to a Notification.\n\nYou can use either the `eventId` or `eventName` to test your calculation against:\n- `eventId` Tests the calculation for validity against a *specific Event* that has been generated for your Organization.\n- `eventName` Tests the calculation for validity against the *Event type*.\n\nPossible outcomes:\n- If in either case the calculation is valid, then `\"success\" : true` is returned.\n- If in either case the calculation is invalid, then `\"success\" : false` is returned, together with an `\"error message\"` giving the reason why the calculation is invaild for use against the specific Event or Event type.\n\n**Note:** If you use both the `eventId` and the `eventName` as request body parameters in a single call, then the `eventName` takes precedence and the calculation is evaluated for validity against the *Event type*.\n",
        "operationId" : "EvaluateCalculation",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/EvaluateCalculationRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the calculation result",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EvaluateCalculationResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/events/types" : {
      "get" : {
        "tags" : [ "Events" ],
        "summary" : "List Notification Events",
        "description" : "Retrieve a list of Notification Event Types.\n\nThis endpoint retrieves a list of Event Types that can have Notification rules configured.",
        "operationId" : "ListEventTypes",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "The unique identifer (UUID) of the Organization. The Organization represents your company as a direct customer of our service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the list of Event Types that can have Notification rules configured",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EventTypeResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{lookupTableRevisionId}/data" : {
      "get" : {
        "tags" : [ "LookupTableRevisionData" ],
        "summary" : "Get LookupTableRevisionData",
        "description" : "List Lookup Table Revision Data items for the given UUID.",
        "operationId" : "GetLookupTableRevisionData",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableId",
          "in" : "path",
          "description" : "UUID of the Lookup Table.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableRevisionId",
          "in" : "path",
          "description" : "UUID of the Lookup Table Revision.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "limit",
          "in" : "query",
          "description" : "The maximum number of Data items to return. Defaults to 2000. You can set this to return fewer items if required.\n\nIf you expect the Revision to contain more than 2000 Data items, you can use the [Trigger Downlad URL Job](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/TriggerDownloadJob) to download the Lookup Table Revision Data.",
          "required" : false,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 2000
          }
        }, {
          "name" : "additional",
          "in" : "query",
          "description" : "Comma separated list of additional fields. For example, you can use `additional=lookupKey` to get the lookup key returned for each Data item. You can then use a lookup key for the Get/Upsert/Delete data entry endpoints in this section.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the LookupTableRevisionData",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LookupTableRevisionDataResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "LookupTableRevisionData" ],
        "summary" : "Upsert LookupTableRevisionData",
        "description" : "Create/update the Lookup Table Revision Data for the given UUID.",
        "operationId" : "PutLookupTableRevisionData",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableId",
          "in" : "path",
          "description" : "UUID of the Lookup Table.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableRevisionId",
          "in" : "path",
          "description" : "UUID of the Lookup Table Revision.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "additional",
          "in" : "query",
          "description" : "Comma separated list of additional fields. For example, you can use `additional=lookupKey` to get the lookup key returned for each Data item. You can then use a lookup key for the Get/Upsert/Delete data entry endpoints in this section.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/LookupTableRevisionDataRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the upserted LookupTableRevisionData",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LookupTableRevisionDataResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "LookupTableRevisionData" ],
        "summary" : "Delete LookupTableRevisionData",
        "description" : "Delete the Lookup Table Revision Data for the given UUID.",
        "operationId" : "DeleteLookupTableRevisionData",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableId",
          "in" : "path",
          "description" : "UUID of the Lookup Table.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableRevisionId",
          "in" : "path",
          "description" : "UUID of the Lookup Table Revision.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the result for Delete of LookupTableRevisionData",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LookupTableRevisionDataDeleteResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{lookupTableRevisionId}/data/archived" : {
      "post" : {
        "tags" : [ "LookupTableRevisionData" ],
        "summary" : "Get LookupTableRevisionArchivedData URL",
        "description" : "Get a URL which you can use to download the data for the specified archived Lookup Table Revision:\n* The `contentType` request parameter is required.\n* The returned URL is presigned - you can copy it into a browser and the data file is downloaded locally.\n* The upload URL is time limited - the `expiry` time is given in the response and the URL is valid for ***one hour***.",
        "operationId" : "GetLookupTableRevisionArchivedDataUrl",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableId",
          "in" : "path",
          "description" : "UUID of the LookupTable",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableRevisionId",
          "in" : "path",
          "description" : "UUID of the LookupTableRevision",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/LookupTableDataArchivedRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the URL.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LookupTableDataArchivedResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/lookuptables" : {
      "get" : {
        "tags" : [ "LookupTable" ],
        "summary" : "List LookupTable",
        "description" : "Retrieve a list Lookup Tables created for the Organization:\n* Returned list can be filtered by Lookup Table `code` query parameter.\n* If you want to include any non-default fields for the returned Lookup Tables, use the additional query parameter to specify which you want to include in the response.",
        "operationId" : "ListLookupTable",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of Lookup Tables to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "Token to supply for multi page retrievals.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "codes",
          "in" : "query",
          "description" : "List of Lookup Table codes to retrieve.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "additional",
          "in" : "query",
          "description" : "Comma separated list of additional non-default fields to be included in the response. For example,if you want to include the active Revision for each of the Lookup Tables returned, set `additional=activeRevision` in the query.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of Lookup Tables",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedLookupTableResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "LookupTable" ],
        "summary" : "Create LookupTable",
        "description" : "Create a new Lookup Table.",
        "operationId" : "PostLookupTable",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/LookupTableRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the created Lookup Table",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LookupTableResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{lookupTableRevisionId}/data/copy" : {
      "post" : {
        "tags" : [ "LookupTableRevisionData" ],
        "summary" : "Copy LookupTableRevisionData",
        "description" : "Copy the Lookup Table Revision Data from a source Revision to an optional target Revision:\n* If you omit a target `revisionId`, then the source Revision and its Data is duplicated. The new Revision is given the source Revision's name appended with \"Copy\" but is assigned a new unique id.\n* If you specify a target `revisionId` to copy the source Revision and its Data to, you must ensure that the target Revision has a Data schema that matches the source Revision's Data schema otherwise you'll receive an error",
        "operationId" : "CopyLookupTableRevisionData",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableId",
          "in" : "path",
          "description" : "UUID of the Lookup Table.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableRevisionId",
          "in" : "path",
          "description" : "UUID of the source Lookup Table Revision to copy from.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/LookupTableRevisionCopyRequest"
              }
            }
          },
          "required" : false
        },
        "responses" : {
          "200" : {
            "description" : "Returns the Data JobId and target RevisionId",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LookupTableRevisionCopyResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{lookupTableRevisionId}/data/jobs/{id}" : {
      "get" : {
        "tags" : [ "LookupTableRevisionData" ],
        "summary" : "Get LookupTableRevisionData Job Response.",
        "description" : "Get the Lookup Table Revision Data job Response for given job id.\n\n**NOTE:** Use the [List LookupTableRevisionData Jobs](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/ListLookupTableRevisionDataJobs) endpoint to list the Data job Responses for a specific Revision. ",
        "operationId" : "GetLookupTableRevisionDataJobResponse",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableId",
          "in" : "path",
          "description" : "UUID of the Lookup Table.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableRevisionId",
          "in" : "path",
          "description" : "UUID of the Lookup Table Revision.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the Lookup Table Revision Data job.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the LookupTableRevisionDataJob Response",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LookupTableRevisionDataJobResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "LookupTableRevisionData" ],
        "summary" : "Delete LookupTableRevisionData Job Response",
        "description" : "Delete the LookupTableRevisionData Job Response for given job id.\n\n**NOTE:** Use the [List LookupTableRevisionData Jobs](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/ListLookupTableRevisionDataJobs) endpoint to list the Data job Responses for a specific Revision.",
        "operationId" : "DeleteLookupTableRevisionDataJobResponse",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableId",
          "in" : "path",
          "description" : "UUID of the Lookup Table.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableRevisionId",
          "in" : "path",
          "description" : "UUID of the Lookup Table Revision.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the Lookup Table Revision Data job.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted LookupTableRevisionDataJob Response",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LookupTableRevisionDataJobResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{lookupTableRevisionId}/data/jobs" : {
      "get" : {
        "tags" : [ "LookupTableRevisionData" ],
        "summary" : "List LookupTableRevisionData Jobs",
        "description" : "List the Lookup Table Revision Data job Responses for the given Lookup Table Revision.\n\nThere are four types of Revision Data jobs:\n* **COPY**. Job runs when you use the [Copy LookupTableRevisionData](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/CopyLookupTableRevisionData) endpoint which returns the `jobId`.\n* **UPLOAD**. Job runs when you use the [Generate LookupTableRevisionData Upload URL](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/GenerateLookupTableDataUploadUrl) endpoint which returns the `jobId`.\n* **DOWNLOAD**. Job runs when you use the [](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/TriggerLookupTableRevisionDataDownloadJob) endpoint which returns the `jobId`.\n* **ARCHIVE**. Job runs when you either manually change a DRAFT Revision to PUBLISHED using the [Update LookupTableRevision Status](https://www.m3ter.com/docs/api#tag/LookupTableRevision/operation/UpdateLookupTableRevisionStatus) endpoint or you publish a DRAFT Revision and the existing PUBLISHED Revision is archived.\n\n**NOTE:** This endpoint returns the id of each Data job. You then use:\n* The [Get LookupTableRevisionData Job Response](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/GetLookupTableRevisionDataJobResponse) endpoint to retrieve a specific Data job Response.\n* The [Delete LookupTableRevisionData Job Response](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/DeleteLookupTableRevisionDataJobResponse) to delete a specific Data job Response.",
        "operationId" : "ListLookupTableRevisionDataJobs",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableId",
          "in" : "path",
          "description" : "UUID of the Lookup Table.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableRevisionId",
          "in" : "path",
          "description" : "UUID of the Lookup Table Revision.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "The number of Lookup Table Revision Data Job Responses to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "The nextToken for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns a List of LookupTableRevisionDataJob Responses",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedLookupTableRevisionDataJobResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{lookupTableRevisionId}/data/{lookupKey}" : {
      "get" : {
        "tags" : [ "LookupTableRevisionData" ],
        "summary" : "Get LookupTableRevisionData entry",
        "description" : "Retrieve a Lookup Table Revision Data item for the given lookup key.\n\n**NOTES:**\n* To obtain the lookup key for a Revision's data items, use the [Get LookupTableRevisionData](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/GetLookupTableRevisionData) endpoint in this section and use the `additional=lookupKey` query parameter.\n* If the Revision's Data schema uses multiple key fields, enter these as a comma-separated list for the `lookupKey` path parameter: .../key1,key2,key3 and so on. Importantly, multiple keys must be *entered in the same order* as they are configured in the Revision's Data schema.",
        "operationId" : "GetLookupTableRevisionDataEntry",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableId",
          "in" : "path",
          "description" : "UUID of the Lookup Table.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableRevisionId",
          "in" : "path",
          "description" : "UUID of the Lookup Table Revision.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupKey",
          "in" : "path",
          "description" : "The specific lookup key for the Data item to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the LookupTableRevisionData item",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LookupTableRevisionDataResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "LookupTableRevisionData" ],
        "summary" : "Upsert LookupTableRevisionData entry",
        "description" : "Create/update a Lookup Table Revision Data item by lookup key.\n\n**NOTES:**\n* To obtain the lookup key for a Revision's data items, use the [Get LookupTableRevisionData](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/GetLookupTableRevisionData) endpoint in this section and use the `additional=lookupKey` query parameter.\n* If the Revision's Data schema uses multiple key fields, enter these as a comma-separated list for the `lookupKey` path parameter: .../key1,key2,key3 and so on. Importantly, multiple keys must be *entered in the same order* as they are configured in the Revision's Data schema.",
        "operationId" : "PutLookupTableRevisionDataEntry",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableId",
          "in" : "path",
          "description" : "UUID of the Lookup Table.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableRevisionId",
          "in" : "path",
          "description" : "UUID of the Lookup Table Revision.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupKey",
          "in" : "path",
          "description" : "The specific lookup key for the Data item to upsert.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "additional",
          "in" : "query",
          "description" : "Comma separated list of additional fields. For example, you can use `additional=lookupKey` to get the lookup key returned for the Data item.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/LookupTableRevisionDataItemUpsertRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the upserted Lookup Table Revision Data item",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LookupTableRevisionDataResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "LookupTableRevisionData" ],
        "summary" : "Delete LookupTableRevisionData entry",
        "description" : "Delete a Lookup Table Revision Data entry by lookup key.\n\n**NOTES:**\n* To obtain the lookup key for a Revision's data items, use the [Get LookupTableRevisionData](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/GetLookupTableRevisionData) endpoint in this section and use the `additional=lookupKey` query parameter.\n* If the Revision's Data schema uses multiple key fields, enter these as a comma-separated list for the `lookupKey` path parameter: .../key1,key2,key3 and so on. Importantly, multiple keys must be *entered in the same order* as they are configured in the Revision's Data schema.",
        "operationId" : "DeleteLookupTableRevisionDataEntry",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableId",
          "in" : "path",
          "description" : "UUID of the Lookup Table.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableRevisionId",
          "in" : "path",
          "description" : "UUID of the Lookup Table Revision.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupKey",
          "in" : "path",
          "description" : "The specific lookup key for the Data item to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/LookupTableRevisionDataItemDeleteRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the deleted LookupTableRevisionData entry.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LookupTableRevisionDataResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{id}/status" : {
      "put" : {
        "tags" : [ "LookupTableRevision" ],
        "summary" : "Update LookupTableRevision Status",
        "description" : "Update the status of a Lookup Table Revision for the given UUID.",
        "operationId" : "UpdateLookupTableRevisionStatus",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Lookup Table Revision to update the status for.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableId",
          "in" : "path",
          "description" : "UUID of the Lookup Table the Revision belongs to.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/LookupTableRevisionStatusRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated LookupTableRevision",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LookupTableRevisionResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{id}" : {
      "get" : {
        "tags" : [ "LookupTableRevision" ],
        "summary" : "Retrieve LookupTableRevision",
        "description" : "Retrieve a Lookup Table Revision for the given UUID.",
        "operationId" : "GetLookupTableRevision",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Lookup Table Revision to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableId",
          "in" : "path",
          "description" : "The UUID of the Lookup Table the Revision belongs to.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the LookupTableRevision",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LookupTableRevisionResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "LookupTableRevision" ],
        "summary" : "Update LookupTableRevision",
        "description" : "Update a Lookup Table Revision for the given UUID.\n\n**NOTE:** If you've already added data to a Lookup Table Revision - see the following [Lookup Table Revision Data](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData) section - then you won't be able to change the Revision's field schema and you'll receive an error if you try do this. Create a new Revision instead, or delete the data items first.",
        "operationId" : "UpdateLookupTableRevision",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Lookup Table Revision to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableId",
          "in" : "path",
          "description" : "The UUID of the Lookup Table the Revision belongs to.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/LookupTableRevisionRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the updated LookupTableRevision",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LookupTableRevisionResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "LookupTableRevision" ],
        "summary" : "Delete LookupTableRevision",
        "description" : "Delete the Lookup Table Revision for the given UUID.",
        "operationId" : "DeleteLookupTableRevision",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Lookup Table Revision to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableId",
          "in" : "path",
          "description" : "The UUID of the Lookup Table the Revision belongs to.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the deleted LookupTableRevision",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LookupTableRevisionResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{lookupTableRevisionId}/data/jobs/download" : {
      "post" : {
        "tags" : [ "LookupTableRevisionData" ],
        "summary" : "Trigger Download LookupTableRevisionData URL Job",
        "description" : "Trigger an URL job to download the Lookup Table Revision Data. The URL download Data `jobId` is returned and you can then use the [List LookupTableRevisionData Jobs](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/ListLookupTableRevisionDataJobs) endpoint or the [Get LookupTableRevisionData Job Response](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/GetLookupTableRevisionDataJobResponse) endpoint to retrieve the URL and perform the Revision data Download.",
        "operationId" : "TriggerLookupTableRevisionDataDownloadJob",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableId",
          "in" : "path",
          "description" : "UUID of the Lookup Table.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableRevisionId",
          "in" : "path",
          "description" : "UUID of the Lookup Table Revision.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/LookupTableDataDownloadJobRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the trigger Download URL jobId.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LookupTableDataDownloadJobResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/lookuptables/{lookupTableId}/revisions" : {
      "get" : {
        "tags" : [ "LookupTableRevision" ],
        "summary" : "List LookupTableRevision",
        "description" : "List LookupTableRevision entities",
        "operationId" : "ListLookupTableRevision",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableId",
          "in" : "path",
          "description" : "The lookup table Id",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of LookupTable to retrieve per page",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 200,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "Token to supply for multi page retrievals",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "ids",
          "in" : "query",
          "description" : "List of Lookup Table Revision IDs to retrieve",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of LookupTableRevision entities",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedLookupTableRevisionResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "post" : {
        "tags" : [ "LookupTableRevision" ],
        "summary" : "Create LookupTableRevision",
        "description" : "Create a new Revision for a Lookup Table.\n\nFields and Keys for Revision schema: Use the `fields` parameter to define a Revision schema containing up to 10 number or string fields. Use the `keys` parameter to specify which are the key fields:\n* At least one field must be a non-key field and at least one a key field.\n* Up to 5 key fields can be defined.\n* Using multiple key fields: ensure that the order in which they are defined matches the order in which you want to use them in any Lookup functions that reference the Revision's Lookup Table, because this is the order in which they will be passed into the function. The order of non-key fields is not constrained in this way.\n\nRevision status: when you first create a Lookup Table Revision it has DRAFT status. Use the [Update LookupTableRevision Status](https://docs.m3ter.com/api/lookuptablerevision/update-lookuptablerevision-status) call to change a Revision's status.",
        "operationId" : "CreateLookupTableRevision",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableId",
          "in" : "path",
          "description" : "UUID of the Lookup Table the Revision will be created for.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/LookupTableRevisionRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the created Lookup Table Revision",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LookupTableRevisionResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/lookuptables/{lookupTableId}/revisions/{lookupTableRevisionId}/data/generateuploadurl" : {
      "post" : {
        "tags" : [ "LookupTableRevisionData" ],
        "summary" : "Generate LookupTableRevisionData Upload URL",
        "description" : "Generate a URL which can be used to upload a data file for creating or updating the Lookup Table Revision's data:\n\n* An upload URL is returned together with an UPLOAD `jobId`.\n* You can then upload your data file using a PUT request using the returned upload URL as the endpoint. For the PUT request, map the headers returned and their values and in the request body select the specified CSV or JSONL file containing the Revision Data to upload.\n* You can use the returned UPLOAD `jobId` with the [List LookupTableRevisionData Jobs](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/ListLookupTableRevisionDataJobs) or the [Get LookupTableRevisionData Job Response](https://www.m3ter.com/docs/api#tag/LookupTableRevisionData/operation/GetLookupTableRevisionDataJobResponse) endpoints for any follow-up or troubleshooting.\n\n**Important:**\n* The `contentLength` request parameter is required.\n* The upload URL is time limited - it is valid for ***one minute***.\n",
        "operationId" : "GenerateLookupTableDataUploadUrl",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableId",
          "in" : "path",
          "description" : "UUID of the Lookup Table.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "lookupTableRevisionId",
          "in" : "path",
          "description" : "UUID of the Lookup Table Revision.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/LookupTableDataUploadRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the upload URL.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LookupTableDataUploadResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/lookuptables/{id}" : {
      "get" : {
        "tags" : [ "LookupTable" ],
        "summary" : "Get LookupTable",
        "description" : "Retrieve a Lookup Table by UUID.",
        "operationId" : "GetLookupTable",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Lookup Table to retrieve.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "additional",
          "in" : "query",
          "description" : "Comma separated list of additional non-default fields to be included in the response. For example,if you want to include the active Revision for the Lookup Tables returned, set `additional=activeRevision` in the query.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the requested Lookup Table",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LookupTableResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "put" : {
        "tags" : [ "LookupTable" ],
        "summary" : "Update LookupTable",
        "description" : "Update the Lookup Table with the given UUID.",
        "operationId" : "PutLookupTable",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Lookup Table to update.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/LookupTableRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Return the updated Lookup Table.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LookupTableResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      },
      "delete" : {
        "tags" : [ "LookupTable" ],
        "summary" : "Delete LookupTable",
        "description" : "Delete the Lookup Table with the given UUID.",
        "operationId" : "DeleteLookupTable",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "The UUID of the Lookup Table to delete.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the deleted Lookup Table",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LookupTableResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        }
      }
    },
    "/organizations/{orgId}/fileuploads/measurements/jobs/{id}/original" : {
      "get" : {
        "tags" : [ "Measurements" ],
        "summary" : "Get Original File Download URL",
        "description" : "Use the original file upload job id to obtain a download URL, which you can then use to retrieve the file you originally uploaded to the file upload service:\n- A download URL is returned together with a download job id.\n- You can then use a `GET` using the returned download URL as the endpoint to retrieve the file you originally uploaded.\n\nPart of the file upload service for submitting measurements data files.",
        "operationId" : "GetJobOriginalFileDownloadUrl",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the file service job for the original measurements file upload.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns the download URL and jobId",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UrlDownloadResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        },
        "security" : [ {
          "OAuth2" : [ "measurements:fileUpload" ]
        } ]
      }
    },
    "/organizations/{orgId}/fileuploads/measurements/generateUploadUrl" : {
      "post" : {
        "tags" : [ "Measurements" ],
        "summary" : "Generate Upload URL",
        "description" : "Generate a URL for uploading a file containing measurements to the platform in preparation for the measurements it contains to be ingested:\n- An upload URL is returned together with an upload job id:\n- You can then upload your data measurements file using a `PUT` request using the returned upload URL as the endpoint.\n- You can use the returned upload job id with other calls to the File Upload Service for any follow-up or troubleshooting.\n\n**Important:**\n* The `contentLength` request parameter is required.\n* The upload URL is time limited - it is valid for ***one*** minute.\n\nPart of the file upload service for submitting measurements data files.",
        "operationId" : "GenerateUploadUrl",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the Organization. The Organization represents your company as a direct customer of the m3ter platform.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/GetUploadUrlRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the upload URL and jobId",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UrlUploadResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        },
        "security" : [ {
          "OAuth2" : [ "measurements:fileUpload" ]
        } ]
      }
    },
    "/organizations/{orgId}/fileuploads/measurements/jobs" : {
      "get" : {
        "tags" : [ "Measurements" ],
        "summary" : "List File Upload Jobs",
        "description" : "Lists the File Upload jobs. Part of the File Upload service for measurements ingest:\n* You can use the `dateCreatedStart` and `dateCreatedEnd` optional Query parameters to define a date range to filter the File Uploads jobs returned for this call.\n* If `dateCreatedStart` and `dateCreatedEnd` Query parameters are not used, then all File Upload jobs are returned.",
        "operationId" : "ListJobs",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of File Upload jobs to retrieve per page.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "maximum" : 100,
            "minimum" : 1,
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "nextToken",
          "in" : "query",
          "description" : "`nextToken` for multi page retrievals.",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "dateCreatedStart",
          "in" : "query",
          "description" : "Include only File Upload jobs created on or after this date. Required format is ISO-8601: yyyy-MM-dd'T'HH:mm:ss'Z'",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "dateCreatedEnd",
          "in" : "query",
          "description" : "Include only File Upload jobs created before this date. Required format is ISO-8601: yyyy-MM-dd'T'HH:mm:ss'Z'",
          "required" : false,
          "allowEmptyValue" : true,
          "style" : "form",
          "explode" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "fileKey",
          "in" : "query",
          "description" : "<<deprecated>>",
          "required" : false,
          "style" : "form",
          "explode" : false,
          "schema" : {
            "type" : "string",
            "nullable" : true
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the list of File Upload jobs.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PaginatedUploadJobResponseData"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        },
        "security" : [ {
          "OAuth2" : [ "measurements:fileUpload" ]
        } ]
      }
    },
    "/organizations/{orgId}/fileuploads/measurements/jobs/{id}" : {
      "get" : {
        "tags" : [ "Measurements" ],
        "summary" : "Get File Upload Job Response",
        "description" : "Get the file upload job response using the UUID of the file upload job.\n\nPart of the file upload service for measurements ingest.",
        "operationId" : "GetUploadJobResponse",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "id",
          "in" : "path",
          "description" : "UUID of the file upload job.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Return the UploadJobResponse",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UploadJobResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        },
        "security" : [ {
          "OAuth2" : [ "measurements:fileUpload" ]
        } ]
      }
    },
    "/organizations/{orgId}/measurements" : {
      "post" : {
        "tags" : [ "Measurements" ],
        "summary" : "Submit Measurements",
        "description" : "Submit a measurement or multiple measurements to the m3ter platform. The maximum size of the payload needs to be less than 512,000 bytes.\n\n**NOTES:**\n* **Non-existent Accounts.** The `account` request parameter is required. However, if you want to submit a usage data measurement for an Account which does not yet exist in your Organization, you can use an `account` code for a non-existent Account. A new skeleton Account will be automatically created. The usage data measurement is accepted and ingested as data belonging to the new auto-created Account. At a later date, you can edit the Account and update the Code,??Name, and email address. For more details, see [Submitting Usage Data for Non-Existent Accounts](https://www.m3ter.com/docs/guides/billing-and-usage-data/submitting-usage-data/submitting-usage-data-for-non-existent-accounts) in our main documentation.\n* **Usage Data Adjustments.** If you need to make corrections for billing retrospectively against an Account, you can use date/time values in the past for the `ts` (timestamp) request parameter to submit positive or negative usage data amounts to correct and reconcile earlier billing anomalies. For more details, see [Submitting Usage Data Adjustments Using Timestamp](https://www.m3ter.com/docs/guides/billing-and-usage-data/submitting-usage-data/submitting-usage-data-adjustments-using-timestamp) in our main documentation.\n* **Ingest Validation Failure Events.** After the intial submission of a usage data measurement to the Ingest API, a data enrichment stage is performed to check for any errors in the usage data measurement, such as a missing field. If an error is identified, this might result in the submission being rejected. In these cases, an *ingest validation failure* Event is generated, which you can review on the [Ingest Events](https://www.m3ter.com/docs/guides/billing-and-usage-data/submitting-usage-data/reviewing-and-resolving-ingest-events) page in the Console. See also the [Events](https://www.m3ter.com/docs/api#tag/Events) section in this API Reference.\n\n**IMPORTANT! - Use of PII:** The use of any of your end-customers' Personally Identifiable Information (PII) in m3ter is restricted to a few fields on the **Account** entity. Please ensure that any measurements you submit do not contain any end-customer PII data. See the [Introduction section](https://www.m3ter.com/docs/api#section/Introduction) above for more details.",
        "operationId" : "SubmitMeasurements",
        "parameters" : [ {
          "name" : "orgId",
          "in" : "path",
          "description" : "UUID of the organization. The Organization represents your company as a direct customer of the m3ter service.",
          "required" : true,
          "style" : "simple",
          "explode" : false,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "description" : "",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SubmitMeasurementsRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Returns the result of the submission",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SubmitMeasurementsResponse"
                }
              }
            }
          },
          "4XX" : {
            "$ref" : "#/components/responses/Error"
          },
          "5XX" : {
            "$ref" : "#/components/responses/Error"
          }
        },
        "security" : [ {
          "OAuth2" : [ "measurements:upload" ]
        } ],
        "servers" : [ {
          "url" : "https://ingest.m3ter.com"
        } ]
      }
    }
  },
  "components" : {
    "schemas" : {
      "AbstractPickListRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "name" ],
          "type" : "object",
          "properties" : {
            "code" : {
              "maxLength" : 80,
              "pattern" : "^[\\p{L}_$][\\p{L}_$0-9]*$",
              "type" : "string",
              "description" : "The short code for the entity.",
              "example" : "code"
            },
            "name" : {
              "maxLength" : 200,
              "minLength" : 1,
              "type" : "string",
              "description" : "The name of the entity."
            },
            "archived" : {
              "type" : "boolean",
              "description" : "A Boolean TRUE / FALSE flag indicating whether the entity is archived. An entity can be archived if it is obsolete.\n\n* TRUE - the entity is in the archived state.\n* FALSE - the entity is not in the archived state."
            }
          }
        } ]
      },
      "BillJobType" : {
        "type" : "string",
        "description" : "Specifies the type of BillJob. \n\n* **Create** when creating a new Bill.\n* **Recalculate** when recalculating an existing Bill.",
        "enum" : [ "CREATE", "RECALCULATE" ]
      },
      "AbstractResponseWithCustomFields" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "customFields" : {
              "type" : "object",
              "additionalProperties" : {
                "type" : "object"
              },
              "description" : "User defined fields enabling you to attach custom data. The value for a custom field can be either a string or a number.\n\nIf `customFields` can also be defined for this entity at the Organizational level,`customField` values defined at individual level override values of `customFields` with the same name defined at Organization level.\n\nSee [Working with Custom Fields](https://www.m3ter.com/docs/guides/creating-and-managing-products/working-with-custom-fields) in the m3ter documentation for more information."
            }
          }
        } ]
      },
      "BillJobResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "lastDateInBillingPeriod" : {
              "type" : "string",
              "description" : "Specifies the date *(in ISO 8601 format)* of the last day in the billing period, defining the time range for the associated Bills.\n\nFor example: `\"2023-03-24\"`.",
              "format" : "date"
            },
            "billingFrequency" : {
              "description" : "Defines how often Bills are generated.\n\n* **Daily**. Starting at midnight each day, covering a twenty-four hour period following.\n\n* **Weekly**. Starting at midnight on a Monday morning covering the seven-day period following.\n\n* **Monthly**. Starting at midnight on the morning of the first day of each month covering the entire calendar month following.\n\n* **Annually**. Starting at midnight on the morning of the first day of each year covering the entire calendar year following.\n\n* **Ad_Hoc**. Use this setting when a custom billing schedule is used for billing an Account, such as for billing of Prepayment/Commitment fees using a custom billing schedule.\n",
              "$ref" : "#/components/schemas/BillJobBillingFrequency"
            },
            "billFrequencyInterval" : {
              "type" : "integer",
              "description" : "How often Bills are issued - used in conjunction with `billingFrequency`.\n\nFor example, if `billingFrequency` is set to Monthly and `billFrequencyInterval` is set to 3, Bills are issued every three months.",
              "format" : "int32"
            },
            "billDate" : {
              "type" : "string",
              "description" : "The specific billing date *(in ISO 8601 format)*, determining when the Bill was generated.\n\nFor example: `\"2023-01-24\"`.",
              "format" : "date"
            },
            "externalInvoiceDate" : {
              "type" : "string",
              "description" : "For accounting purposes, the date set at Organization level to use for external invoicing with respect to billing periods - two options:\n* `FIRST_DAY_OF_NEXT_PERIOD` *(Default)*. Used when you want to recognize usage revenue in the following period.\n* `LAST_DAY_OF_ARREARS`. Used when you want to recognize usage revenue in the same period that it's consumed, instead of in the following period.\n\nFor example, if the retrieved Bill was on a monthly billing frequency and the billing period for the Bill is September 2023 and the *External invoice date* is set at `FIRST_DAY_OF_NEXT_PERIOD`, then the `externalInvoiceDate` will be `\"2023-10-01\"`. ",
              "format" : "date"
            },
            "dueDate" : {
              "type" : "string",
              "description" : "The due date *(in ISO 8601 format)* for payment of the Bill.\n\nFor example: `\"2023-02-24\"`.",
              "format" : "date"
            },
            "accountIds" : {
              "type" : "array",
              "description" : "An array of UUIDs representing the end customer Accounts associated with the BillJob.",
              "items" : {
                "type" : "string"
              }
            },
            "billIds" : {
              "type" : "array",
              "description" : "An array of Bill IDs related to the BillJob, providing references to the specific Bills generated.",
              "items" : {
                "type" : "string"
              }
            },
            "targetCurrency" : {
              "type" : "string",
              "description" : "The currency code used for the Bill, such as USD, GBP, or EUR."
            },
            "currencyConversions" : {
              "type" : "array",
              "description" : "An array of currency conversion rates from Bill currency to Organization currency. For example, if Account is billed in GBP and Organization is set to USD, Bill line items are calculated in GBP and then converted to USD using the defined rate.",
              "items" : {
                "$ref" : "#/components/schemas/CurrencyConversion"
              }
            },
            "timezone" : {
              "type" : "string",
              "description" : "Specifies the time zone used for the generated Bills, ensuring alignment with the local time zone.",
              "example" : "UTC",
              "default" : "UTC"
            },
            "yearEpoch" : {
              "type" : "string",
              "description" : "The starting date *(epoch)* for Yearly billing frequency *(in ISO 8601 format)*, determining the first Bill date for yearly Bills.",
              "format" : "date"
            },
            "monthEpoch" : {
              "type" : "string",
              "description" : "The starting date *(epoch)* for Monthly billing frequency *(in ISO 8601 format)*, determining the first Bill date for monthly Bills.",
              "format" : "date"
            },
            "weekEpoch" : {
              "type" : "string",
              "description" : "The starting date *(epoch)* for Weekly billing frequency *(in ISO 8601 format)*, determining the first Bill date for weekly Bills.",
              "format" : "date"
            },
            "dayEpoch" : {
              "type" : "string",
              "description" : "The starting date *(epoch)* for Daily billing frequency *(in ISO 8601 format)*, determining the first Bill date for daily Bills.",
              "format" : "date"
            },
            "status" : {
              "description" : "The current status of the BillJob, indicating its progress or completion state.",
              "$ref" : "#/components/schemas/BillJobStatus"
            },
            "total" : {
              "type" : "integer",
              "description" : "The total number of Bills or calculations related to the BillJob.",
              "format" : "int64"
            },
            "pending" : {
              "type" : "integer",
              "description" : "The number of pending actions or calculations within the BillJob.",
              "format" : "int64"
            },
            "type" : {
              "description" : "Specifies the type of BillJob. \n\n* **CREATE** Returned for a *Create BillJob* call.\n* **RECALCULATE** Returned for a successful *Create Recalculation BillJob* call.",
              "$ref" : "#/components/schemas/BillJobType"
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The date and time *(in ISO 8601 format)* when the BillJob was first created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The date and time *(in ISO 8601 format)* when the BillJob was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the user who created the BillJob."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the user who last modified this BillJob."
            }
          }
        } ]
      },
      "TransactionTypeResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractPickListResponse"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "dtCreated" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the TransactionType was created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the TransactionType was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who created this TransactionType."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who last modified this TransactionType."
            }
          }
        } ]
      },
      "SimpleSearchRequestBase" : {
        "type" : "object",
        "properties" : {
          "fromDocument" : {
            "type" : "integer",
            "description" : "",
            "format" : "int32"
          },
          "pageSize" : {
            "type" : "integer",
            "description" : "",
            "format" : "int32"
          },
          "operator" : {
            "description" : "",
            "$ref" : "#/components/schemas/SearchOperator"
          },
          "sortBy" : {
            "type" : "string",
            "description" : ""
          },
          "sortOrder" : {
            "description" : "",
            "$ref" : "#/components/schemas/SortOrder"
          }
        },
        "description" : ""
      },
      "PermissionEffect" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "ALLOW", "DENY" ]
      },
      "PaginatedCompoundAggregationResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/CompoundAggregationResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "AuthType" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "OAUTH_CODE", "OAUTH_CLIENT_CREDENTIALS", "HTTP_BASIC", "M3TER_SIGNED_REQUEST", "AWS_INTEGRATION", "PADDLE", "NETSUITE", "CHARGEBEE", "M3TER_APP_SIGNATURE", "M3TER_SERVICE_USER", "STRIPE_SIGNED_REQUEST", "OPSGENIE_KEY", "SAP_BYD", "HUBSPOT_ACCESS_TOKEN", "HUBSPOT_CLIENT_SECRET", "SLACK_WEBHOOK", "SAGE_INTACCT_CLIENT_CREDENTIALS", "SAGE_INTACCT_CLIENT_SECRET", "STATIC_API_KEY", "GCP_WIF" ]
      },
      "PaginatedMeterResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/MeterResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "PlanTemplateResponse" : {
        "type" : "object",
        "description" : "",
        "example" : {
          "id" : "string",
          "version" : 1,
          "customFields" : {
            "example1" : 123,
            "example2" : "string"
          },
          "productId" : "string",
          "name" : "string",
          "currency" : "USD",
          "standingCharge" : 0,
          "standingChargeDescription" : "string",
          "standingChargeInterval" : 1,
          "standingChargeOffset" : 364,
          "billFrequencyInterval" : 1,
          "billFrequency" : "DAILY",
          "ordinal" : 0,
          "code" : "string",
          "minimumSpend" : 0,
          "minimumSpendDescription" : "string",
          "standingChargeBillInAdvance" : true,
          "minimumSpendBillInAdvance" : false
        },
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "productId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the Product associated with this PlanTemplate."
            },
            "name" : {
              "type" : "string",
              "description" : "Descriptive name for the PlanTemplate."
            },
            "currency" : {
              "type" : "string",
              "description" : "The ISO currency code for the pricing currency used by Plans based on the Plan Template to define charge rates for Product consumption - for example USD, GBP, EUR."
            },
            "standingCharge" : {
              "type" : "number",
              "description" : "The fixed charge *(standing charge)* applied to customer bills. This charge is prorated and must be a non-negative number.",
              "format" : "double"
            },
            "standingChargeDescription" : {
              "type" : "string",
              "description" : "Standing charge description *(displayed on the bill line item)*."
            },
            "standingChargeInterval" : {
              "type" : "integer",
              "description" : "How often the standing charge is applied. \nFor example, if the bill is issued every three months and `standingChargeInterval` is 2, then the standing charge is applied every six months.",
              "format" : "int32"
            },
            "standingChargeOffset" : {
              "type" : "integer",
              "description" : "Defines an offset for when the standing charge is first applied. \nFor example, if the bill is issued every three months and the `standingChargeOfset` is 0, then the charge is applied to the first bill *(at three months)*; if 1, it would be applied to the second bill *(at six months)*, and so on.",
              "format" : "int32"
            },
            "billFrequencyInterval" : {
              "type" : "integer",
              "description" : "How often bills are issued. \nFor example, if `billFrequency` is Monthly and `billFrequencyInterval` is 3, bills are issued every three months.",
              "format" : "int32"
            },
            "billFrequency" : {
              "description" : "Determines the frequency at which bills are generated.\n\n* **Daily**. Starting at midnight each day, covering the twenty-four hour period following.\n\n* **Weekly**. Starting at midnight on a Monday, covering the seven-day period following.\n\n* **Monthly**. Starting at midnight on the first day of each month, covering the entire calendar month following.\n\n* **Annually**. Starting at midnight on first day of each year covering the entire calendar year following.",
              "$ref" : "#/components/schemas/BillingFrequency"
            },
            "ordinal" : {
              "type" : "integer",
              "description" : "The ranking of the PlanTemplate among your pricing plans. Lower numbers represent more basic plans, while higher numbers represent premium plans. This must be a non-negative integer.\n\n**NOTE:** **DEPRECATED** - no longer used.",
              "format" : "int64"
            },
            "code" : {
              "type" : "string",
              "description" : "A unique, short code reference for the PlanTemplate. This code should not contain control characters or spaces."
            },
            "minimumSpend" : {
              "type" : "number",
              "description" : "The Product minimum spend amount per billing cycle for end customer Accounts on a pricing Plan based on the PlanTemplate. This must be a non-negative number.",
              "format" : "double"
            },
            "minimumSpendDescription" : {
              "type" : "string",
              "description" : "Minimum spend description *(displayed on the bill line item)*."
            },
            "standingChargeBillInAdvance" : {
              "type" : "boolean",
              "description" : "A boolean that determines when the standing charge is billed.\n\n* TRUE - standing charge is billed at the start of each billing period.\n* FALSE - standing charge is billed at the end of each billing period.\n\nOverrides the setting at Organizational level for standing charge billing in arrears/in advance."
            },
            "minimumSpendBillInAdvance" : {
              "type" : "boolean",
              "description" : "A boolean that determines when the minimum spend is billed.\n\n* TRUE - minimum spend is billed at the start of each billing period.\n* FALSE - minimum spend is billed at the end of each billing period.\n\nOverrides the setting at Organizational level for minimum spend billing in arrears/in advance."
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the PlanTemplate was created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the PlanTemplate was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who created this PlanTemplate."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who last modified this PlanTemplate."
            }
          }
        } ]
      },
      "BearerAccessTokenRequest" : {
        "required" : [ "grant_type" ],
        "type" : "object",
        "properties" : {
          "grant_type" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "The grant type.",
            "enum" : [ "client_credentials" ]
          },
          "scope" : {
            "type" : "string",
            "description" : "Not used. The JWT scope."
          }
        },
        "description" : ""
      },
      "Status" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "PENDING", "RUNNING", "SUCCEEDED", "FAILED" ]
      },
      "StatementJobStatus" : {
        "type" : "string",
        "description" : "The current status of the StatementJob. The status helps track the progress and outcome of a StatementJob.",
        "enum" : [ "PENDING", "RUNNING", "COMPLETE", "CANCELLED", "FAILED" ]
      },
      "PaginatedBalanceTransactionResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/BalanceTransactionResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "PrincipalPermissionResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "permissionPolicyId" : {
              "type" : "string",
              "description" : ""
            },
            "principalId" : {
              "type" : "string",
              "description" : ""
            },
            "principalType" : {
              "description" : "",
              "$ref" : "#/components/schemas/PrincipalType"
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The DateTime *(in ISO-8601 format)* when the principal permission was created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The DateTime *(in ISO-8601 format)* when the principal permission was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The id of the user who created this principal permission."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The id of the user who last modified this principal permission."
            }
          }
        } ]
      },
      "PaginatedResourceGroupItemResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/ResourceGroupItemResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "ObjectUrlResponse" : {
        "type" : "object",
        "properties" : {
          "downloadUrl" : {
            "type" : "string",
            "description" : "The pre-signed download URL.",
            "format" : "url"
          }
        },
        "description" : ""
      },
      "PaginatedJobResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/JobResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "LookupTableRevisionCopyResponse" : {
        "type" : "object",
        "properties" : {
          "jobId" : {
            "type" : "string",
            "description" : "UUID of the Revision Data copy job."
          },
          "revisionId" : {
            "type" : "string",
            "description" : "The ID of the destination Revision."
          }
        },
        "description" : ""
      },
      "DataFieldCategory" : {
        "type" : "string",
        "description" : "The field type, which defines the type of data collected in the field. \n\n* **Who.** String. Use to collect usage data about an individual or organization - data events that answer a \"Who\" question, such as, \"Who or which organization logged-in to the service?\", \"Who was contacted?\", and so on.\n\n* **What.** String. Use to collect usage data about some object or thing, whether it be a physical object in the real world or something in a virtual context.\n\n* **Where.** String. Use to collect usage data about a location - where something happened, whether in physical geographical space or a virtual space.\n\n* **Measure.** Numeric. Use in a general way to collect quantitative usage data.\n\n* **Metadata.** String. *(Max. 256 characters).* Use for high-cardinality fields that you don't intend to segment when you aggregate the data.\n\n* **Income.** Numeric. Use to collect usage data associated with income.\n\n* **Cost.** Numeric. Use to collect usage data associated with costs.\n\n* **Other.** String. Use to collect textual usage not applicable to Who, What, or Where events.",
        "enum" : [ "WHO", "WHERE", "WHAT", "OTHER", "METADATA", "MEASURE", "INCOME", "COST" ]
      },
      "ExportDestinationGoogleCloudStorageRequest" : {
        "title" : "ExportDestinationGoogleCloudStorageRequest",
        "required" : [ "bucketName", "poolId", "projectNumber", "providerId" ],
        "type" : "object",
        "properties" : {
          "bucketName" : {
            "maxLength" : 63,
            "minLength" : 3,
            "type" : "string",
            "description" : "The export destination bucket name."
          },
          "prefix" : {
            "type" : "string",
            "description" : "The export destination prefix."
          },
          "projectNumber" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "The export destination GCP projectNumber."
          },
          "poolId" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "The export destination Web Identity Federation poolId."
          },
          "providerId" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "The export destination Web Identity Federation identity providerId."
          },
          "serviceAccountEmail" : {
            "type" : "string",
            "description" : "The export destination service account email."
          },
          "partitionOrder" : {
            "description" : "",
            "nullable" : true,
            "allOf" : [ {
              "$ref" : "#/components/schemas/PartitionOrder"
            }, {
              "type" : "object",
              "description" : "Output partitioning"
            } ]
          }
        },
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/ExportDestinationBaseRequest"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "PricingBandRequest" : {
        "required" : [ "fixedPrice", "lowerLimit", "unitPrice" ],
        "type" : "object",
        "properties" : {
          "version" : {
            "type" : "integer",
            "description" : "The version number. Default when newly created is one. Increment by 1 each time it is updated.",
            "format" : "int64"
          },
          "lowerLimit" : {
            "minimum" : 0,
            "type" : "number",
            "description" : "Lower limit for pricingBand.",
            "format" : "double"
          },
          "fixedPrice" : {
            "minimum" : 0,
            "type" : "number",
            "description" : "Fixed price charged for pricingBand.",
            "format" : "double"
          },
          "unitPrice" : {
            "minimum" : 0,
            "type" : "number",
            "description" : "Unit price charged for pricingBand.",
            "format" : "double"
          },
          "creditTypeId" : {
            "type" : "string",
            "description" : ""
          },
          "type" : {
            "description" : "",
            "$ref" : "#/components/schemas/PricingBandType"
          }
        },
        "description" : "Define pricingBands and their charge rates."
      },
      "PaginatedScheduledEventConfigurationResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/ScheduledEventConfigurationResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "RemainingCommitmentsResponse" : {
        "type" : "object",
        "properties" : {
          "values" : {
            "type" : "array",
            "description" : "List of Remain9ing Commitment items",
            "items" : {
              "$ref" : "#/components/schemas/RemainingCommitment"
            }
          }
        },
        "description" : "Response containing Remaining Commitments Response"
      },
      "PaginatedPricingResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/PricingResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "AbstractRequest" : {
        "type" : "object",
        "properties" : {
          "version" : {
            "type" : "integer",
            "description" : "The version number of the entity:\n- **Create entity:** Not valid for initial insertion of new entity - *do not use for Create*. On initial Create, version is set at 1 and listed in the response.\n- **Update Entity:**  On Update, version is required and must match the existing version because a check is performed to ensure sequential versioning is preserved. Version is incremented by 1 and listed in the response.",
            "format" : "int64",
            "x-stainless-terraform-configurability" : "computed",
            "x-stainless-terraform-always-send" : true
          }
        },
        "description" : ""
      },
      "CompoundAggregationRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractAggregationRequest"
        }, {
          "$ref" : "#/components/schemas/AbstractRequestWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "calculation" ],
          "type" : "object",
          "properties" : {
            "version" : {
              "type" : "integer",
              "description" : "",
              "format" : "int64"
            },
            "productId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "Unique identifier (UUID) of the Product the Compound Aggregation belongs to.\n\n**Note:** Omit this parameter if you want to create a *Global* Compound Aggregation."
            },
            "calculation" : {
              "maxLength" : 5000,
              "minLength" : 1,
              "type" : "string",
              "description" : "String that represents the formula for the calculation. This formula determines how the Compound Aggregation value is calculated. The calculation can reference  simple Aggregations or Custom Fields. This field is required when creating or updating a Compound Aggregation.\n\n**NOTE:** If a simple Aggregation referenced by a Compound Aggregation has a **Quantity per unit** defined or a **Rounding** defined, these will not be factored into the value used by the calculation. For example, if the simple Aggregation referenced has a base value of 100 and has **Quantity per unit** set at 10, the Compound Aggregation calculation *will use the base value of 100 not 10*."
            },
            "evaluateNullAggregations" : {
              "type" : "boolean",
              "description" : "Boolean True / False flag:\n- **TRUE** Set to TRUE if you want to allow null values from the simple Aggregations referenced in the Compound Aggregation to be passed in. Simple Aggregations based on Meter Target Fields where no usage data is available will have null values.\n- **FALSE** Default.\n\n**Note:** If any of the simple Aggregations you reference in a Compound Aggregation calculation might have null values, you must set their Default Value to 0. This ensures that any null values passed into the Compound Aggregation are passed in correctly with value = 0.\n"
            }
          }
        } ]
      },
      "PricingType" : {
        "type" : "string",
        "description" : "* **DEBIT**. Default setting. The amount calculated using the Pricing is added to the bill as a debit.\n\n* **PRODUCT_CREDIT**. The amount calculated using the Pricing is added to the bill as a credit *(negative amount)*. To prevent negative billing, the bill will be capped at the total of other line items for the *same* Product.\n\n* **GLOBAL_CREDIT**. The amount calculated using the Pricing is added to the bill as a credit *(negative amount)*. To prevent negative billing, the bill will be capped at the total of other line items for the entire bill, which might include other Products the Account consumes.",
        "enum" : [ "DEBIT", "PRODUCT_CREDIT", "GLOBAL_CREDIT" ]
      },
      "PlanGroupLinkResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "planGroupId" : {
              "type" : "string",
              "description" : "ID of the linked PlanGroup"
            },
            "planId" : {
              "type" : "string",
              "description" : "ID of the linked Plan"
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The DateTime *(in ISO-8601 format)* when the plan group link was created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The DateTime *(in ISO-8601 format)* when the plan group link was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The id of the user who created this plan group link."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The id of the user who last modified this plan group link."
            }
          }
        } ]
      },
      "CounterResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithAuditFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "code" : {
              "type" : "string",
              "description" : "Code of the Counter. A unique short code to identify the Counter."
            },
            "productId" : {
              "type" : "string",
              "description" : "UUID of the product the Counter belongs to. *(Optional)* - if no `productId` is returned, the Counter is Global. A Global Counter can be used to price Plans or Plan Templates belonging to any Product."
            },
            "name" : {
              "type" : "string",
              "description" : "Name of the Counter."
            },
            "unit" : {
              "type" : "string",
              "description" : "Label for units shown on Bill line items, and indicating to customers what they are being charged for."
            }
          }
        } ]
      },
      "PermissionStatementWrapper" : {
        "required" : [ "action", "effect", "resource" ],
        "type" : "object",
        "properties" : {
          "effect" : {
            "type" : "string",
            "description" : ""
          },
          "action" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "type" : "string"
            }
          },
          "resource" : {
            "minItems" : 1,
            "type" : "array",
            "description" : "",
            "items" : {
              "type" : "string"
            }
          }
        },
        "description" : ""
      },
      "UsageDataExportConfigurationResponseV2" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "The id of the schedule configuration."
          },
          "meterIds" : {
            "type" : "array",
            "description" : "List of meter IDs for which the usage data will be exported.",
            "items" : {
              "type" : "string"
            }
          },
          "accountIds" : {
            "type" : "array",
            "description" : "List of account IDs for which the usage data will be exported.",
            "items" : {
              "type" : "string"
            }
          },
          "timePeriod" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/TimePeriod"
            }, {
              "type" : "object",
              "description" : "Time period for which the usage data should be exported."
            } ]
          },
          "dimensionFilters" : {
            "type" : "array",
            "description" : "List of dimension filters to apply",
            "items" : {
              "$ref" : "#/components/schemas/DataExplorerDimensionFilter"
            }
          },
          "aggregations" : {
            "type" : "array",
            "description" : "List of aggregations to apply",
            "items" : {
              "$ref" : "#/components/schemas/DataExplorerAggregation"
            }
          },
          "groups" : {
            "type" : "array",
            "description" : "List of groups to apply",
            "items" : {
              "$ref" : "#/components/schemas/DataExplorerGroup"
            }
          }
        },
        "description" : "Response representing an usage schedule configuration.",
        "allOf" : [ {
          "$ref" : "#/components/schemas/DataExportConfigurationResponseBase"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        } ]
      },
      "CreditLineItemResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractBillLineItemResponse"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "amount" : {
              "type" : "number",
              "description" : "The credit amount. "
            },
            "creditReasonId" : {
              "type" : "string",
              "description" : "The UUID of the credit reason for this credit line item."
            }
          }
        } ]
      },
      "WebhookDestinationRequest" : {
        "required" : [ "credentials", "url" ],
        "type" : "object",
        "properties" : {
          "url" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "The URL to which the webhook requests will be sent."
          },
          "credentials" : {
            "description" : "The credentials required for the webhook. ",
            "allOf" : [ {
              "$ref" : "#/components/schemas/IntegrationM3terSignedCredentialsRequest"
            }, {
              "type" : "object",
              "description" : "Request representing a credential set for m3ter request signing"
            } ]
          }
        },
        "description" : "This response contains details about the `WebhookDestinationRequest` entity, including the URL and credentials required for webhook activation.",
        "allOf" : [ {
          "$ref" : "#/components/schemas/DestinationRequest"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "LookupTableRevisionFieldType" : {
        "type" : "string",
        "description" : "Type of a Lookup Table Revision Field",
        "enum" : [ "STRING", "NUMBER" ]
      },
      "InvoiceDate" : {
        "type" : "string",
        "description" : "The date to use for the invoice date. ",
        "enum" : [ "LAST_DAY_OF_ARREARS", "FIRST_DAY_OF_NEXT_PERIOD" ]
      },
      "ScheduleFrequency" : {
        "type" : "string",
        "description" : "Represents standard scheduling frequencies options for a job.",
        "enum" : [ "DAILY", "WEEKLY", "MONTHLY", "ANNUALLY" ]
      },
      "PaginatedCounterResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/CounterResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "PaginatedDataExportConfigurationResponseBaseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/DataExportConfigurationResponseBase"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "AbstractResponseWithAuditFields" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "dtCreated" : {
              "type" : "string",
              "description" : "The DateTime when this item was created *(in ISO-8601 format)*.",
              "format" : "date-time",
              "x-stainless-skip" : "terraform"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The DateTime when this item was last modified *(in ISO-8601 format)*.",
              "format" : "date-time",
              "x-stainless-skip" : "terraform"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The ID of the user who created this item.",
              "x-stainless-skip" : "terraform"
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The ID of the user who last modified this item.",
              "x-stainless-skip" : "terraform"
            }
          }
        } ]
      },
      "Rounding" : {
        "type" : "string",
        "description" : "Specifies how you want to deal with non-integer, fractional number Aggregation values.\n\n**NOTES:**\n* \"NEAREST\" rounds to the nearest half: 5.1 is rounded to 5, and 3.5 is rounded to 4.\n* Also used in combination with `quantityPerUnit`. Rounds the number of units after `quantityPerUnit` is applied. If you set `quantityPerUnit` to a value other than one, you would typically set Rounding to **UP**. For example, suppose you charge by kilobytes per second (KiBy/s), set `quantityPerUnit` = 500, and set charge rate at $0.25 per unit used. If your customer used 48,900 KiBy/s in a billing period, the charge would be 48,900 / 500 = 97.8 rounded up to 98 * 0.25 = $2.45. ",
        "enum" : [ "UP", "DOWN", "NEAREST", "NONE" ]
      },
      "ReplaceAccountPlanResponse" : {
        "type" : "object",
        "properties" : {
          "originalAccountPlan" : {
            "description" : "",
            "$ref" : "#/components/schemas/AccountPlanResponse"
          },
          "newAccountPlan" : {
            "description" : "",
            "$ref" : "#/components/schemas/AccountPlanResponse"
          }
        },
        "description" : ""
      },
      "PaginatedPermissionPolicyResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/PermissionPolicyResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "v2.PricingRequest" : {
        "type" : "object",
        "properties" : {
          "aggregationId" : {
            "type" : "string",
            "description" : ""
          },
          "compoundAggregationId" : {
            "type" : "string",
            "description" : ""
          },
          "type" : {
            "description" : "",
            "$ref" : "#/components/schemas/PricingType"
          },
          "segment" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            },
            "description" : ""
          },
          "tiersSpanPlan" : {
            "type" : "boolean",
            "description" : ""
          },
          "minimumSpend" : {
            "minimum" : 0,
            "type" : "number",
            "description" : "",
            "format" : "double"
          },
          "minimumSpendDescription" : {
            "maxLength" : 200,
            "type" : "string",
            "description" : "Minimum spend description (displayed on the bill line item)"
          },
          "minimumSpendBillInAdvance" : {
            "type" : "boolean",
            "description" : ""
          }
        },
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/BasePricingRequest"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "SubmitMeasurementsResponse" : {
        "type" : "object",
        "properties" : {
          "result" : {
            "type" : "string",
            "description" : "`accepted` is returned when successful."
          }
        },
        "description" : "",
        "example" : {
          "result" : "accepted"
        }
      },
      "ExportDestinationS3Request" : {
        "title" : "ExportDestinationS3Request",
        "required" : [ "bucketName", "iamRoleArn" ],
        "type" : "object",
        "properties" : {
          "bucketName" : {
            "maxLength" : 63,
            "minLength" : 3,
            "type" : "string",
            "description" : "Name of the S3 bucket for the Export Destination."
          },
          "prefix" : {
            "type" : "string",
            "description" : "Location in specified S3 bucket for the Export Destination. If you omit a `prefix`, then the root of the bucket will be used."
          },
          "iamRoleArn" : {
            "minLength" : 1,
            "pattern" : "^arn:aws:iam::\\d+:role/.*$",
            "type" : "string",
            "description" : "To enable m3ter to upload a Data Exports to your S3 bucket, the service has to assume an IAM role with PutObject permission for the specified `bucketName`. Create a suitable IAM role in your AWS account and enter ARN:\n\n**Formatting Constraints:**\n* The IAM role ARN must begin with \"arn:aws:iam\".\n* The general format required is: \"arn:aws:iam::<aws account id>:role/<role name>\". For example: \"arn:aws:iam::922609978421:role/IAMRole636\".\n* If the `iamRoleArn` used doesn't comply with this format, then an error message will be returned.\n\n**More Details:** For more details and examples of the Permission and Trust Policies you can use to create the required IAM Role ARN, see [Creating Data Export Destinations](https://www.m3ter.com/docs/guides/data-exports/creating-data-export-destinations) in our main User documentation."
          },
          "partitionOrder" : {
            "description" : "",
            "nullable" : true,
            "allOf" : [ {
              "$ref" : "#/components/schemas/PartitionOrder"
            }, {
              "type" : "object",
              "description" : "Output partitioning"
            } ]
          }
        },
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/ExportDestinationBaseRequest"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "ExternalMappingRequest" : {
        "required" : [ "externalId", "externalSystem", "externalTable", "m3terEntity", "m3terId" ],
        "type" : "object",
        "properties" : {
          "m3terEntity" : {
            "minLength" : 1,
            "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
            "type" : "string",
            "description" : "The name of the m3ter entity that you are creating or modifying an External Mapping for. As an example, this could be an \"Account\". ",
            "example" : "Account"
          },
          "m3terId" : {
            "minLength" : 1,
            "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
            "type" : "string",
            "description" : "The unique identifier (UUID) of the m3ter entity. ",
            "example" : "00000000-0000-0000-0000-000000000000"
          },
          "externalSystem" : {
            "minLength" : 1,
            "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
            "type" : "string",
            "description" : "The name of the external system where the entity you are mapping resides. ",
            "example" : "Stripe"
          },
          "externalTable" : {
            "minLength" : 1,
            "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
            "type" : "string",
            "description" : "The name of the table in ther external system where the entity resides. ",
            "example" : "Customer"
          },
          "externalId" : {
            "minLength" : 1,
            "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
            "type" : "string",
            "description" : "The unique identifier (UUID) of the entity in the external system. This UUID should already exist in the external system. ",
            "example" : "cus_00000000000000"
          },
          "integrationConfigId" : {
            "type" : "string",
            "description" : "UUID of the integration config to link this mapping to",
            "example" : "00000000-0000-0000-0000-000000000000"
          }
        },
        "description" : "Request containing an External Mapping entity.",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "PaginatedLookupTableRevisionDataJobResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/LookupTableRevisionDataJobResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "SearchOperator" : {
        "type" : "string",
        "description" : "Logical operators for combining multiple search criteria or groups.\n",
        "enum" : [ "AND", "OR" ]
      },
      "CounterRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "name", "unit" ],
          "type" : "object",
          "properties" : {
            "code" : {
              "maxLength" : 80,
              "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
              "type" : "string",
              "description" : "Code for the Counter. A unique short code to identify the Counter."
            },
            "productId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "UUID of the product the Counter belongs to. *(Optional)* - if left blank, the Counter is Global. A Global Counter can be used to price Plans or Plan Templates belonging to any Product."
            },
            "name" : {
              "maxLength" : 200,
              "minLength" : 1,
              "type" : "string",
              "description" : "Descriptive name for the Counter."
            },
            "unit" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "User defined label for units shown on Bill line items, and indicating to your customers what they are being charged for."
            }
          }
        } ]
      },
      "IntegrationCredentialsRequestBase" : {
        "required" : [ "type" ],
        "type" : "object",
        "properties" : {
          "empty" : {
            "type" : "boolean",
            "description" : "A flag to indicate whether the credentials are empty. \n\n* TRUE - empty credentials.\n* FALSE - credential details required."
          },
          "type" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "Specifies the type of authorization required for the integration.",
            "enum" : [ "HTTP_BASIC", "OAUTH_CLIENT_CREDENTIALS", "M3TER_SIGNED_REQUEST", "AWS_INTEGRATION", "PADDLE_AUTH", "NETSUITE_AUTH", "CHARGEBEE_AUTH", "M3TER_APP_SIGNATURE", "M3TER_SERVICE_USER", "STRIPE_SIGNED_REQUEST", "HUBSPOT_ACCESS_TOKEN", "HUBSPOT_CLIENT_SECRET", "OPSGENIE_KEY", "SAP_BYD", "SLACK_WEBHOOK", "SAGE_INTACCT_CLIENT_CREDENTIALS", "SAGE_INTACCT_CLIENT_SECRET", "STATIC_API_KEY", "GCP_WIF" ]
          },
          "name" : {
            "type" : "string",
            "description" : "The name of the credentials",
            "example" : "Integration Credentials"
          },
          "destination" : {
            "description" : "",
            "$ref" : "#/components/schemas/DestinationType"
          }
        },
        "description" : "Base model for defining integration credentials across different types of integrations.",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "CommitmentDrawdown" : {
        "type" : "object",
        "properties" : {
          "commitmentId" : {
            "type" : "string",
            "description" : ""
          },
          "units" : {
            "type" : "number",
            "description" : ""
          },
          "commitmentAmount" : {
            "type" : "number",
            "description" : ""
          },
          "lineItemAmount" : {
            "type" : "number",
            "description" : ""
          },
          "billAmount" : {
            "type" : "number",
            "description" : ""
          }
        },
        "description" : ""
      },
      "PermissionRequest" : {
        "$ref" : "#/components/schemas/AbstractRequest"
      },
      "PermissionAction" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "ALL", "CONFIG_CREATE", "CONFIG_RETRIEVE", "CONFIG_UPDATE", "CONFIG_DELETE", "CONFIG_EXPORT", "ANALYTICS_QUERY", "MEASUREMENTS_UPLOAD", "MEASUREMENTS_FILEUPLOAD", "MEASUREMENTS_RETRIEVE", "MEASUREMENTS_EXPORT", "FORECAST_RETRIEVE", "HEALTHSCORES_RETRIEVE", "ANOMALIES_RETRIEVE", "EXPORTS_DOWNLOAD", "MARKETPLACE_USAGE_CREATE", "MARKETPLACE_USAGE_RETRIEVE", "AUDIT_RETRIEVE" ]
      },
      "PricingBandType" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "STANDARD", "OVERAGE" ]
      },
      "BillGroupingKeyResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractPickListResponse"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "exclusive" : {
              "type" : "boolean",
              "description" : "Whether or not the Bill Grouping Key will be used exclusively by one entity."
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The DateTime when the Bill Grouping Key was created.(*in ISO 8601 format*)",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The DateTime when the Bill Grouping Key was last modified.(*in ISO 8601 format*)",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The id of the user who created this Bill Grouping Key."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The id of the user who last modified this Bill Grouping Key."
            }
          }
        } ]
      },
      "EvaluateCalculationRequest" : {
        "type" : "object",
        "properties" : {
          "eventId" : {
            "type" : "string",
            "description" : "The unique identifier (UUID) of the existing Event you want to evaluate the calculation for."
          },
          "eventName" : {
            "type" : "string",
            "description" : "The name of the Event type to evaluate the calculation for."
          },
          "calculation" : {
            "type" : "string",
            "description" : "The calculation expression to be evaluated. This should be structured in the same way as the calculation you'll use for a Notification based on an Event of the same type.\n\nThe calculation for a Notification is a logical expression that evaluates to a Boolean. Calculations are used to define the precise conditions for a Notification that is based on an Event of a specifc Type to be triggered. If an Event of that type occurs and the calculation used in a Notification based on that Event type evaluates as `True`, a Notification for the Event is triggered and sent to the configured Notification destination. \nCalculations can reference numeric, string, and boolean Event fields.  \n\nSee [Creating Calculations](https://www.m3ter.com/docs/guides/utilizing-events-and-notifications/key-concepts-and-relationships#creating-calculations) in the m3ter documentation for more information. "
          }
        },
        "description" : "Request for evaluating a calculation against an existing Event or Event name."
      },
      "BillResponse" : {
        "type" : "object",
        "properties" : {
          "lineItems" : {
            "type" : "array",
            "description" : "An array of the Bill line items.",
            "items" : {
              "$ref" : "#/components/schemas/BillLineItem"
            }
          },
          "purchaseOrderNumber" : {
            "type" : "string",
            "description" : "Purchase Order number linked to the Account the Bill is for."
          },
          "externalInvoiceReference" : {
            "type" : "string",
            "description" : "The reference ID to use for external invoice. "
          },
          "externalInvoiceDate" : {
            "type" : "string",
            "description" : "For accounting purposes, the date set at Organization level to use for external invoicing with respect to billing periods - two options:\n* `FIRST_DAY_OF_NEXT_PERIOD` *(Default)*.\n* `LAST_DAY_OF_ARREARS`\n\nFor example, if the retrieved Bill was on a monthly billing frequency and the billing period for the Bill is September 2023 and the *External invoice date* is set at `FIRST_DAY_OF_NEXT_PERIOD`, then the `externalInvoiceDate` will be `\"2023-10-01\"`.\n\n**NOTE:** To change the `externalInvoiceDate` setting for your Organization, you can use the [Update OrganizationConfig](https://docs.m3ter.com/api/organizationconfig/update-organizationconfig) call.",
            "format" : "date"
          },
          "jsonStatementGenerated" : {
            "type" : "boolean",
            "description" : "Flag to indicate that the statement in JSON format has been generated for the Bill.\n\n* **TRUE** - JSON statement has been generated.\n* **FALSE** - no JSON statement generated."
          },
          "csvStatementGenerated" : {
            "type" : "boolean",
            "description" : "Flag to indicate that the statement in CSV format has been generated for the Bill.\n\n* **TRUE** - CSV statement has been generated.\n* **FALSE** - no CSV statement generated."
          },
          "statementStale" : {
            "type" : "boolean",
            "description" : "True if the existing bill statement (JSON or CSV) is marked as stale/outdated."
          },
          "billTotal" : {
            "type" : "number",
            "description" : "The sum total for the Bill. "
          },
          "sequentialInvoiceNumber" : {
            "type" : "string",
            "description" : "The sequential invoice number of the Bill.\n\n**NOTE:** If you have not defined a `billPrefix` for your Organization, a `sequentialInvoiceNumber` is not returned in the response. See [Update OrganizationConfig](https://docs.m3ter.com/api/organizationconfig/update-organizationconfig)\n"
          },
          "dtCreated" : {
            "type" : "string",
            "description" : "The date and time *(in ISO 8601 format)* when the Bill was first created.",
            "format" : "date-time"
          },
          "dtLastModified" : {
            "type" : "string",
            "description" : "The date and time *(in ISO 8601 format)* when the Bill was last modified.",
            "format" : "date-time"
          },
          "createdBy" : {
            "type" : "string",
            "description" : "The unique identifier (UUID) for the user who created the Bill."
          },
          "lastModifiedBy" : {
            "type" : "string",
            "description" : "The unique identifier (UUID) for the user who last modified this Bill."
          },
          "dtApproved" : {
            "type" : "string",
            "description" : "The DateTime when the bill was approved.",
            "format" : "date-time"
          },
          "approvedBy" : {
            "type" : "string",
            "description" : "The id of the user who approved this bill."
          },
          "dtLocked" : {
            "type" : "string",
            "description" : "The DateTime when the bill was locked.",
            "format" : "date-time"
          },
          "lockedBy" : {
            "type" : "string",
            "description" : "The id of the user who locked this bill."
          }
        },
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractBillResponse"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        } ]
      },
      "UsageFilterMode" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "INCLUDE", "EXCLUDE" ]
      },
      "UrlUploadResponse" : {
        "type" : "object",
        "properties" : {
          "jobId" : {
            "type" : "string",
            "description" : "UUID of the upload job"
          },
          "url" : {
            "type" : "string",
            "description" : "The URL"
          },
          "headers" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            },
            "description" : "The headers"
          }
        },
        "description" : "Response containing the upload job URL details"
      },
      "SupportRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "dtEndSupportUsersAccess" ],
          "type" : "object",
          "properties" : {
            "dtEndSupportUsersAccess" : {
              "type" : "string",
              "description" : "The Date/Time Support access ends *(in ISO-8601 format)*.",
              "format" : "date-time"
            },
            "supportUsersPermissionPolicy" : {
              "type" : "array",
              "description" : "The Permission Policies assigned to any support users when they access your Organization.",
              "items" : {
                "$ref" : "#/components/schemas/PermissionStatementWrapper"
              }
            }
          }
        } ]
      },
      "BasePricingRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "startDate" ],
          "type" : "object",
          "properties" : {
            "code" : {
              "maxLength" : 80,
              "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
              "type" : "string",
              "description" : "Unique short code for the Pricing."
            },
            "planId" : {
              "type" : "string",
              "description" : "UUID of the Plan the Pricing is created for."
            },
            "planTemplateId" : {
              "type" : "string",
              "description" : "UUID of the Plan Template the Pricing is created for."
            },
            "cumulative" : {
              "type" : "boolean",
              "description" : "Controls whether or not charge rates under a set of pricing bands configured for a Pricing are applied according to each separate band or at the highest band reached.\n\n*(Optional)*. The default value is **FALSE**.\n\n* When TRUE, at billing charge rates are applied according to each separate band.\n\n* When FALSE, at billing charge rates are applied according to highest band reached.\n\n**NOTE:** Use the `cumulative` parameter to create the type of Pricing you require. For example, for Tiered Pricing set to **TRUE**; for Volume Pricing, set to **FALSE**."
            },
            "startDate" : {
              "type" : "string",
              "description" : "The start date *(in ISO-8601 format)* for when the Pricing starts to be active for the Plan of Plan Template.*(Required)*",
              "format" : "date-time"
            },
            "endDate" : {
              "type" : "string",
              "description" : "The end date *(in ISO-8601 format)* for when the Pricing ceases to be active for the Plan or Plan Template.\n\n*(Optional)* If not specified, the Pricing remains active indefinitely.",
              "format" : "date-time"
            },
            "description" : {
              "maxLength" : 200,
              "type" : "string",
              "description" : "Displayed on Bill line items."
            },
            "accountingProductId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "Optional Product ID this Pricing should be attributed to for accounting purposes"
            }
          }
        } ]
      },
      "PaginatedProductResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/ProductResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "AbstractAggregationResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "name" : {
              "type" : "string",
              "description" : "Descriptive name for the Aggregation."
            },
            "rounding" : {
              "description" : "Specifies how you want to deal with non-integer, fractional number Aggregation values.\n\n**NOTES:**\n* **NONE** is default.\n* **NEAREST** rounds to the nearest half: 5.1 is rounded to 5, and 3.5 is rounded to 4.\n* Also used in combination with `quantityPerUnit`. Rounds the number of units after `quantityPerUnit` is applied. If you set `quantityPerUnit` to a value other than one, you would typically set Rounding to **UP**. For example, suppose you charge by kilobytes per second (KiBy/s), set `quantityPerUnit` = 500, and set charge rate at $0.25 per unit used. If your customer used 48,900 KiBy/s in a billing period, the charge would be 48,900 / 500 = 97.8 rounded up to 98 * 0.25 = $2.45.\n",
              "$ref" : "#/components/schemas/Rounding"
            },
            "quantityPerUnit" : {
              "type" : "number",
              "description" : "Defines how much of a quantity equates to 1 unit. Used when setting the price per unit for billing purposes - if charging for kilobytes per second (KiBy/s) at rate of $0.25 per 500 KiBy/s, then set quantityPerUnit to 500 and price Plan at $0.25 per unit.\n\nIf `quantityPerUnit` is set to a value other than one, rounding is typically set to UP."
            },
            "unit" : {
              "type" : "string",
              "description" : "User defined or following the *Unified Code for Units of Measure* (UCUM). \n\nUsed as the label for billing, indicating to your customers what they are being charged for."
            },
            "code" : {
              "type" : "string",
              "description" : "Code of the Aggregation. A unique short code to identify the Aggregation."
            },
            "segments" : {
              "type" : "array",
              "description" : "*(Optional)*. Used when creating a segmented Aggregation, which segments the usage data collected by a single Meter. Works together with `segmentedFields`.\n\nContains the values that are to be used as the segments, read from the fields in the meter pointed at by `segmentedFields`.  ",
              "items" : {
                "type" : "object",
                "additionalProperties" : {
                  "type" : "string"
                }
              }
            },
            "accountingProductId" : {
              "type" : "string",
              "description" : "Optional Product ID this Aggregation should be attributed to for accounting purposes."
            }
          }
        } ]
      },
      "DataExportConfigurationRequestBase" : {
        "required" : [ "code", "name", "sourceType" ],
        "type" : "object",
        "properties" : {
          "name" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "The name of the Data Export Schedule."
          },
          "code" : {
            "maxLength" : 80,
            "minLength" : 1,
            "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
            "type" : "string",
            "description" : "Unique short code of the Data Export Schedule."
          },
          "sourceType" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/SourceType"
            }, {
              "type" : "object",
              "description" : "The type of data to export. Possible values are: OPERATIONAL, USAGE."
            } ]
          },
          "destinationIds" : {
            "type" : "array",
            "description" : "The Export Destination ids.\n\n**Note:** When creating or updating an Export Schedule, you can:\n* Define at least one Export Destination - see the [ExportDestination](https://www.m3ter.com/docs/api#tag/ExportDestination) section of this API Reference.\n* Alternatively, omit a Destination. Even if you omit a Destinations when the Export job runs and has succeeded, you can download the data export file locally. For details, see the [Get Data Export File Download URL](https://www.m3ter.com/docs/api#tag/ExportDestination/operation/GenerateDataExportFileDownloadUrl) endpoint in this API Reference.",
            "items" : {
              "type" : "string"
            }
          },
          "scheduleType" : {
            "pattern" : "HOUR|DAY|MINUTE",
            "type" : "string",
            "description" : "The type of interval used for when Data Exports are run for the Schedule. Possible values are: HOURLY or DAILY or MINUTE.\n\nUsed in conjunction with the `period` parameter to define the frequency of Data Exports in hours, days, or minutes."
          },
          "period" : {
            "minimum" : 1,
            "type" : "integer",
            "description" : "Defines the Schedule frequency for the Data Export to run in Hours, Days, or Minutes. Used in conjunction with the `scheduleType` parameter:\n* Lowest frequency is every 3 days.\n* Highest frequency is every 15 minutes.",
            "format" : "int32"
          },
          "offset" : {
            "minimum" : 1,
            "type" : "integer",
            "description" : "Offset indicating starting point of the export",
            "format" : "int32"
          },
          "cronExpression" : {
            "type" : "string",
            "description" : ""
          },
          "exportFileFormat" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ExportFileFormat"
            }, {
              "type" : "object",
              "description" : "The export file format."
            } ]
          }
        },
        "description" : "Base mode request containing data export configuration",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "BillData" : {
        "type" : "object",
        "properties" : {
          "updatedDate" : {
            "type" : "string",
            "description" : "",
            "format" : "date-time"
          },
          "dimensions" : {
            "description" : "",
            "$ref" : "#/components/schemas/LineItemDimensions"
          },
          "measures" : {
            "description" : "",
            "$ref" : "#/components/schemas/LineItemMeasures"
          },
          "billDetails" : {
            "description" : "",
            "$ref" : "#/components/schemas/BillDetails"
          }
        },
        "description" : ""
      },
      "ExternalEntityResponse" : {
        "type" : "object",
        "properties" : {
          "externalId" : {
            "type" : "string",
            "description" : ""
          },
          "externalName" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : "Response containing an entity on an external system"
      },
      "PaginatedCreditReasonResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/CreditReasonResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "BalanceTransactionsSummary" : {
        "type" : "object",
        "properties" : {
          "totalCreditAmount" : {
            "type" : "number",
            "description" : "",
            "example" : 250
          },
          "totalDebitAmount" : {
            "type" : "number",
            "description" : "",
            "example" : 125.5
          },
          "initialCreditAmount" : {
            "type" : "number",
            "description" : "",
            "example" : 300
          },
          "expiredBalanceAmount" : {
            "type" : "number",
            "description" : "Amount of the balance that expired without being used",
            "example" : 50
          },
          "rolloverConsumed" : {
            "type" : "number",
            "description" : "Amount consumed from rollover credit",
            "example" : 75
          },
          "balanceConsumed" : {
            "type" : "number",
            "description" : "Amount consumed from the original balance",
            "example" : 100
          }
        },
        "description" : ""
      },
      "StatementStatus" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "LATEST", "STALE", "INVALIDATED" ]
      },
      "PlanRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequestWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "code", "name", "planTemplateId" ],
          "type" : "object",
          "properties" : {
            "planTemplateId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "UUID of the PlanTemplate the Plan belongs to. "
            },
            "name" : {
              "maxLength" : 200,
              "minLength" : 1,
              "type" : "string",
              "description" : "Descriptive name for the Plan."
            },
            "code" : {
              "maxLength" : 80,
              "minLength" : 1,
              "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
              "type" : "string",
              "description" : "Unique short code reference for the Plan."
            },
            "standingCharge" : {
              "minimum" : 0,
              "type" : "number",
              "description" : "The standing charge applied to bills for end customers. This is prorated.\n\n*(Optional)*. Overrides PlanTemplate value.",
              "format" : "double"
            },
            "standingChargeDescription" : {
              "maxLength" : 200,
              "type" : "string",
              "description" : "Standing charge description *(displayed on the bill line item)*."
            },
            "ordinal" : {
              "minimum" : 0,
              "type" : "integer",
              "description" : "Assigns a rank or position to the Plan in your order of pricing plans - lower numbers represent more basic pricing plans; higher numbers represent more premium pricing plans.\n\n*(Optional)*. Overrides PlanTemplate value.\n\n**NOTE: DEPRECATED** - do not use.",
              "format" : "int64"
            },
            "bespoke" : {
              "type" : "boolean",
              "description" : "TRUE/FALSE flag indicating whether the plan is a custom/bespoke Plan for a particular Account:\n* When creating a Plan, use the `accountId` request parameter to specify the Account for which the Plan will be custom/bespoke.\n* A custom/bespoke Plan can only be attached to the specified Account."
            },
            "minimumSpend" : {
              "minimum" : 0,
              "type" : "number",
              "description" : "The product minimum spend amount per billing cycle for end customer Accounts on a priced Plan.\n\n*(Optional)*. Overrides PlanTemplate value.",
              "format" : "double"
            },
            "minimumSpendDescription" : {
              "maxLength" : 200,
              "type" : "string",
              "description" : "Minimum spend description *(displayed on the bill line item)*."
            },
            "standingChargeBillInAdvance" : {
              "type" : "boolean",
              "description" : "When **TRUE**, standing charge is billed at the start of each billing period.\n\nWhen **FALSE**, standing charge is billed at the end of each billing period.\n\n*(Optional)*. Overrides the setting at PlanTemplate level for standing charge billing in arrears/in advance."
            },
            "minimumSpendBillInAdvance" : {
              "type" : "boolean",
              "description" : "When **TRUE**, minimum spend is billed at the start of each billing period.\n\nWhen **FALSE**, minimum spend is billed at the end of each billing period.\n\n*(Optional)*. Overrides the setting at PlanTemplate level for minimum spend billing in arrears/in advance."
            },
            "minimumSpendAccountingProductId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "Optional Product ID this Plan's minimum spend should be attributed to for accounting purposes."
            },
            "standingChargeAccountingProductId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "Optional Product ID this Plan's standing charge should be attributed to for accounting purposes."
            },
            "accountId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "*(Optional)*. Used to specify an Account for which the Plan will be a custom/bespoke Plan:\n* Use when first creating a Plan.\n* A custom/bespoke Plan can only be attached to the specified Account.\n* Once created, a custom/bespoke Plan cannot be updated to be made a custom/bespoke Plan for a different Account."
            }
          }
        } ]
      },
      "DebitLineItemResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractBillLineItemResponse"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "amount" : {
              "type" : "number",
              "description" : ""
            },
            "debitReasonId" : {
              "type" : "string",
              "description" : "The UUID of the debit reason for this debit line item."
            }
          }
        } ]
      },
      "DataExplorerDimensionGroup" : {
        "required" : [ "fieldCode", "meterId" ],
        "type" : "object",
        "description" : "Group by dimension",
        "allOf" : [ {
          "$ref" : "#/components/schemas/DataExplorerGroup"
        }, {
          "type" : "object",
          "properties" : {
            "groupType" : {
              "description" : "",
              "$ref" : "#/components/schemas/DataExplorerGroupType"
            },
            "meterId" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "Meter ID to group by",
              "x-size-message" : "dimension group meterId cannot be blank"
            },
            "fieldCode" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "Field code to group by",
              "x-size-message" : "dimension group fieldCode cannot be blank"
            },
            "DataExplorerDimensionGroup" : {
              "description" : "Group by dimension",
              "allOf" : [ {
                "$ref" : "#/components/schemas/DataExplorerDimensionGroup_1"
              }, {
                "discriminator" : {
                  "propertyName" : "groupType",
                  "mapping" : {
                    "ACCOUNT" : "#/components/schemas/DataExplorerAccountGroup",
                    "DIMENSION" : "#/components/schemas/DataExplorerDimensionGroup",
                    "TIME" : "#/components/schemas/DataExplorerTimeGroup"
                  }
                },
                "allOf" : [ {
                  "$ref" : "#/components/schemas/DataExplorerGroup"
                } ]
              } ]
            }
          }
        } ]
      },
      "IntegrationM3terSignedCredentialsRequest" : {
        "type" : "object",
        "description" : "This schema defines the credentials required for m3ter request signing. ",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "$ref" : "#/components/schemas/IntegrationCredentialsRequestBase"
        }, {
          "required" : [ "apiKey", "secret", "type" ],
          "type" : "object",
          "properties" : {
            "type" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "Specifies the authorization type. For this schema, it is exclusively set to M3TER_SIGNED_REQUEST.",
              "enum" : [ "M3TER_SIGNED_REQUEST" ]
            },
            "empty" : {
              "type" : "boolean",
              "description" : "A flag to indicate whether the credentials are empty. \n\n* TRUE - empty credentials.\n* FALSE - credential details required."
            },
            "apiKey" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The API key provided by m3ter. This key is part of the credential set required for signing requests and authenticating with m3ter services.",
              "example" : "api key"
            },
            "secret" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The secret associated with the API key. This secret is used in conjunction with the API key to generate a signature for secure authentication.",
              "example" : "api secret"
            }
          },
          "description" : "Request representing a credential set for m3ter request signing"
        } ]
      },
      "OrganizationResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "orgId" : {
              "type" : "string",
              "description" : ""
            },
            "customerId" : {
              "type" : "string",
              "description" : ""
            },
            "organizationName" : {
              "type" : "string",
              "description" : ""
            },
            "shortName" : {
              "type" : "string",
              "description" : ""
            },
            "addressLine1" : {
              "type" : "string",
              "description" : ""
            },
            "addressLine2" : {
              "type" : "string",
              "description" : ""
            },
            "addressLine3" : {
              "type" : "string",
              "description" : ""
            },
            "addressLine4" : {
              "type" : "string",
              "description" : ""
            },
            "locality" : {
              "type" : "string",
              "description" : ""
            },
            "region" : {
              "type" : "string",
              "description" : ""
            },
            "postCode" : {
              "type" : "string",
              "description" : ""
            },
            "country" : {
              "type" : "string",
              "description" : ""
            },
            "taxId" : {
              "type" : "string",
              "description" : ""
            },
            "purchaseOrderNumber" : {
              "type" : "string",
              "description" : ""
            },
            "invoiceGeneralReference" : {
              "type" : "string",
              "description" : ""
            },
            "billingContactUserId1" : {
              "type" : "string",
              "description" : ""
            },
            "billingContactUserId2" : {
              "type" : "string",
              "description" : ""
            },
            "billingContactUserId3" : {
              "type" : "string",
              "description" : ""
            },
            "type" : {
              "description" : "",
              "$ref" : "#/components/schemas/OrganizationType"
            },
            "status" : {
              "description" : "",
              "$ref" : "#/components/schemas/OrganizationStatus"
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The DateTime when the organization was created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The DateTime when the organization was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The id of the user who created this organization."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The id of the user who last modified this organization."
            }
          }
        } ]
      },
      "LookupTableDataArchivedRequest" : {
        "required" : [ "contentType" ],
        "type" : "object",
        "properties" : {
          "contentType" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ContentType"
            }, {
              "type" : "object",
              "enum" : [ "application/jsonl", "text/csv" ]
            } ],
            "x-not-null-message" : "The content type cannot be blank"
          }
        },
        "description" : "Request containing the file details when requesting an archived data URL"
      },
      "QueryMeterDimensionsRequest" : {
        "required" : [ "dimensionName", "endDate", "meterCode", "startDate" ],
        "type" : "object",
        "properties" : {
          "meterCode" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "Code representing a Meter."
          },
          "dimensionName" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "The name of a Meter dimension, for example \"account\"."
          },
          "startDate" : {
            "type" : "string",
            "description" : "ISO 8601 formatted start date to filter by.",
            "format" : "date-time"
          },
          "endDate" : {
            "type" : "string",
            "description" : "ISO 8601 formatted end date to filter by.",
            "format" : "date-time"
          },
          "attributes" : {
            "type" : "array",
            "description" : "Attributes to filter values by.",
            "items" : {
              "type" : "string"
            }
          },
          "limit" : {
            "type" : "integer",
            "description" : "Limit the records returned.",
            "format" : "int32"
          }
        },
        "description" : "Data Explorer meter dimensions query."
      },
      "UsageSavedQueryTimePeriod" : {
        "type" : "string",
        "description" : "Time period for saved query",
        "enum" : [ "TODAY", "YESTERDAY", "WEEK_TO_DATE", "MONTH_TO_DATE", "YEAR_TO_DATE", "PREVIOUS_WEEK", "PREVIOUS_MONTH", "PREVIOUS_QUARTER", "PREVIOUS_YEAR", "LAST_12_HOURS", "LAST_7_DAYS", "LAST_30_DAYS", "LAST_35_DAYS", "LAST_90_DAYS", "LAST_120_DAYS", "LAST_YEAR" ]
      },
      "PaginatedPlanTemplateResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/PlanTemplateResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "BalanceTransactionScheduleResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "balanceId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the Balance this Balance Transaction Schedule was created for."
            },
            "name" : {
              "type" : "string",
              "description" : "The name of the Balance Transaction Schedule."
            },
            "code" : {
              "type" : "string",
              "description" : "Unique short code of the Balance Transaction Schedule."
            },
            "amount" : {
              "type" : "number",
              "description" : "The amount of each Balance Transaction created by this Schedule."
            },
            "transactionDescription" : {
              "type" : "string",
              "description" : "The description of each Balance Transaction created by this Schedule."
            },
            "paid" : {
              "type" : "number",
              "description" : "The payment amount if the payment currency differs from the Balance currency. "
            },
            "currencyPaid" : {
              "type" : "string",
              "description" : "The currency code of the payment if it differs from the Balance currency. For example: USD, GBP or EUR. "
            },
            "transactionTypeId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the transaction type used for Transactions created by this Schedule."
            },
            "startDate" : {
              "type" : "string",
              "description" : "The start date (*in ISO-8601 format*) of the Balance Transaction Schedule.",
              "format" : "date-time"
            },
            "endDate" : {
              "type" : "string",
              "description" : "The end date (*in ISO-8601 format*) of the Balance Transaction Schedule.",
              "format" : "date-time"
            },
            "frequency" : {
              "description" : "Specifies a daily, weekly, monthly, or yearly interval for when Transactions are generated for the Balance throughout the defined Transaction Schedule time period.",
              "allOf" : [ {
                "$ref" : "#/components/schemas/ScheduleFrequency"
              }, {
                "type" : "object",
                "description" : "Together with frequencyInterval, defines how often BalanceTransactions are generated."
              } ]
            },
            "frequencyInterval" : {
              "type" : "integer",
              "description" : "Used in conjunction with `frequency` to define how often Balance Transactions are generated. For example, if `frequency` is MONTHLY and `frequencyInterval` is 3, Balance Transactions are generated every three months.",
              "format" : "int32"
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The date and time (*in ISO-8601 format*) when the Balance Transaction Schedule was created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The date and time (*in ISO-8601 format*) when the Balance Transaction Schedule was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who created this Balance Transaction Schedule."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who last modified this Balance Transaction Schedule."
            },
            "nextRun" : {
              "type" : "string",
              "description" : "The date and time (*in ISO-8601 format*) when the next Transaction will be generated by the Balance Transaction Schedule.",
              "format" : "date-time"
            },
            "previousRun" : {
              "type" : "string",
              "description" : "The date and time (*in ISO-8601 format*) when the previous Transaction was generated by the Balance Transaction Schedule.",
              "format" : "date-time"
            }
          }
        } ]
      },
      "RunStatus" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "WAITING", "STARTED", "COMPLETE", "ERROR", "AWAITING_RETRY", "AUTH_FAILED", "ACCOUNTING_PERIOD_CLOSED", "INVOICE_ALREADY_PAID", "DISABLED", "TIMEOUT_LIMIT_EXCEEDED", "RATE_LIMIT_RETRY" ]
      },
      "DataExplorerDimensionFilter" : {
        "required" : [ "values" ],
        "type" : "object",
        "properties" : {
          "values" : {
            "minItems" : 1,
            "type" : "array",
            "description" : "Values to filter by",
            "items" : {
              "type" : "string"
            },
            "x-size-message" : "dimension filter values cannot be empty",
            "x-not-null-message" : "dimension filter values cannot be null"
          }
        },
        "description" : "Filter by dimension",
        "allOf" : [ {
          "$ref" : "#/components/schemas/DataExplorerMeterField"
        } ]
      },
      "BillConfigRequest" : {
        "type" : "object",
        "properties" : {
          "version" : {
            "type" : "integer",
            "description" : "The version number:\n* Default value when newly created is one.\n* On Update, version is required and must match the existing version because a check is performed to ensure sequential versioning is preserved. Version is incremented by 1 and listed in the response",
            "format" : "int64"
          },
          "billLockDate" : {
            "type" : "string",
            "description" : "The global lock date when all Bills will be locked *(in ISO 8601 format)*.\n\nFor example: `\"2024-03-01\"`.",
            "format" : "date"
          }
        },
        "description" : ""
      },
      "PaginatedBalanceResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/BalanceResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "LookupTableDataDownloadJobResponse" : {
        "type" : "object",
        "properties" : {
          "jobId" : {
            "type" : "string",
            "description" : "UUID of the download job"
          }
        },
        "description" : "Response containing the download job details"
      },
      "IntegrationRunDao.Order" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "ASC", "DESC" ]
      },
      "OrganizationStatus" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "ACTIVE", "ARCHIVED" ]
      },
      "AbstractBillResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "accountId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the Account the Bill was generated for."
            },
            "accountCode" : {
              "type" : "string",
              "description" : "The short code of the Account the Bill was generated for."
            },
            "startDate" : {
              "type" : "string",
              "description" : "",
              "format" : "date"
            },
            "endDate" : {
              "type" : "string",
              "description" : "",
              "format" : "date"
            },
            "startDateTimeUTC" : {
              "type" : "string",
              "description" : "Specifies the UTC time zone start date/time of the Bill's period in ISO 8601 format. Start dates are inclusive.\n\nFor example: `\"2022-02-01T00:00:00.000Z\"`.",
              "format" : "date-time"
            },
            "endDateTimeUTC" : {
              "type" : "string",
              "description" : "Specifies the UTC time zone end date/time of the Bill's period in ISO 8601 format. End dates are exclusive.\n\nFor example: `\"2022-03-01T00:00:00.000Z\"`.",
              "format" : "date-time"
            },
            "billDate" : {
              "type" : "string",
              "description" : "Based on the Billing cycle. Typically the first day of each Billing period. Bill date is determined by Organization Epoch setting for first Bill date and subsequent Bill dates and combined with the defined billing frequency - daily, weekly, monthly, or yearly.\n\nFor example: `\"2022-05-01\"`.\n\nNote that the Organization Epoch settings for first Bill date can be overridden at Account and Plan level.",
              "format" : "date"
            },
            "dueDate" : {
              "type" : "string",
              "description" : "Date the Bill is due. Determined by `daysBeforeBillDue` Organization setting and `billDate`. For example, if `billDate` for monthly billing cycle is 1st of each month and `daysBeforeBillDue` = 10, then `dueDate` = 11th of each month.\n\nFor example: `\"2022-05-11\"`.",
              "format" : "date"
            },
            "billingFrequency" : {
              "description" : "The period covered by the Bill on a recurring basis - DAILY, WEEKLY, MONTHLY, or ANNUALLY.",
              "$ref" : "#/components/schemas/BillingFrequency"
            },
            "billFrequencyInterval" : {
              "type" : "integer",
              "description" : "How often the Bill is created. If `billingFrequency` is MONTHLY and `billFrequencyInterval` is 3, then the Bill is created every three months.",
              "format" : "int32"
            },
            "timezone" : {
              "type" : "string",
              "description" : "The time zone used for the generated Bill.",
              "example" : "UTC",
              "default" : "UTC"
            },
            "currency" : {
              "type" : "string",
              "description" : "Bill Currency code. For example: USD, GBP or EUR."
            },
            "locked" : {
              "type" : "boolean",
              "description" : "Boolean flag indicating whether the Bill is in a locked state. A locked a Bill can no longer be changed and is excluded from any billing runs:\n\n* **TRUE** - Bill is locked.\n* **FALSE** - Bill is unlocked."
            },
            "createdDate" : {
              "type" : "string",
              "description" : "Date/time the Bill was first calculated *(in ISO 8601 format)*.",
              "format" : "date-time"
            },
            "status" : {
              "description" : "Indicates whether the Bill has been approved.\n\n* **PENDING** - Bill has not yet been approved.\n* **APPROVED** - Bill has been approved.",
              "$ref" : "#/components/schemas/BillStatus"
            },
            "billJobId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the BillJob responsible for generating the Bill."
            },
            "currencyConversions" : {
              "type" : "array",
              "description" : "Currency conversion rates. The currency selected for your Organization determines the *billing currency*. This billing currency can differ from the *pricing currency* used when pricing Product Plans attached to end-customer Accounts:\n* For example, if an Account is priced in GBP and Organization billing currency is set to USD, Bill line items are calculated in GBP and then converted to USD using the defined currency conversion rate.\n\nIf you intend to use different billing and pricing currencies, you must define currency conversion rates\n\n",
              "items" : {
                "$ref" : "#/components/schemas/CurrencyConversion"
              }
            },
            "lastCalculatedDate" : {
              "type" : "string",
              "description" : "Date the Bill was last calculated *(in ISO 8601 format)*.",
              "format" : "date-time"
            }
          }
        } ]
      },
      "CommitmentLineItemType" : {
        "type" : "string",
        "description" : "Available line item types for Commitments",
        "enum" : [ "STANDING_CHARGE", "USAGE", "MINIMUM_SPEND", "COUNTER_RUNNING_TOTAL_CHARGE", "COUNTER_ADJUSTMENT_DEBIT" ]
      },
      "PaginatedResourceGroupResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/ResourceGroupResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "BillLineItemResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractBillLineItemResponse"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "productName" : {
              "type" : "string",
              "description" : "The name of the Product associated with this line item. "
            },
            "productCode" : {
              "type" : "string",
              "description" : "The code of the Product associated with this line item."
            },
            "accountingProductId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the associated Accounting Product."
            },
            "accountingProductName" : {
              "type" : "string",
              "description" : "The name of the Accounting Product associated with this line item."
            },
            "accountingProductCode" : {
              "type" : "string",
              "description" : "The code of the Accounting Product associated with this line item."
            },
            "aggregationId" : {
              "type" : "string",
              "description" : "A unique identifier (UUID) for the Aggregation that contributes to this Bill line item. "
            },
            "compoundAggregationId" : {
              "type" : "string",
              "description" : "A unique identifier (UUID) for the Compound Aggregation, if applicable."
            },
            "counterId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the Counter associated with this line item."
            },
            "chargeId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the Charge associated with this line item."
            },
            "segment" : {
              "type" : "object",
              "additionalProperties" : {
                "type" : "string"
              },
              "description" : "Specifies the segment name or identifier when segmented Aggregation is used. This is relevant for more complex billing structures."
            },
            "group" : {
              "type" : "object",
              "additionalProperties" : {
                "type" : "string"
              },
              "description" : ""
            },
            "meterId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the Meter responsible for tracking usage. "
            },
            "planId" : {
              "type" : "string",
              "description" : "A unique identifier (UUID) for the billing Plan associated with this line item. "
            },
            "planGroupId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the Plan Group associated with this line item."
            },
            "commitmentId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the Commitment associated with this line item. "
            },
            "balanceId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the Balance associated with this line item."
            },
            "billId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the Bill that includes this line item. "
            },
            "quantity" : {
              "type" : "number",
              "description" : "The amount of the product or service used in this line item."
            },
            "units" : {
              "type" : "number",
              "description" : "The number of units rated in the line item, each of which is of the type specified in the `unit` field. For example: 400 api_calls. \n\nIn this example, the unit type of **api_calls** is read from the `unit` field."
            },
            "unit" : {
              "type" : "string",
              "description" : "Specifies the unit type. For example: **MB**, **GB**, **api_calls**, and so on.  "
            },
            "subtotal" : {
              "type" : "number",
              "description" : "The subtotal amount when not currency converted *(in the cases where currency conversion is required)*."
            },
            "currency" : {
              "type" : "string",
              "description" : "The currency in which the line item is billed, represented as a currency code. For example, USD, GBP, or EUR. "
            },
            "conversionRate" : {
              "type" : "number",
              "description" : "The currency conversion rate *(if used)* for the line item."
            },
            "convertedSubtotal" : {
              "type" : "number",
              "description" : "The subtotal amount for this line item after currency conversion, if applicable."
            },
            "creditTypeId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the type of credit applied to this line item."
            },
            "pricingId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the Pricing used for this line item, "
            },
            "bandUsage" : {
              "type" : "array",
              "description" : "Array containing the pricing band information, which shows the details for each pricing band or tier.",
              "items" : {
                "$ref" : "#/components/schemas/BillLineItemPricingBandUsage"
              }
            },
            "reasonId" : {
              "type" : "string",
              "description" : "A unique identifier (UUID) for the reason or justification for this line item, if applicable. "
            },
            "contractId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the Contract associated with this line item. "
            },
            "jsonUsageGenerated" : {
              "type" : "boolean",
              "description" : "Boolean flag indicating whether the Bill line item has associated statement usage in JSON format. When a Bill statement is generated, usage line items have their usage stored in JSON format.",
              "deprecated" : true
            },
            "averageUnitPrice" : {
              "type" : "number",
              "description" : "Represents the average unit price calculated across all pricing bands or tiers for this line item."
            },
            "sequenceNumber" : {
              "type" : "integer",
              "description" : "The line item sequence number. ",
              "format" : "int32"
            },
            "additional" : {
              "type" : "object",
              "additionalProperties" : true,
              "description" : ""
            }
          }
        } ]
      },
      "DataExportDestinationType" : {
        "type" : "string",
        "description" : "The type of destination",
        "enum" : [ "S3", "GCS" ]
      },
      "EndDateBillingEntitiesResponse" : {
        "type" : "object",
        "properties" : {
          "statusMessage" : {
            "type" : "string",
            "description" : "A message indicating the status of the operation."
          },
          "updatedEntities" : {
            "type" : "object",
            "properties" : {
              "CONTRACT" : {
                "$ref" : "#/components/schemas/Set_String_"
              },
              "ACCOUNTPLAN" : {
                "$ref" : "#/components/schemas/Set_String_"
              },
              "PREPAYMENT" : {
                "$ref" : "#/components/schemas/Set_String_"
              },
              "PRICINGS" : {
                "$ref" : "#/components/schemas/Set_String_"
              },
              "COUNTER_PRICINGS" : {
                "$ref" : "#/components/schemas/Set_String_"
              }
            },
            "description" : "A dictionary with keys as identifiers of billing entities and values as lists containing details of the updated entities."
          },
          "failedEntities" : {
            "type" : "object",
            "properties" : {
              "CONTRACT" : {
                "$ref" : "#/components/schemas/Set_String_"
              },
              "ACCOUNTPLAN" : {
                "$ref" : "#/components/schemas/Set_String_"
              },
              "PREPAYMENT" : {
                "$ref" : "#/components/schemas/Set_String_"
              },
              "PRICINGS" : {
                "$ref" : "#/components/schemas/Set_String_"
              },
              "COUNTER_PRICINGS" : {
                "$ref" : "#/components/schemas/Set_String_"
              }
            },
            "description" : "A dictionary with keys as identifiers of billing entities and values as lists containing details of the entities for which the update failed."
          }
        },
        "description" : ""
      },
      "MarketplaceUsageReportResponse" : {
        "required" : [ "accountId", "billId", "externalSystem", "reportedUsage" ],
        "type" : "object",
        "properties" : {
          "accountId" : {
            "type" : "string",
            "description" : ""
          },
          "billId" : {
            "type" : "string",
            "description" : ""
          },
          "externalSystem" : {
            "type" : "string",
            "description" : ""
          },
          "reportedUsage" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "object",
              "additionalProperties" : {
                "type" : "number"
              }
            },
            "description" : ""
          }
        },
        "description" : "Response containing marketplace usage report information"
      },
      "PaginatedOrganizationResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/OrganizationResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "PartitionOrder" : {
        "type" : "string",
        "description" : "Specify how you want the file path to be structured in your bucket destination - by Time first (Default) or Type first.\n\nType is dependent on whether the Export is for Usage data or Operational data:\n* **Usage.** Type is `measurements`.\n* **Operational.** Type is one of the entities for which operational data exports are available, such as `account`, `commitment`, `meter`, and so on.\n\nExample for Usage Data Export using .CSV format:\n* Time first:\n`{bucketName}/{prefix}/orgId={orgId}/date=2025-01-27/hour=10/type=measurements/b9a317a6-860a-40f9-9bf4-e65c44c72c94_measurements.csv.gz`\n* Type first:\n`{bucketName}/{prefix}/orgId={orgId}/type=measurements/date=2025-01-27/hour=10/b9a317a6-860a-40f9-9bf4-e65c44c72c94_measurements.csv.gz`",
        "enum" : [ "TYPE_FIRST", "TIME_FIRST" ]
      },
      "UsageQueryRequest" : {
        "type" : "object",
        "properties" : {
          "meterIds" : {
            "type" : "array",
            "description" : "Specify the Meters you want the query to return usage data for.",
            "items" : {
              "type" : "string"
            }
          },
          "accountIds" : {
            "type" : "array",
            "description" : "Specify the Accounts you want the query to return usage data for.",
            "items" : {
              "type" : "string"
            }
          },
          "dimensionFilters" : {
            "type" : "array",
            "description" : "Define Dimension filters you want to apply for the query.\n\nSpecify values for Dimension data fields on included Meters. Only data that match the specified Dimension field values will be returned for the query.",
            "items" : {
              "$ref" : "#/components/schemas/DataExplorerDimensionFilter"
            }
          },
          "aggregations" : {
            "type" : "array",
            "description" : "Define the Aggregation functions you want to apply to data fields on included Meters:\n* **SUM**. Adds the values.\n* **MIN**. Uses the minimum value.\n* **MAX**. Uses the maximum value.\n* **COUNT**. Counts the number of values.\n* **LATEST**. Uses the most recent value.\n* **MEAN**. Uses the arithmetic mean of the values.\n* **UNIQUE**. Uses a count of the number of unique values.\n\n**NOTE!** The Aggregation functions that can be applied depend on the data field type:\n- **Measure** fields. `SUM`, `MIN`, `MAX`, `COUNT`, `LATEST`, or `MEAN` functions can be applied.\n- **Dimension** field. `COUNT` or `UNIQUE` functions can be applied.",
            "items" : {
              "$ref" : "#/components/schemas/DataExplorerAggregation"
            }
          },
          "groups" : {
            "type" : "array",
            "description" : "If you've applied Aggregations for your query, specify any grouping you want to impose on the returned data:\n- **Account**\n- **Time** - group by frequency. Five options: `DAY`, `HOUR`, `WEEK`, `MONTH`, or `QUARTER`.\n- **Dimension** - group by Meter and data field.\n\n**NOTE:** If you attempt to impose grouping for a query that doesn't apply Aggregations, you'll receive an error.",
            "items" : {
              "$ref" : "#/components/schemas/DataExplorerGroup"
            }
          },
          "limit" : {
            "maximum" : 20000,
            "minimum" : 1,
            "type" : "integer",
            "description" : "Define a limit for the number of usage data items you want the query to return, starting with the most recently received data item.",
            "format" : "int32",
            "x-maximum-message" : "Limit must be less than or equal to 20000",
            "x-minimum-message" : "The limit must be at least 1."
          }
        },
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/RequestWithStartAndEndDate"
        } ]
      },
      "QueryCommitmentsRequest" : {
        "required" : [ "endDate", "startDate" ],
        "type" : "object",
        "properties" : {
          "startDate" : {
            "type" : "string",
            "description" : "ISO 8601 formatted start date for the commitment.",
            "format" : "date-time"
          },
          "endDate" : {
            "type" : "string",
            "description" : "ISO 8601 formatted end date for the commitment.",
            "format" : "date-time"
          },
          "dimensions" : {
            "maxItems" : 100,
            "type" : "array",
            "description" : "Dimensions to filter by. The only valid dimension is 'account'.",
            "items" : {
              "$ref" : "#/components/schemas/DimensionQuery"
            }
          },
          "limit" : {
            "maximum" : 2000,
            "minimum" : 1,
            "type" : "integer",
            "description" : "Limit the number of data points returned",
            "format" : "int32"
          }
        },
        "description" : "Data Explorer commitments query."
      },
      "SupportResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "dtEndSupportUsersAccess" : {
              "type" : "string",
              "description" : "The Date/Time Support access ends *(in ISO-8601 format)*.",
              "format" : "date-time"
            },
            "supportUsersPermissionPolicy" : {
              "type" : "array",
              "description" : "The Permission Policies assigned to any support users when they access your Organization.",
              "items" : {
                "$ref" : "#/components/schemas/PermissionStatementWrapper"
              }
            }
          }
        } ]
      },
      "StatementJobFilters" : {
        "type" : "object",
        "properties" : {
          "meterIds" : {
            "maxItems" : 10,
            "type" : "array",
            "description" : "Include usage line items whose meterId matches one of these values.",
            "items" : {
              "type" : "string"
            }
          }
        },
        "description" : ""
      },
      "QueryUsageDataRequest" : {
        "required" : [ "aggregationFrequency", "endDate", "measures", "meterCodes", "startDate" ],
        "type" : "object",
        "properties" : {
          "meterCodes" : {
            "maxItems" : 100,
            "type" : "array",
            "description" : "Codes representing Meters, or an empty list for a wildcard (i.e. all Meters).",
            "items" : {
              "type" : "string"
            }
          },
          "startDate" : {
            "type" : "string",
            "description" : "ISO 8601 formatted start date for the aggregation.",
            "format" : "date-time"
          },
          "endDate" : {
            "type" : "string",
            "description" : "ISO 8601 formatted end date for the aggregation.",
            "format" : "date-time"
          },
          "aggregationFrequency" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/AggregationFrequency"
            }, {
              "type" : "object",
              "description" : "The time period to aggregate data with."
            } ]
          },
          "measures" : {
            "maxItems" : 30,
            "minItems" : 1,
            "type" : "array",
            "description" : "Measures to retrieve usage data entries for",
            "items" : {
              "$ref" : "#/components/schemas/DataFieldMeasureQuery"
            }
          },
          "dimensions" : {
            "maxItems" : 100,
            "type" : "array",
            "description" : "Dimensions to filter by",
            "items" : {
              "$ref" : "#/components/schemas/DimensionQuery"
            }
          },
          "limit" : {
            "maximum" : 5000,
            "minimum" : 1,
            "type" : "integer",
            "description" : "Limit the number of data points returned",
            "format" : "int32"
          }
        },
        "description" : "Data Explorer query request",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "NotificationResponse" : {
        "type" : "object",
        "description" : "Response containing a Notification entity.",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithAuditFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "required" : [ "code", "description", "name" ],
          "type" : "object",
          "properties" : {
            "name" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The name of the Notification.",
              "example" : "Commitment has under 10% remaining"
            },
            "description" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The description for the Notification providing a brief overview of its purpose and functionality.",
              "example" : "Commitment amount fell below 10%"
            },
            "active" : {
              "type" : "boolean",
              "description" : "A Boolean flag indicating whether or not the Notification is active.\n\n* **TRUE** - active Notification. \n* **FALSE** - inactive Notification.",
              "example" : true
            },
            "alwaysFireEvent" : {
              "type" : "boolean",
              "description" : "A Boolean flag indicating whether the Notification is always triggered, regardless of other conditions and omitting reference to any calculation. This means the Notification will be triggered simply by the Event it is based on occurring and with no further conditions having to be met.\n \n*  **TRUE** - the Notification is always triggered and omits any reference to the calculation to check for other conditions being true before triggering the Notification.\n*  **FALSE** - the Notification is only triggered when the Event it is based on occurs and any calculation is checked and all conditions defined by the calculation are met.",
              "example" : false
            },
            "eventName" : {
              "type" : "string",
              "description" : "The name of the Event that the Notification is based on. When this Event occurs and the calculation evaluates to `True`, the Notification is triggered.\n\n**Note:** If the Notification is set to always fire, then the Notification will always be sent when the Event it is based on occurs, and without any other conditions defined by a calculation having to be met.",
              "example" : "configuration.commitment.updated"
            },
            "calculation" : {
              "type" : "string",
              "description" : "A logical expression that that is evaluated to a Boolean. If it evaluates as `True`, a Notification for the Event is created and sent to the configured destination. \nCalculations can reference numeric, string, and boolean Event fields.  \n\nSee [Creating Calculations](https://www.m3ter.com/docs/guides/utilizing-events-and-notifications/key-concepts-and-relationships#creating-calculations) in the m3ter documentation for more information. ",
              "example" : "(new.amountSpent >= ((new.amount*90)/100)) \nAND ((old.amountSpent <= ((old.amount*90)/100)) OR (old.amountSpent == null))"
            },
            "code" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The short code for the Notification.",
              "example" : "commitment_under_10_percent"
            }
          },
          "description" : "Response containing a Notification entity"
        } ]
      },
      "ExportFileFormat" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "CSV", "JSONL" ]
      },
      "PaginatedBillLineItemResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/BillLineItemResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "DebitReasonRequest" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractPickListRequest"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "Address" : {
        "type" : "object",
        "properties" : {
          "addressLine1" : {
            "maxLength" : 50,
            "type" : "string",
            "description" : ""
          },
          "addressLine2" : {
            "maxLength" : 50,
            "type" : "string",
            "description" : ""
          },
          "addressLine3" : {
            "type" : "string",
            "description" : ""
          },
          "addressLine4" : {
            "type" : "string",
            "description" : ""
          },
          "locality" : {
            "maxLength" : 100,
            "type" : "string",
            "description" : ""
          },
          "region" : {
            "maxLength" : 50,
            "type" : "string",
            "description" : ""
          },
          "postCode" : {
            "maxLength" : 20,
            "type" : "string",
            "description" : ""
          },
          "country" : {
            "maxLength" : 100,
            "type" : "string",
            "description" : ""
          }
        },
        "description" : "Contact address."
      },
      "BillApprovalResponse" : {
        "type" : "object",
        "properties" : {
          "message" : {
            "type" : "string",
            "description" : "A message indicating the success or failure of the Bills' approval, along with relevant details."
          }
        },
        "description" : ""
      },
      "ExternalSystem" : {
        "type" : "string",
        "description" : "*(Optional)*. Specifies the format of the Bills data given:\n- **STANDARD** A wider range of data columns is given.\n- **XERO** A more limited range of data columns is given and compatible with loading into your 3rd-party Xero system.",
        "enum" : [ "STANDARD", "XERO" ]
      },
      "CustomFieldRequest" : {
        "type" : "object",
        "description" : "",
        "example" : {
          "version" : 6,
          "organization" : {
            "Org Example 2" : "Sample text 2.",
            "Org Example 1" : "Sample text 1."
          },
          "account" : { },
          "accountPlan" : {
            "New CF Test" : "Test Value"
          },
          "meter" : { },
          "product" : {
            "Product CF Example" : 42
          },
          "planTemplate" : { },
          "plan" : { },
          "aggregation" : { },
          "compoundAggregation" : { }
        },
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "type" : "object",
          "properties" : {
            "organization" : {
              "maxItems" : 25,
              "type" : "object",
              "additionalProperties" : true,
              "description" : "Updates to Organization CustomFields. "
            },
            "account" : {
              "maxItems" : 25,
              "type" : "object",
              "additionalProperties" : true,
              "description" : "Updates to Account entity CustomFields. "
            },
            "accountPlan" : {
              "maxItems" : 25,
              "type" : "object",
              "additionalProperties" : true,
              "description" : "Updates to AccountPlan entity CustomFields. "
            },
            "meter" : {
              "maxItems" : 25,
              "type" : "object",
              "additionalProperties" : true,
              "description" : "Updates to Meter entity CustomFields. "
            },
            "product" : {
              "maxItems" : 25,
              "type" : "object",
              "additionalProperties" : true,
              "description" : "Updates to Product entity CustomFields. "
            },
            "planTemplate" : {
              "maxItems" : 25,
              "type" : "object",
              "additionalProperties" : true,
              "description" : "Updates to planTemplate entity CustomFields. "
            },
            "plan" : {
              "maxItems" : 25,
              "type" : "object",
              "additionalProperties" : true,
              "description" : "Updates to Plan entity CustomFields. "
            },
            "aggregation" : {
              "maxItems" : 25,
              "type" : "object",
              "additionalProperties" : true,
              "description" : "Updates to simple Aggregation entity CustomFields. "
            },
            "compoundAggregation" : {
              "maxItems" : 25,
              "type" : "object",
              "additionalProperties" : true,
              "description" : "Updates to Compound Aggregation entity CustomFields. "
            },
            "contract" : {
              "maxItems" : 25,
              "type" : "object",
              "additionalProperties" : true,
              "description" : "Updates to Contract entity CustomFields."
            }
          }
        } ]
      },
      "NotificationRequest" : {
        "required" : [ "code", "description", "eventName", "name" ],
        "type" : "object",
        "properties" : {
          "name" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "The name of the Notification.",
            "example" : "Commitment has under 10% remaining"
          },
          "description" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "The description for the Notification providing a brief overview of its purpose and functionality.",
            "example" : "Commitment amount fell below 10%"
          },
          "active" : {
            "type" : "boolean",
            "description" : "Boolean flag that sets the Notification as active or inactive. Only active Notifications are sent when triggered by the Event they are based on:\n\n* **TRUE** - set Notification as active. \n* **FALSE** - set Notification as inactive.",
            "example" : true
          },
          "alwaysFireEvent" : {
            "type" : "boolean",
            "description" : "A Boolean flag indicating whether the Notification is always triggered, regardless of other conditions and omitting reference to any calculation. This means the Notification will be triggered simply by the Event it is based on occurring and with no further conditions having to be met.\n \n*  **TRUE** - the Notification is always triggered and omits any reference to the calculation to check for other conditions being true before triggering the Notification.\n*  **FALSE** - the Notification is only triggered when the Event it is based on occurs and any calculation is checked and all conditions defined by the calculation are met.",
            "example" : false
          },
          "calculation" : {
            "type" : "string",
            "description" : "A logical expression that that is evaluated to a Boolean. If it evaluates as `True`, a Notification for the Event is created and sent to the configured destination. \nCalculations can reference numeric, string, and boolean Event fields.  \n\nSee [Creating Calculations](https://www.m3ter.com/docs/guides/utilizing-events-and-notifications/key-concepts-and-relationships#creating-calculations) in the m3ter documentation for more information. ",
            "example" : "(new.amountSpent >= ((new.amount*90)/100)) \nAND ((old.amountSpent <= ((old.amount*90)/100)) OR (old.amountSpent == null))"
          },
          "code" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "The short code for the Notification.",
            "example" : "commitment_under_10_percent"
          },
          "eventName" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "The name of the *Event type* that the Notification is based on. When an Event of this type occurs and any calculation built into the Notification evaluates to `True`, the Notification is triggered.\n\n**Note:** If the Notification is set to always fire, then the Notification will always be sent when the Event of the type it is based on occurs, and without any other conditions defined by a calculation having to be met.",
            "example" : "configuration.commitment.updated"
          }
        },
        "description" : "Request containing a Notification entity.",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "DataExplorerAggregation" : {
        "required" : [ "fieldType", "function" ],
        "type" : "object",
        "properties" : {
          "fieldType" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/DataExplorerFieldType"
            } ],
            "x-not-null-message" : "aggregation fieldType must not be null"
          },
          "function" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/DataExplorerAggregationFunction"
            } ],
            "x-not-null-message" : "aggregation function must not be null"
          }
        },
        "description" : "Aggregation to be applied to a field",
        "allOf" : [ {
          "$ref" : "#/components/schemas/DataExplorerMeterField"
        } ]
      },
      "DataExplorerAccountGroup" : {
        "type" : "object",
        "description" : "Group by account",
        "allOf" : [ {
          "$ref" : "#/components/schemas/DataExplorerGroup"
        }, {
          "type" : "object",
          "properties" : {
            "groupType" : {
              "description" : "",
              "$ref" : "#/components/schemas/DataExplorerGroupType"
            },
            "DataExplorerAccountGroup" : {
              "description" : "Group by account",
              "allOf" : [ {
                "$ref" : "#/components/schemas/DataExplorerAccountGroup_1"
              }, {
                "discriminator" : {
                  "propertyName" : "groupType",
                  "mapping" : {
                    "ACCOUNT" : "#/components/schemas/DataExplorerAccountGroup",
                    "DIMENSION" : "#/components/schemas/DataExplorerDimensionGroup",
                    "TIME" : "#/components/schemas/DataExplorerTimeGroup"
                  }
                },
                "allOf" : [ {
                  "$ref" : "#/components/schemas/DataExplorerGroup"
                } ]
              } ]
            }
          }
        } ]
      },
      "LookupTableRevisionDataResponse" : {
        "required" : [ "items" ],
        "type" : "object",
        "properties" : {
          "items" : {
            "maxItems" : 2000,
            "type" : "array",
            "description" : "The Lookup Table Revision Data.",
            "items" : {
              "type" : "object",
              "additionalProperties" : {
                "type" : "object"
              }
            },
            "x-size-message" : "Cannot have more than 2000 items in the data",
            "x-not-null-message" : "data cannot be null"
          },
          "dtCreated" : {
            "type" : "string",
            "description" : "The DateTime when the Lookup Table Revision Data was created.",
            "format" : "date-time"
          },
          "dtLastModified" : {
            "type" : "string",
            "description" : "The DateTime when the Lookup Table Revision Data was last modified.",
            "format" : "date-time"
          },
          "createdBy" : {
            "type" : "string",
            "description" : "The id of the user who created the Lookup Table Revision Data."
          },
          "lastModifiedBy" : {
            "type" : "string",
            "description" : "The id of the user who last modified the Lookup Table Revision Data."
          },
          "version" : {
            "type" : "integer",
            "description" : "The version of the Lookup Table Revision Data.",
            "format" : "int64"
          }
        },
        "description" : "Response containing data for a Lookup Table Revision"
      },
      "PaginatedExportDestinationBaseResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/ExportDestinationBaseResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "UsageDataExportConfigurationRequestV2" : {
        "required" : [ "sourceType", "timePeriod" ],
        "type" : "object",
        "properties" : {
          "sourceType" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/SourceType"
            }, {
              "type" : "object",
              "description" : "The type of data to export. Possible values are: OPERATIONAL, USAGE."
            } ]
          },
          "meterIds" : {
            "type" : "array",
            "description" : "List of meter IDs to export",
            "items" : {
              "type" : "string"
            }
          },
          "accountIds" : {
            "type" : "array",
            "description" : "List of account IDs to export",
            "items" : {
              "type" : "string"
            }
          },
          "dimensionFilters" : {
            "type" : "array",
            "description" : "List of dimension filters to apply",
            "items" : {
              "$ref" : "#/components/schemas/DataExplorerDimensionFilter"
            }
          },
          "aggregations" : {
            "type" : "array",
            "description" : "List of aggregations to apply",
            "items" : {
              "$ref" : "#/components/schemas/DataExplorerAggregation"
            }
          },
          "groups" : {
            "type" : "array",
            "description" : "List of groups to apply",
            "items" : {
              "$ref" : "#/components/schemas/DataExplorerGroup"
            }
          },
          "timePeriod" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/TimePeriod"
            }, {
              "type" : "object",
              "description" : "Time period for which the usage data should be exported."
            } ]
          }
        },
        "description" : "Request representing an usage schedule configuration.",
        "allOf" : [ {
          "$ref" : "#/components/schemas/DataExportConfigurationRequestBase"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "PaginatedIntegrationConfigResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/IntegrationConfigResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "BillDetails" : {
        "type" : "object",
        "properties" : {
          "day" : {
            "type" : "integer",
            "description" : "",
            "format" : "int32"
          },
          "week" : {
            "type" : "string",
            "description" : ""
          },
          "year" : {
            "type" : "integer",
            "description" : "",
            "format" : "int32"
          },
          "month" : {
            "type" : "string",
            "description" : ""
          },
          "locked" : {
            "type" : "string",
            "description" : ""
          },
          "status" : {
            "type" : "string",
            "description" : ""
          },
          "dueDate" : {
            "type" : "string",
            "description" : ""
          },
          "startDate" : {
            "type" : "string",
            "description" : ""
          },
          "endDate" : {
            "type" : "string",
            "description" : ""
          },
          "servicePeriodStartDate" : {
            "type" : "string",
            "description" : ""
          },
          "servicePeriodEndDate" : {
            "type" : "string",
            "description" : ""
          },
          "billDate" : {
            "type" : "string",
            "description" : ""
          },
          "timezone" : {
            "type" : "string",
            "description" : ""
          },
          "yearMonth" : {
            "type" : "string",
            "description" : ""
          },
          "billCurrency" : {
            "type" : "string",
            "description" : ""
          },
          "billingFrequency" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "PaginatedUsageSavedQueryResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/UsageSavedQueryResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "RemainingCommitment" : {
        "type" : "object",
        "properties" : {
          "dateMonth" : {
            "type" : "string",
            "description" : ""
          },
          "remaining" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "number",
              "format" : "double"
            },
            "description" : ""
          }
        },
        "description" : ""
      },
      "CommitmentResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "accountId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the end customer Account the Commitment is added to. "
            },
            "billingPlanId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the Product Plan used for billing Commitment fees due."
            },
            "productIds" : {
              "type" : "array",
              "description" : "A list of unique identifiers (UUIDs) for Products the Account consumes. Charges due for these Products will be made available for draw-down against the Commitment.\n\n**Note:** If not used, then charges due for all Products the Account consumes will be made available for draw-down against the Commitment.",
              "items" : {
                "type" : "string"
              }
            },
            "startDate" : {
              "type" : "string",
              "description" : "The start date of the Commitment period in ISO-8601 format.",
              "format" : "date"
            },
            "endDate" : {
              "type" : "string",
              "description" : "The end date of the Commitment period in ISO-8601 format.",
              "format" : "date"
            },
            "currency" : {
              "type" : "string",
              "description" : "The currency used for the Commitment. For example, 'USD'."
            },
            "amount" : {
              "type" : "number",
              "description" : "The total amount that the customer has committed to pay.",
              "format" : "double"
            },
            "amountPrePaid" : {
              "type" : "number",
              "description" : "The amount that the customer has already paid upfront at the start of the Commitment service period.",
              "format" : "double"
            },
            "amountFirstBill" : {
              "type" : "number",
              "description" : "The amount to be billed in the first invoice.",
              "format" : "double"
            },
            "amountSpent" : {
              "type" : "number",
              "description" : "The total amount of the Commitment that the customer has spent so far.",
              "format" : "double"
            },
            "overageSurchargePercent" : {
              "type" : "number",
              "description" : "The percentage surcharge applied to the usage charges that exceed the Commitment amount.",
              "format" : "double"
            },
            "separateOverageUsage" : {
              "type" : "boolean",
              "description" : "A boolean value indicating whether the overage usage is billed separately or together. If overage usage is separated and a Commitment amount has been consumed by an Account, any subsequent line items on Bills against the Account for usage will show as separate \"overage usage\" charges, not simply as \"usage\" charges:\n\n* **TRUE** - billed separately.\n* **FALSE** - billed together. "
            },
            "billingInterval" : {
              "type" : "integer",
              "description" : "How often the Commitment fees are applied to bills. For example, if the plan being used to bill for Commitment fees is set to issue bills every three months and the `billingInterval` is set to 2, then the Commitment fees are applied every six months.",
              "format" : "int32"
            },
            "billingOffset" : {
              "type" : "integer",
              "description" : "The offset for when the Commitment fees are first applied to bills on the Account. For example, if bills are issued every three months and the `billingOffset` is 0, then the charge is applied to the first bill (at three months); if set to 1, it's applied to the next bill (at six months), and so on.",
              "format" : "int32"
            },
            "commitmentFeeDescription" : {
              "type" : "string",
              "description" : "A textual description of the Commitment fee."
            },
            "commitmentUsageDescription" : {
              "type" : "string",
              "description" : "A textual description of the Commitment usage."
            },
            "overageDescription" : {
              "type" : "string",
              "description" : "A textual description of the overage charges."
            },
            "commitmentFeeBillInAdvance" : {
              "type" : "boolean",
              "description" : "A boolean value indicating whether the Commitment fee is billed in advance *(start of each billing period)* or arrears *(end of each billing period)*.\n\n* **TRUE** - bill in advance *(start of each billing period)*.\n* **FALSE** - bill in arrears *(end of each billing period)*."
            },
            "billEpoch" : {
              "type" : "string",
              "description" : "The starting date *(in ISO-8601 date format)* from which the billing cycles are calculated.",
              "format" : "date"
            },
            "contractId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for a Contract you've created for the Account and to which the Commitment has been added."
            },
            "accountingProductId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the Product linked to the Commitment for accounting purposes.\n"
            },
            "feesAccountingProductId" : {
              "type" : "string",
              "description" : "Optional Product ID this Commitment's fees should be attributed to for accounting purposes."
            },
            "drawdownsAccountingProductId" : {
              "type" : "string",
              "description" : "Optional Product ID this Commitment's consumptions should be attributed to for accounting purposes."
            },
            "feeDates" : {
              "type" : "array",
              "description" : "Used for billing any outstanding Commitment fees *on a schedule*.\n\nAn array defining a series of bill dates and amounts covering specified service periods:\n- `date` - the billing date *(in ISO-8601 format)*.\n- `amount` - the billed amount.\n- `servicePeriodStartDate` and `servicePeriodEndDate` - defines the service period the bill covers *(in ISO-8601 format)*.",
              "items" : {
                "$ref" : "#/components/schemas/CommitmentFee"
              }
            },
            "childBillingMode" : {
              "description" : "Commitment billing mode that only applies while using Parent/Child accounts. Used to control on which Bill the commitment fees and draw-downs appear:\n* **PARENT_BREAKDOWN** - A separate bill line item per Account and appear as separate line items on the Parent Bill - one per Child. *(Default)*\n* **PARENT_SUMMARY** - A single bill line item for all Accounts and appears as a single separate line item on the Parent Bill.\n* **CHILD** - Child Accounts are billed and appear as line items on each Child Account Bill.",
              "$ref" : "#/components/schemas/ChildBillingMode"
            },
            "lineItemTypes" : {
              "type" : "array",
              "description" : "Specifies the line item charge types that can draw-down at billing against the Commitment amount. Options are:\n- `MINIMUM_SPEND`\n- `STANDING_CHARGE`\n- `USAGE`\n- `\"COUNTER_RUNNING_TOTAL_CHARGE\"`\n- `\"COUNTER_ADJUSTMENT_DEBIT\"`",
              "items" : {
                "$ref" : "#/components/schemas/CommitmentLineItemType"
              }
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the Commitment was created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the Commitment was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who created this Commitment."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who last modified this Commitment."
            }
          }
        } ]
      },
      "AbstractBillLineItemResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "lineItemType" : {
              "description" : "",
              "$ref" : "#/components/schemas/LineItemType"
            },
            "productId" : {
              "type" : "string",
              "description" : ""
            },
            "description" : {
              "type" : "string",
              "description" : ""
            },
            "servicePeriodStartDate" : {
              "type" : "string",
              "description" : "",
              "format" : "date-time"
            },
            "servicePeriodEndDate" : {
              "type" : "string",
              "description" : "",
              "format" : "date-time"
            },
            "referencedBillId" : {
              "type" : "string",
              "description" : ""
            },
            "referencedLineItemId" : {
              "type" : "string",
              "description" : ""
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The DateTime when the line item was created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The DateTime when the line item was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The ID of the user who created this line item."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The ID of the user who last modified this line item."
            }
          }
        } ]
      },
      "QueryMergedMeterDimensionsRequest" : {
        "required" : [ "dimensionName", "endDate", "meterCodes", "startDate" ],
        "type" : "object",
        "properties" : {
          "meterCodes" : {
            "maxItems" : 100,
            "type" : "array",
            "description" : "Codes representing Meters, or an empty list for a wildcard (i.e. all Meters).",
            "items" : {
              "type" : "string"
            }
          },
          "dimensionName" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "The name of a Meter dimension, for example \"account\"."
          },
          "startDate" : {
            "type" : "string",
            "description" : "ISO 8601 formatted start date to filter by.",
            "format" : "date-time"
          },
          "endDate" : {
            "type" : "string",
            "description" : "ISO 8601 formatted end date to filter by.",
            "format" : "date-time"
          },
          "attributes" : {
            "type" : "array",
            "description" : "Attributes to filter values by.",
            "items" : {
              "type" : "string"
            }
          },
          "limit" : {
            "type" : "integer",
            "description" : "Limit the records returned.",
            "format" : "int32"
          }
        },
        "description" : "Data Explorer dimensions query for multiple meters."
      },
      "LookupTableRevisionField" : {
        "required" : [ "type" ],
        "type" : "object",
        "properties" : {
          "name" : {
            "maxLength" : 256,
            "pattern" : "^[\\p{L}_$][\\p{L}_$0-9]*$",
            "type" : "string",
            "description" : "The name of the field",
            "example" : "lookuptablerevisionfieldkey",
            "x-pattern-message" : "Field names can only contain letters, numbers, underscore, and dollar, and must not start with a number",
            "x-size-message" : "The max allowed length of a Lookup Table Revision field name is 256 characters"
          },
          "type" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/LookupTableRevisionFieldType"
            } ],
            "x-not-null-message" : "The Lookup Table Revision field type can not be null"
          }
        },
        "description" : "Field of a Lookup Table Revision"
      },
      "PlanGroupLinkRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "planGroupId", "planId" ],
          "type" : "object",
          "properties" : {
            "planGroupId" : {
              "minLength" : 1,
              "type" : "string",
              "description" : ""
            },
            "planId" : {
              "minLength" : 1,
              "type" : "string",
              "description" : ""
            }
          }
        } ]
      },
      "ContractResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "accountId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the Account associated with this Contract."
            },
            "name" : {
              "type" : "string",
              "description" : "The name of the Contract."
            },
            "code" : {
              "type" : "string",
              "description" : "The short code of the Contract."
            },
            "description" : {
              "type" : "string",
              "description" : "The description of the Contract, which provides context and information."
            },
            "purchaseOrderNumber" : {
              "type" : "string",
              "description" : "The Purchase Order Number associated with the Contract."
            },
            "applyContractPeriodLimits" : {
              "type" : "boolean",
              "description" : "For Contract billing, a boolean setting for restricting the charges billed to the period defined for the Contract:\n* **TRUE** - Contract billing for the Account will be restricted to charge amounts that fall within the defined Contract period.\n* **FALSE** - The period for amounts billed under the Contract will be determined by the Account Plan attached to the Account and linked to the Contract.(*Default*)"
            },
            "usageFilters" : {
              "type" : "array",
              "description" : "Used to control Contract billing and charge at billing only for usage where Product Meter dimensions equal specific defined values:\n* Usage filters are defined to either *include* or *exclude* charges for usage associated with specific Meter dimensions.\n* The Meter dimensions must be present in the data field schema of the Meter used to submit usage data measurements.",
              "items" : {
                "$ref" : "#/components/schemas/UsageFilter"
              }
            },
            "billGroupingKeyId" : {
              "type" : "string",
              "description" : "The ID of the Bill Grouping Key assigned to the Contract."
            },
            "startDate" : {
              "type" : "string",
              "description" : "The start date for the Contract *(in ISO-8601 format)*. This date is inclusive, meaning the Contract is active from this date onward.",
              "format" : "date"
            },
            "endDate" : {
              "type" : "string",
              "description" : "The exclusive end date of the Contract *(in ISO-8601 format)*. This means the Contract is active until midnight on the day ***before*** this date.",
              "format" : "date"
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the Contract was created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the Contract was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who created this Contract."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who last modified this Contract."
            }
          }
        } ]
      },
      "TransactionTypeRequest" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractPickListRequest"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "PlanGroupRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequestWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "currency", "name" ],
          "type" : "object",
          "properties" : {
            "name" : {
              "maxLength" : 200,
              "minLength" : 1,
              "type" : "string",
              "description" : "The name of the PlanGroup."
            },
            "code" : {
              "maxLength" : 80,
              "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
              "type" : "string",
              "description" : "The short code representing the PlanGroup."
            },
            "minimumSpend" : {
              "minimum" : 0,
              "type" : "number",
              "description" : "The minimum spend amount for the PlanGroup. ",
              "format" : "double"
            },
            "minimumSpendDescription" : {
              "maxLength" : 200,
              "type" : "string",
              "description" : "Description of the minimum spend, displayed on the bill line item."
            },
            "standingCharge" : {
              "minimum" : 0,
              "type" : "number",
              "description" : "Standing charge amount for the PlanGroup.",
              "format" : "double"
            },
            "standingChargeDescription" : {
              "maxLength" : 200,
              "type" : "string",
              "description" : "Description of the standing charge, displayed on the bill line item."
            },
            "currency" : {
              "maxLength" : 3,
              "minLength" : 3,
              "type" : "string",
              "description" : "Currency code for the PlanGroup (For example, USD)."
            },
            "standingChargeBillInAdvance" : {
              "type" : "boolean",
              "description" : "A boolean flag that determines when the standing charge is billed. This flag overrides the setting at Organizational level for standing charge billing in arrears/in advance.\n\n* **TRUE** - standing charge is billed at the start of each billing period. \n* **FALSE** - standing charge is billed at the end of each billing period."
            },
            "minimumSpendBillInAdvance" : {
              "type" : "boolean",
              "description" : "A boolean flag that determines when the minimum spend is billed. This flag overrides the setting at Organizational level for minimum spend billing in arrears/in advance.\n\n* **TRUE** - minimum spend is billed at the start of each billing period. \n* **FALSE** - minimum spend is billed at the end of each billing period."
            },
            "accountId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "Optional. This PlanGroup is created as bespoke for the associated Account with this Account ID."
            },
            "minimumSpendAccountingProductId" : {
              "type" : "string",
              "description" : "Optional. Product ID to attribute the PlanGroup's minimum spend for accounting purposes."
            },
            "standingChargeAccountingProductId" : {
              "type" : "string",
              "description" : "Optional. Product ID to attribute the PlanGroup's standing charge for accounting purposes."
            }
          }
        } ]
      },
      "PricingResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/BasePricingResponseWithPricingBands"
        }, {
          "$ref" : "#/components/schemas/BasePricingResponse"
        }, {
          "$ref" : "#/components/schemas/AbstractResponseWithAuditFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "aggregationId" : {
              "type" : "string",
              "description" : "UUID of the Aggregation used to create the Pricing. Use this when creating a Pricing for a segmented aggregation."
            },
            "compoundAggregationId" : {
              "type" : "string",
              "description" : "UUID of the Compound Aggregation used to create the Pricing."
            },
            "type" : {
              "description" : "* **DEBIT**. Default setting. The amount calculated using the Pricing is added to the bill as a debit.\n\n* **PRODUCT_CREDIT**. The amount calculated using the Pricing is added to the bill as a credit *(negative amount)*. To prevent negative billing, the bill will be capped at the total of other line items for the *same* Product.\n\n* **GLOBAL_CREDIT**. The amount calculated using the Pricing is added to the bill as a credit *(negative amount)*. To prevent negative billing, the bill will be capped at the total of other line items for the entire bill, which might include other Products the Account consumes.",
              "$ref" : "#/components/schemas/PricingType"
            },
            "segment" : {
              "type" : "object",
              "additionalProperties" : {
                "type" : "string"
              },
              "description" : "Name of the segment for which you are defining a Pricing.\n\nFor each segment in a segmented aggregation, make a separate call using `aggregationId` parameter to update a Pricing."
            },
            "tiersSpanPlan" : {
              "type" : "boolean",
              "description" : "The default value is **FALSE**.\n\n* If TRUE, usage accumulates over the entire period the priced Plan is active for the account, and is not reset for pricing band rates at the start of each billing period.\n\n* If FALSE, usage does not accumulate, and is reset for pricing bands at the start of each billing period."
            },
            "minimumSpend" : {
              "type" : "number",
              "description" : "The minimum spend amount per billing cycle for end customer Accounts on a Plan to which the Pricing is applied.",
              "format" : "double"
            },
            "minimumSpendDescription" : {
              "type" : "string",
              "description" : "Minimum spend description *(displayed on the bill line item)*."
            },
            "minimumSpendBillInAdvance" : {
              "type" : "boolean",
              "description" : "The default value is **FALSE**.\n\n* When TRUE, minimum spend is billed at the start of each billing period.\n\n* When FALSE, minimum spend is billed at the end of each billing period.\n\n*(Optional)*. Overrides the setting at Organization level for minimum spend billing in arrears/in advance."
            },
            "aggregationType" : {
              "description" : "",
              "$ref" : "#/components/schemas/AggregationType"
            },
            "segmentString" : {
              "type" : "string",
              "description" : ""
            },
            "overagePricingBands" : {
              "type" : "array",
              "description" : "The Prepayment/Balance overage pricing in pricing bands for the case of a **Tiered** pricing structure. ",
              "items" : {
                "$ref" : "#/components/schemas/PricingBand"
              }
            },
            "accountingProductId" : {
              "type" : "string",
              "description" : ""
            }
          }
        } ]
      },
      "DataExplorerGroupType" : {
        "type" : "string",
        "description" : "Type of group",
        "enum" : [ "ACCOUNT", "DIMENSION", "TIME" ]
      },
      "PaginatedOrgUserResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/OrgUserResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "BillJobRecalculateRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "billIds" ],
          "type" : "object",
          "properties" : {
            "billIds" : {
              "maxItems" : 100,
              "minItems" : 1,
              "type" : "array",
              "description" : "The array of unique identifiers (UUIDs) for the Bills which are to be recalculated. ",
              "items" : {
                "type" : "string"
              }
            }
          }
        } ]
      },
      "JobResponse" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "The id of the Export Job."
          },
          "scheduleId" : {
            "type" : "string",
            "description" : "The id of the data Export Schedule."
          },
          "startedAt" : {
            "type" : "string",
            "description" : "When the data Export Job started running",
            "format" : "date-time"
          },
          "dateCreated" : {
            "type" : "string",
            "description" : "When the data Export Job was created.",
            "format" : "date-time"
          },
          "sourceType" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/SourceType"
            }, {
              "type" : "object",
              "description" : "Defines the type of data to export. Possible values: OPERATIONAL or USAGE."
            } ]
          },
          "status" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Status"
            }, {
              "type" : "object",
              "description" : "The status of the export."
            } ]
          }
        },
        "description" : "Base Response containing data export job",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        } ]
      },
      "OrganizationConfigRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "currency", "dayEpoch", "daysBeforeBillDue", "monthEpoch", "timezone", "weekEpoch", "yearEpoch" ],
          "type" : "object",
          "properties" : {
            "timezone" : {
              "type" : "string",
              "description" : "Sets the timezone for the Organization. ",
              "example" : "UTC",
              "default" : "UTC"
            },
            "yearEpoch" : {
              "type" : "string",
              "description" : "Optional setting that defines the billing cycle date for Accounts that are billed yearly. Defines the date of the first Bill and then acts as reference for when subsequent Bills are created for the Account:\n* For example, suppose the Plan you attach to an Account is configured for yearly billing frequency and will apply to the Account from January 1st, 2022 until January 15th, 2028. If you set a `yearEpoch` date of January 1st, 2023, then the first Bill is created for the Account on that date and subsequent Bills are created for the Account on January 1st of each year following through to the end of the billing service period - January 1st, 2023, January 1st, 2024 and so on.\n* The date is in ISO-8601 format.",
              "example" : "2022-01-01",
              "default" : "2022-01-01"
            },
            "monthEpoch" : {
              "type" : "string",
              "description" : "Optional setting that defines the billing cycle date for Accounts that are billed monthly. Defines the date of the first Bill and then acts as reference for when subsequent Bills are created for the Account:\n* For example, suppose the Plan you attach to an Account is configured for monthly billing frequency and will apply to the Account from January 1st, 2022 until June 30th, 2022. If you set a `monthEpoch` date of January 15th, 2022, then the first Bill is created for the Account on that date and subsequent Bills are created for the Account on the 15th of each month following through to the end of the billing service period - February 15th, March 15th, and so on.\n* The date is in ISO-8601 format.",
              "example" : "2022-01-01",
              "default" : "2022-01-01"
            },
            "weekEpoch" : {
              "type" : "string",
              "description" : "Optional setting that defines the billing cycle date for Accounts that are billed weekly. Defines the date of the first Bill and then acts as reference for when subsequent Bills are created for the Account:\n* For example, suppose the Plan you attach to an Account is configured for weekly billing frequency and will apply to the Account from January 1st, 2022 until June 30th, 2022. If you set a `weekEpoch` date of January 15th, 2022, which falls on a Saturday, then the first Bill is created for the Account on that date and subsequent Bills are created for the Account on Saturday of each week following through to the end of the billing service period.\n* The date is in ISO-8601 format.",
              "example" : "2022-01-04",
              "default" : "2022-01-04"
            },
            "dayEpoch" : {
              "type" : "string",
              "description" : "Optional setting that defines the billing cycle date for Accounts that are billed daily. Defines the date of the first Bill:\n* For example, suppose the Plan you attach to an Account is configured for daily billing frequency and will apply to the Account from January 1st, 2022 until June 30th, 2022. If you set a `dayEpoch` date of January 2nd, 2022, then the first Bill is created for the Account on that date and subsequent Bills are created for the Account each day following through to the end of the billing service period.\n* The date is in ISO-8601 format.",
              "example" : "2022-01-01",
              "default" : "2022-01-01"
            },
            "currency" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The currency code for the Organization. For example: USD, GBP, or EUR:\n* This defines the *billing currency* for the Organization. You can override this by selecting a different billing currency at individual Account level.\n* You must first define the currencies you want to use in your Organization. See the [Currency](https://www.m3ter.com/docs/api#tag/Currency) section in this API Reference.\n\n**Note:** If you use a different currency as the *pricing currency* for Plans to set charge rates for Product consumption by an Account, you must define a currency conversion rate from the pricing currency to the billing currency before you run billing for the Account, otherwise billing will fail. See below for the `currencyConversions` request parameter.",
              "example" : "USD",
              "default" : "USD"
            },
            "currencyConversions" : {
              "type" : "array",
              "description" : "Define currency conversion rates from *pricing currency* to *billing currency*:\n* You can use the `currency` request parameter with this call to define the billing currency for your Organization - see above.\n* You can also define a billing currency at the individual Account level and this will override the Organization billing currency.\n* A Plan used to set Product consumption charge rates on an Account might use a different pricing currency. At billing, charges are calculated in the pricing currency and then converted into billing currency amounts to appear on Bills. If you haven't defined a currency conversion rate from pricing to billing currency, billing will fail for the Account.",
              "items" : {
                "$ref" : "#/components/schemas/CurrencyConversion"
              }
            },
            "daysBeforeBillDue" : {
              "minimum" : 0,
              "exclusiveMinimum" : true,
              "type" : "integer",
              "description" : "Enter the number of days after the Bill generation date that you want to show on Bills as the due date.\n\n**Note:** If you define `daysBeforeBillDue` at individual Account level, this will take precedence over any `daysBeforeBillDue` setting defined at Organization level.\n\n",
              "format" : "int32"
            },
            "scheduledBillInterval" : {
              "type" : "number",
              "description" : "Sets the required interval for updating bills. It is an optional parameter that can be set as:\n\n* **For portions of an hour (minutes)**. Two options: **0.25** (15 minutes) and **0.5** (30 minutes).\n* **For full hours.** Enter **1** for every hour, **2** for every two hours, and so on. Eight options: **1**, **2**, **3**, **4**, **6**, **8**, **12**, or **24**.\n* **Default.** The default is **0**, which disables scheduling.",
              "format" : "double"
            },
            "standingChargeBillInAdvance" : {
              "type" : "boolean",
              "description" : "Boolean setting to specify whether the standing charge is billed in advance at the start of each billing period, or billed in arrears at the end of each billing period. \n\n* **TRUE** - bill in advance *(start of each billing period)*.\n* **FALSE** - bill in arrears *(end of each billing period)*."
            },
            "commitmentFeeBillInAdvance" : {
              "type" : "boolean",
              "description" : "Boolean setting to specify whether commitments *(prepayments)* are billed in advance at the start of each billing period, or billed in arrears at the end of each billing period. \n\n* **TRUE** - bill in advance *(start of each billing period)*.\n* **FALSE** - bill in arrears *(end of each billing period)*."
            },
            "minimumSpendBillInAdvance" : {
              "type" : "boolean",
              "description" : "Boolean setting to specify whether minimum spend amounts are billed in advance at the start of each billing period, or billed in arrears at the end of each billing period. \n\n* **TRUE** - bill in advance *(start of each billing period)*.\n* **FALSE** - bill in arrears *(end of each billing period)*."
            },
            "scheduledBillOffset" : {
              "maximum" : 23,
              "minimum" : 0,
              "type" : "integer",
              "description" : "Offset (hours) within the scheduled interval to start the run, interpreted in the organization's timezone. For daily (24h) schedules this is the hour of day (0-23). Only supported when ScheduledBillInterval is 24 (daily) at present.",
              "format" : "int32"
            },
            "autoApproveBillsGracePeriod" : {
              "minimum" : 0,
              "exclusiveMinimum" : true,
              "type" : "integer",
              "description" : "Grace period before bills are auto-approved. Used in combination with `autoApproveBillsGracePeriodUnit` parameter.\n\n**Note:** When used in combination with `autoApproveBillsGracePeriodUnit` enables auto-approval of Bills for Organization, which occurs when the specified time period has elapsed after Bill generation.",
              "format" : "int32",
              "example" : 2
            },
            "autoApproveBillsGracePeriodUnit" : {
              "type" : "string",
              "description" : "Time unit of grace period before bills are auto-approved. Used in combination with `autoApproveBillsGracePeriod` parameter. Allowed options are MINUTES, HOURS, or DAYS.\n\n**Note:** When used in combination with `autoApproveBillsGracePeriod` enables auto-approval of Bills for Organization, which occurs when the specified time period has elapsed after Bill generation.",
              "example" : "DAYS"
            },
            "externalInvoiceDate" : {
              "type" : "string",
              "description" : "Date to use for the invoice date. Allowed values are `FIRST_DAY_OF_NEXT_PERIOD` or `LAST_DAY_OF_ARREARS`.",
              "example" : "LAST_DAY_OF_ARREARS"
            },
            "suppressedEmptyBills" : {
              "type" : "boolean",
              "description" : "Boolean setting that supresses generating bills that have no line items. \n\n* **TRUE** - prevents generating bills with no line items.\n* **FALSE** - bills are still generated even when they have no line items. ",
              "example" : true
            },
            "consolidateBills" : {
              "type" : "boolean",
              "description" : "Boolean setting to consolidate different billing frequencies onto the same bill.\n\n* **TRUE** - consolidate different billing frequencies onto the same bill.\n* **FALSE** - bills are not consolidated.",
              "example" : true
            },
            "defaultStatementDefinitionId" : {
              "type" : "string",
              "description" : "Organization level default `statementDefinitionId` to be used when there is no statement definition linked to the account.\n\nStatement definitions are used to generate bill statements, which are informative backing sheets to invoices. "
            },
            "autoGenerateStatementMode" : {
              "description" : "Specify whether to auto-generate statements once Bills are *approved* or *locked*. It will not auto-generate if a bill is in *pending* state.\n\nThe default value is **None**.\n\n- **None**. Statements will not be auto-generated.\n- **JSON**. Statements are auto-generated in JSON format.\n- **JSON and CSV**. Statements are auto-generated in both JSON and CSV formats. ",
              "$ref" : "#/components/schemas/StatementAutoGenerateMode"
            },
            "creditApplicationOrder" : {
              "type" : "array",
              "description" : "Define the order in which any Prepayment or Balance amounts on Accounts are to be drawn-down against for billing. Four options:\n- `\"PREPAYMENT\",\"BALANCE\"`. Draw-down against Prepayment credit before Balance credit.\n- `\"BALANCE\",\"PREPAYMENT\"`. Draw-down against Balance credit before Prepayment credit.\n- `\"PREPAYMENT\"`. Only draw-down against Prepayment credit.\n- `\"BALANCE\"`. Only draw-down against Balance credit.\n\n**NOTES:**\n* You can override this Organization-level setting for `creditApplicationOrder` at the level of an individual Account.\n* If the Account belongs to a Parent/Child Account hierarchy, then the `creditApplicationOrder` settings are not available, and the draw-down order defaults always to Prepayment then Balance order.",
              "items" : {
                "$ref" : "#/components/schemas/BillCreditType"
              }
            },
            "allowNegativeBalances" : {
              "type" : "boolean",
              "description" : "Allow balance amounts to fall below zero. This feature is enabled on request. Please get in touch with m3ter Support or your m3ter contact if you would like it enabling for your organization(s).",
              "example" : false
            },
            "allowOverlappingPlans" : {
              "type" : "boolean",
              "description" : "Boolean setting to control whether or not multiple plans for the same Product can be active on an Account at the same time:\n* **TRUE** - multiple overlapping plans for the same product can be attached to the same Account.\n* **FALSE** - multiple overlapping plans for the same product cannot be attached to the same Account.(*Default*)",
              "example" : false
            },
            "billPrefix" : {
              "type" : "string",
              "description" : "Prefix to be used for sequential invoice numbers. This will be combined with the `sequenceStartNumber`.\n\n**NOTES:**\n* If you do not define a `billPrefix`, a default will be used in the Console for the Bill **REFERENCE** number. This default will concatenate **INV-** with the last four characters of the `billId`.\n* If you do not define a `billPrefix`, the Bill response schema for API calls that retrieve Bill data will not contain a `sequentialInvoiceNumber`.",
              "example" : "Bill-"
            },
            "sequenceStartNumber" : {
              "type" : "integer",
              "description" : "The starting number to be used for sequential invoice numbers. This will be combined with the `billPrefix`.\n\nFor example, if you define `billPrefix` to be **INVOICE-** and you set the `seqenceStartNumber` as **100**, the first Bill created after updating your Organization Configuration will have a `sequentialInvoiceNumber` assigned of **INVOICE-101**. Subsequent Bills created will be numbered in time sequence for their initial creation date/time.",
              "format" : "int32",
              "example" : 1000
            }
          }
        } ]
      },
      "ExportDestinationBaseRequest" : {
        "required" : [ "code", "name" ],
        "type" : "object",
        "properties" : {
          "name" : {
            "maxLength" : 200,
            "minLength" : 1,
            "type" : "string",
            "description" : "The name of the Export Destination."
          },
          "code" : {
            "maxLength" : 80,
            "minLength" : 1,
            "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
            "type" : "string",
            "description" : "The code of the Export Destination."
          },
          "destinationType" : {
            "description" : "",
            "$ref" : "#/components/schemas/DataExportDestinationType"
          }
        },
        "description" : "Base mode request containing available destination types",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "PaginatedCreditLineItemResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/CreditLineItemResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "PaginatedDebitReasonResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/DebitReasonResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "EventResponse" : {
        "required" : [ "dtActioned", "eventName", "eventTime", "id", "m3terEvent" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "The uniqie identifier (UUID) of the Event."
          },
          "eventName" : {
            "type" : "string",
            "description" : "The name of the Event as it is registered in the system. This name is used to categorize and trigger associated actions."
          },
          "eventTime" : {
            "type" : "string",
            "description" : "The time when the Event was triggered, using the ISO 8601 date and time format.",
            "format" : "date-time"
          },
          "m3terEvent" : {
            "type" : "object",
            "description" : "The Data Transfer Object (DTO) containing the details of the Event. "
          },
          "dtActioned" : {
            "type" : "string",
            "description" : "When an Event was actioned. It follows the ISO 8601 date and time format.\n\nYou can action an Event to indicate that it has been followed up and resolved - this is useful when dealing with integration error Events or ingest failure Events.",
            "format" : "date-time"
          }
        },
        "description" : "",
        "example" : {
          "id" : "9cb46d85-7cb6-4637-80a1-d4ec38e4ab30",
          "eventName" : "configuration.commitment.created",
          "eventTime" : "2022-10-28T13:54:49.557Z",
          "dtActioned" : "2022-10-28T13:56:49.557Z",
          "m3terEvent" : {
            "eventData" : {
              "newDto" : {
                "commitmentFeeDescription" : "",
                "endDate" : "2024-12-31",
                "billingInterval" : 1,
                "orgId" : "396d788d-5174-XXXX-9d69-YYYY4671fc33",
                "overageSurchargePercent" : 5.0,
                "overageDescription" : "",
                "currency" : "USD",
                "id" : "480d317e-2030-416b-b64b-c07577c418b4",
                "amountSpent" : 0.0,
                "accountCode" : "doetech_premium",
                "amount" : 15000.0,
                "billingOffset" : 0,
                "lastModifiedBy" : "USER_810e3a43-XXXX-4dab-YYYY-470977405b58",
                "billingPlanId" : "0409e75a-8a87-43de-aa58-fc6ec823ce37",
                "version" : 1,
                "accountId" : "1cf2a754-476c-498c-b05a-7d41abfc404d",
                "dtCreated" : "2022-10-28T13:54:48.081781Z",
                "amountPrePaid" : 0.0,
                "productIds" : [ "bec371ef-dbad-4e73-a56a-dadecff2287c" ],
                "createdBy" : "USER_810e3a43-XXXX-4dab-YYYY-470977405b58",
                "contractId" : "68595d6d-261f-496b-bf88-51fc7d2b5ccc",
                "commitmentUsageDescription" : "",
                "startDate" : "2023-01-01",
                "dtLastModified" : "2022-10-28T13:54:48.081781Z"
              }
            }
          }
        }
      },
      "DataExplorerMeterField" : {
        "required" : [ "fieldCode", "meterId" ],
        "type" : "object",
        "properties" : {
          "meterId" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "Meter ID",
            "x-size-message" : "aggregation or dimension filter meterId must not be blank"
          },
          "fieldCode" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "Field code",
            "x-size-message" : "aggregation or dimension filter fieldCode must not be blank"
          }
        },
        "description" : "Meter field"
      },
      "ArrayList_ConfigSetting_" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractList_ConfigSetting_"
        }, {
          "$ref" : "#/components/schemas/AbstractCollection_ConfigSetting_"
        }, {
          "type" : "object",
          "properties" : {
            "empty" : {
              "type" : "boolean",
              "description" : ""
            }
          }
        } ]
      },
      "PaginatedBillResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/BillResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "PaginatedPlanGroupResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/PlanGroupResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "ChargeEntityType" : {
        "type" : "string",
        "description" : "The entity type the Charge has been created for.",
        "enum" : [ "AD_HOC", "BALANCE" ]
      },
      "EventTypeResponse" : {
        "type" : "object",
        "properties" : {
          "events" : {
            "type" : "array",
            "description" : "An array containing a list of all Event Types for which Notification rules can be configured. Each Event Type is represented by a string.",
            "items" : {
              "type" : "string"
            }
          }
        },
        "description" : "",
        "example" : {
          "events" : [ "billing.balance.created", "billing.balance.deleted", "billing.balance.updated", "billing.balanceamount.created", "billing.balanceamount.deleted", "billing.balanceamount.updated", "billing.bill.created", "billing.bill.deleted", "billing.bill.updated", "billing.billconfig.created", "billing.billconfig.deleted", "billing.billconfig.updated", "billing.billjob.created", "billing.billjob.deleted", "billing.billjob.updated", "billing.charge.created", "billing.charge.deleted", "billing.charge.updated", "billing.counteradjustment.created", "billing.counteradjustment.deleted", "billing.counteradjustment.updated", "billing.scheduledbalancecharge.created", "billing.scheduledbalancecharge.deleted", "billing.scheduledbalancecharge.updated", "billing.scheduledbalancetransaction.created", "billing.scheduledbalancetransaction.deleted", "billing.scheduledbalancetransaction.updated", "billing.statementjob.created", "billing.statementjob.deleted", "billing.statementjob.updated", "configuration.account.created", "configuration.account.deleted", "configuration.account.updated", "configuration.accountplan.created", "configuration.accountplan.deleted", "configuration.accountplan.updated", "configuration.aggregation.created", "configuration.aggregation.deleted", "configuration.aggregation.updated", "configuration.alert.created", "configuration.alert.deleted", "configuration.alert.updated", "configuration.commitment.created", "configuration.commitment.deleted", "configuration.commitment.updated", "configuration.compoundaggregation.created", "configuration.compoundaggregation.deleted", "configuration.compoundaggregation.updated", "configuration.contract.created", "configuration.contract.deleted", "configuration.contract.updated", "configuration.counter.created", "configuration.counter.deleted", "configuration.counter.updated", "configuration.counterpricing.created", "configuration.counterpricing.deleted", "configuration.counterpricing.updated", "configuration.creditreason.created", "configuration.creditreason.deleted", "configuration.creditreason.updated", "configuration.customfield.created", "configuration.customfield.deleted", "configuration.customfield.updated", "configuration.lookuptable.created", "configuration.lookuptable.deleted", "configuration.lookuptable.updated", "configuration.lookuptablerevision.created", "configuration.lookuptablerevision.deleted", "configuration.lookuptablerevision.updated", "configuration.lookuptablerevisiondatajob.created", "configuration.lookuptablerevisiondatajob.deleted", "configuration.lookuptablerevisiondatajob.updated", "configuration.meter.created", "configuration.meter.deleted", "configuration.meter.updated", "configuration.metergroup.created", "configuration.metergroup.deleted", "configuration.metergroup.updated", "configuration.organization.created", "configuration.organization.deleted", "configuration.organization.updated", "configuration.organizationconfig.created", "configuration.organizationconfig.deleted", "configuration.organizationconfig.updated", "configuration.plan.created", "configuration.plan.deleted", "configuration.plan.updated", "configuration.plangroup.created", "configuration.plangroup.deleted", "configuration.plangroup.updated", "configuration.plangrouplink.created", "configuration.plangrouplink.deleted", "configuration.plangrouplink.updated", "configuration.plantemplate.created", "configuration.plantemplate.deleted", "configuration.plantemplate.updated", "configuration.pricing.created", "configuration.pricing.deleted", "configuration.pricing.updated", "configuration.pricingband.created", "configuration.pricingband.deleted", "configuration.pricingband.updated", "configuration.product.created", "configuration.product.deleted", "configuration.product.updated", "configuration.transactiontype.created", "configuration.transactiontype.deleted", "configuration.transactiontype.updated", "dataexport.job.failure", "dataexport.job.success", "ingest.validation.failure", "integration.authentication.error", "integration.disabled.error", "integration.externalmapping.created", "integration.externalmapping.deleted", "integration.externalmapping.updated", "integration.missingaccountmapping.error", "integration.perform.error", "integration.validation.error" ]
        }
      },
      "AdHocDataExportConfigurationRequest" : {
        "required" : [ "sourceType" ],
        "type" : "object",
        "properties" : {
          "sourceType" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/SourceType"
            }, {
              "type" : "object",
              "description" : "The type of data to export. Possible values are: OPERATIONAL, USAGE."
            } ]
          },
          "destinationIds" : {
            "type" : "array",
            "description" : "The destination ids.\n\n**Note:** If you omit a Destination, this means that when the Export job runs and has succeeded, you can download the data export file locally. For details, see the [Get Data Export File Download URL](https://www.m3ter.com/docs/api#tag/ExportDestination/operation/GenerateDataExportFileDownloadUrl) endpoint in this API Reference.",
            "items" : {
              "type" : "string"
            }
          },
          "exportFileFormat" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ExportFileFormat"
            }, {
              "type" : "object",
              "description" : "The export file format."
            } ]
          },
          "startDate" : {
            "type" : "string",
            "description" : "The inclusive start date for the data export.",
            "format" : "date-time"
          }
        },
        "description" : "Base mode request containing ad-hoc data export configuration",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "AdHocOperationalDataExportConfigurationRequest" : {
        "required" : [ "operationalDataTypes", "sourceType" ],
        "type" : "object",
        "properties" : {
          "sourceType" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/SourceType"
            }, {
              "type" : "object",
              "description" : "The type of data to export. Possible values are: OPERATIONAL, USAGE."
            } ]
          },
          "operationalDataTypes" : {
            "minItems" : 1,
            "type" : "array",
            "description" : "The list of the operational data types should be exported for.",
            "items" : {
              "$ref" : "#/components/schemas/OperationalDataType"
            }
          }
        },
        "description" : "Request representing an operational data export configuration.",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AdHocDataExportConfigurationRequest"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "BalanceTransactionResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "description" : {
              "type" : "string",
              "description" : "A brief description explaining the purpose or context of the transaction."
            },
            "amount" : {
              "type" : "number",
              "description" : "The financial value of the transaction, as recorded in the balance."
            },
            "paid" : {
              "type" : "number",
              "description" : "The actual payment amount if the payment currency differs from the Balance currency."
            },
            "currencyPaid" : {
              "type" : "string",
              "description" : "The currency code such as USD, GBP, EUR of the payment, if it differs from the balance currency."
            },
            "entityType" : {
              "description" : "The type of entity associated with the Transaction - identifies who or what was responsible for the Transaction being added to the Balance - such as a **User**, a **Service User**, or a **Bill**.",
              "$ref" : "#/components/schemas/EntityType"
            },
            "entityId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the entity associated with the Transaction, as specified by the `entityType`."
            },
            "transactionTypeId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the Transaction type. This is obtained from the list of created Transaction Types within the Organization Configuration. "
            },
            "appliedDate" : {
              "type" : "string",
              "description" : "The date *(in ISO 8601 format)* when the balance transaction was applied, i.e., when the balance was affected.",
              "format" : "date-time"
            },
            "transactionDate" : {
              "type" : "string",
              "description" : "The date *(in ISO 8601 format)* when the transaction was recorded in the system.",
              "format" : "date-time"
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The date and time *(in ISO 8601 format)* when the balance transaction was first created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The date and time *(in ISO 8601 format)* when the balance transaction was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the user who created the balance transaction."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the user who last modified the balance transaction."
            }
          }
        } ]
      },
      "MemoLineItemRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "accountingProductId", "amount", "description", "productId", "referencedBillId", "referencedLineItemId", "servicePeriodEndDate", "servicePeriodStartDate" ],
          "type" : "object",
          "properties" : {
            "reasonId" : {
              "type" : "string",
              "description" : "The UUID of the line item reason."
            },
            "lineItemType" : {
              "description" : "",
              "$ref" : "#/components/schemas/LineItemType"
            },
            "amountToApplyOnBill" : {
              "type" : "number",
              "description" : ""
            },
            "productId" : {
              "type" : "string",
              "description" : "The UUID of the Product."
            },
            "accountingProductId" : {
              "type" : "string",
              "description" : ""
            },
            "description" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The description for the line item."
            },
            "amount" : {
              "minimum" : 0,
              "exclusiveMinimum" : true,
              "type" : "number",
              "description" : "The amount for the line item."
            },
            "referencedBillId" : {
              "type" : "string",
              "description" : "The UUID of the bill for the line item. "
            },
            "referencedLineItemId" : {
              "type" : "string",
              "description" : "The UUID of the line item."
            },
            "servicePeriodStartDate" : {
              "type" : "string",
              "description" : "The service period start date in ISO-8601 format. *(inclusive of the starting date)*.",
              "format" : "date-time"
            },
            "servicePeriodEndDate" : {
              "type" : "string",
              "description" : "The service period end date in ISO-8601 format.*(exclusive of the ending date)*.",
              "format" : "date-time"
            }
          }
        } ]
      },
      "CurrencyRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractPickListRequest"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "type" : "object",
          "properties" : {
            "maxDecimalPlaces" : {
              "maximum" : 5,
              "minimum" : 0,
              "type" : "integer",
              "description" : "Indicates the maximum number of decimal places to use for this Currency.",
              "format" : "int32",
              "example" : 2
            },
            "roundingMode" : {
              "description" : "",
              "$ref" : "#/components/schemas/RoundingMode"
            }
          }
        } ]
      },
      "AggregatedUsageData" : {
        "type" : "object",
        "properties" : {
          "timestamp" : {
            "type" : "string",
            "description" : "Start time of aggregated time period *(in ISO-8601 format)*.",
            "format" : "date-time"
          },
          "dimensions" : {
            "type" : "object",
            "description" : "Dimensions that were used for filtering",
            "allOf" : [ {
              "type" : "object",
              "additionalProperties" : {
                "type" : "object",
                "additionalProperties" : {
                  "type" : "string"
                }
              }
            }, {
              "type" : "object",
              "description" : "Dimensions that were used for filtering"
            } ]
          },
          "measures" : {
            "type" : "object",
            "description" : "Measures and their values",
            "allOf" : [ {
              "type" : "object",
              "additionalProperties" : {
                "type" : "object",
                "additionalProperties" : {
                  "type" : "number",
                  "format" : "double"
                }
              }
            }, {
              "type" : "object",
              "description" : "Measures and their values"
            } ]
          },
          "meterCode" : {
            "type" : "string",
            "description" : "Meter code"
          },
          "meterName" : {
            "type" : "string",
            "description" : "Meter name"
          },
          "uid" : {
            "type" : "string",
            "description" : "uid"
          }
        },
        "description" : "Aggregated usage data"
      },
      "PaginatedAccountResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/AccountResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "OrgUserInvitationResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "email" : {
              "type" : "string",
              "description" : "The email address of the invitee. The invitation will be sent to this email address. "
            },
            "permissionPolicyIds" : {
              "type" : "array",
              "description" : "The IDs of the permission policies the invited user has been assigned. This controls the access rights and privileges that this user will have when working in the m3ter Organization. ",
              "items" : {
                "type" : "string"
              }
            },
            "firstName" : {
              "type" : "string",
              "description" : "The first name of the invitee."
            },
            "lastName" : {
              "type" : "string",
              "description" : "The surname of the invitee."
            },
            "dtEndAccess" : {
              "type" : "string",
              "description" : "The date that access will end for the user *(in ISO-8601 format)*. If this is blank, there is no end date  meaning that the user has permanent access. ",
              "format" : "date-time"
            },
            "dtExpiry" : {
              "type" : "string",
              "description" : "The date when the invite expires *(in ISO-8601 format)*. After this date the invited user can no longer accept the invite. By default, any invite is valid for 30 days from the date the invite is sent.",
              "format" : "date-time"
            },
            "invitingPrincipalId" : {
              "type" : "string",
              "description" : "The UUID of the user who sent the invite. "
            },
            "accepted" : {
              "type" : "boolean",
              "description" : "Boolean indicating whether the user has accepted the invitation.\n\n* TRUE - the invite has been accepted.\n* FALSE - the invite has not yet been accepted."
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The DateTime when the invitation was created *(in ISO-8601 format)*.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The DateTime when the invitation was last modified *(in ISO-8601 format)*.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The UUID of the user who created the invitation."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The UUID of the user who last modified the invitation."
            }
          }
        } ]
      },
      "BasePricingRequestWithPricingBands" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/BasePricingRequest"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "pricingBands" ],
          "type" : "object",
          "properties" : {
            "pricingBands" : {
              "minItems" : 1,
              "type" : "array",
              "description" : "",
              "items" : {
                "$ref" : "#/components/schemas/PricingBand"
              }
            }
          }
        } ]
      },
      "BalanceResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "code" : {
              "type" : "string",
              "description" : "A unique short code assigned to the Balance."
            },
            "name" : {
              "type" : "string",
              "description" : "The official name of the Balance."
            },
            "description" : {
              "type" : "string",
              "description" : "A description of the Balance."
            },
            "accountId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the end customer Account the Balance belongs to."
            },
            "amount" : {
              "type" : "number",
              "description" : "The financial value that the Balance holds."
            },
            "currency" : {
              "type" : "string",
              "description" : "The currency code used for the Balance amount. For example: USD, GBP or EUR."
            },
            "startDate" : {
              "type" : "string",
              "description" : "The date/time *(in ISO 8601 format)* when the Balance becomes active.",
              "format" : "date-time"
            },
            "endDate" : {
              "type" : "string",
              "description" : "The date/time *(in ISO 8601 format)* after which the Balance will no longer be active.",
              "format" : "date-time"
            },
            "rolloverAmount" : {
              "type" : "number",
              "description" : "The maximum amount that can be carried over past the Balance end date and draw-down against for billing if there is an unused Balance amount remaining when the Balance end date is reached.\n"
            },
            "rolloverEndDate" : {
              "type" : "string",
              "description" : "The end date *(in ISO 8601 format)* for the rollover grace period, which is the period that unused Balance amounts can be carried over beyond the specified Balance `endDate` and continue to be drawn-down against for billing.",
              "format" : "date-time"
            },
            "balanceDrawDownDescription" : {
              "type" : "string",
              "description" : "A description for the bill line items for charges drawn-down against the Balance."
            },
            "overageSurchargePercent" : {
              "type" : "number",
              "description" : "The percentage surcharge applied to overage charges *(usage above the Balance)*.",
              "format" : "double"
            },
            "overageDescription" : {
              "type" : "string",
              "description" : "A description for overage charges."
            },
            "productIds" : {
              "type" : "array",
              "description" : "A list of Product IDs whose consumption charges due at billing can be drawn-down against the Balance amount.",
              "items" : {
                "type" : "string"
              }
            },
            "lineItemTypes" : {
              "type" : "array",
              "description" : "A list of line item charge types that can draw-down against the Balance amount at billing. ",
              "items" : {
                "$ref" : "#/components/schemas/BalanceLineItemType"
              }
            },
            "contractId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for a Contract on the Account the Balance has been added to."
            },
            "consumptionsAccountingProductId" : {
              "type" : "string",
              "description" : "Product ID that any Balance Consumed line items will be attributed to for accounting purposes.(*Optional*)"
            },
            "feesAccountingProductId" : {
              "type" : "string",
              "description" : "Product ID that any Balance Fees line items will be attributed to for accounting purposes.(*Optional*)"
            },
            "allowOverdraft" : {
              "type" : "boolean",
              "description" : "Allow balance amounts to fall below zero. This feature is enabled on request. Please get in touch with m3ter Support or your m3ter contact if you would like it enabling for your organization(s)."
            },
            "grant" : {
              "type" : "boolean",
              "description" : "A Boolean flag indicating whether the Balance is enabled as a Grant:\n* **true** - the Balance is enabled as a Grant.\n* **false** - the Balance is not enabled as a Grant.*(Default)*"
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The date and time *(in ISO 8601 format)* when the Balance was first created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The date and time *(in ISO 8601 format)* when the Balance was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the user who created the Balance."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the user who last modified the Balance."
            }
          }
        } ]
      },
      "PaginatedExternalMappingResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/ExternalMappingResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "CreditLineItemRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/MemoLineItemRequest"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "type" : "object",
          "properties" : {
            "amountToApplyOnBill" : {
              "type" : "number",
              "description" : ""
            },
            "creditReasonId" : {
              "type" : "string",
              "description" : "The UUID of the credit reason."
            }
          }
        } ]
      },
      "WebhookDestinationResponse" : {
        "type" : "object",
        "properties" : {
          "url" : {
            "type" : "string",
            "description" : "The URL to which webhook requests are sent. "
          },
          "credentials" : {
            "description" : "This schema defines the credentials required for m3ter request signing. ",
            "allOf" : [ {
              "$ref" : "#/components/schemas/IntegrationM3terSignedCredentialsResponse"
            }, {
              "type" : "object",
              "description" : "Response representing a credential set for m3ter request signing"
            } ]
          }
        },
        "description" : "Response containing details of a webhook destination.",
        "allOf" : [ {
          "$ref" : "#/components/schemas/DestinationResponse"
        }, {
          "$ref" : "#/components/schemas/AbstractResponseWithAuditFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        } ]
      },
      "DerivedField" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/DataField"
        }, {
          "required" : [ "calculation" ],
          "type" : "object",
          "properties" : {
            "calculation" : {
              "maxLength" : 5000,
              "minLength" : 1,
              "type" : "string",
              "description" : "The calculation used to transform the value of submitted `dataFields` in usage data. Calculation can reference `dataFields`, `customFields`, or system `Timestamp` fields. \n*(Example: datafieldms  datafieldgb)* "
            }
          }
        } ]
      },
      "ScheduleType" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "HOUR", "DAY", "MINUTE", "AD_HOC" ]
      },
      "PermissionStatement" : {
        "required" : [ "action", "effect", "resource" ],
        "type" : "object",
        "properties" : {
          "effect" : {
            "description" : "Specifies whether or not the user is allowed to perform the action on the resource.\n\n**NOTE:** Use lower case, for example: `\"allow\"`. If you use upper case, you'll receive an error.",
            "$ref" : "#/components/schemas/PermissionEffect"
          },
          "action" : {
            "type" : "array",
            "description" : "The actions available to users who are assigned the Permission Policy - what they can do or cannot do with respect to the specified resource.\n\n**NOTE:** Use lower case and a colon-separated format, for example, if you want to confer full CRUD, use:\n```\n\"config:create\",\n\"config:delete\",\n\"config:retrieve\",\n\"config:update\"\n```",
            "items" : {
              "$ref" : "#/components/schemas/PermissionAction"
            }
          },
          "resource" : {
            "minItems" : 1,
            "type" : "array",
            "description" : "See [Statements - Available Resources](https://www.m3ter.com/docs/guides/managing-organization-and-users/creating-and-managing-permissions#statements---available-resources) for a listing of available resources for Permission Policy statements.",
            "items" : {
              "type" : "string"
            }
          }
        },
        "description" : ""
      },
      "CurrencyConversion" : {
        "required" : [ "from", "to" ],
        "type" : "object",
        "properties" : {
          "from" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "Currency to convert from. For example: EUR.",
            "example" : "EUR"
          },
          "to" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "Currency to convert to. For example: USD.",
            "example" : "USD"
          },
          "multiplier" : {
            "minimum" : 0,
            "exclusiveMinimum" : true,
            "type" : "number",
            "description" : "Conversion rate between currencies.",
            "format" : "double",
            "example" : 1.12
          }
        },
        "description" : "An array of currency conversion rates from Bill currency to Organization currency. For example, if Account is billed in GBP and Organization is set to USD, Bill line items are calculated in GBP and then converted to USD using the defined rate."
      },
      "BalanceChargeScheduleRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequestWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "billFrequency", "billFrequencyInterval", "billInAdvance", "chargeDescription", "code", "currency", "name", "servicePeriodEndDate", "servicePeriodStartDate" ],
          "type" : "object",
          "properties" : {
            "name" : {
              "maxLength" : 200,
              "minLength" : 1,
              "type" : "string",
              "description" : "The name of the Balance Charge Schedule."
            },
            "code" : {
              "maxLength" : 80,
              "minLength" : 1,
              "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
              "type" : "string",
              "description" : "Unique short code for the Balance Charge Schedule."
            },
            "amount" : {
              "minimum" : 0,
              "type" : "number",
              "description" : "The amount of each Charge created by the Balance Charge Schedule. Must be omitted if `units` and `unitPrice` are provided."
            },
            "units" : {
              "type" : "number",
              "description" : "Number of units defined for the Charges created by the Schedule. Required when `unitPrice` is provided. Must be omitted when `amount` is used."
            },
            "unitPrice" : {
              "type" : "number",
              "description" : "Unit price for Charge. Must be provided when `units` is used. Must be omitted when `amount` is used."
            },
            "currency" : {
              "type" : "string",
              "description" : "The currency of the Charges created by the Balance Charge Schedule."
            },
            "servicePeriodStartDate" : {
              "type" : "string",
              "description" : "The service period start date (*in ISO-8601 format)* of the Balance Charge Schedule.",
              "format" : "date-time"
            },
            "servicePeriodEndDate" : {
              "type" : "string",
              "description" : "The service period end date (*in ISO-8601 format*) of the Balance Charge Schedule.",
              "format" : "date-time"
            },
            "billEpoch" : {
              "type" : "string",
              "description" : "Specify a billing cycle date (*in ISO-8601 format*) for when the first Bill is created for Balance Charges created by the Schedule, and also acts as a reference for when in the Schedule period subsequent Bills are created for the defined `billFrequency`. If left blank, then the relevant Epoch date from your Organization's configuration will be used as the billing cycle date instead.",
              "format" : "date"
            },
            "billFrequency" : {
              "description" : "Specify the daily, weekly, monthly, or yearly intervals for when Bills for Charges created by the Schedule against the Balance are generated for the Account.",
              "allOf" : [ {
                "$ref" : "#/components/schemas/ScheduleFrequency"
              }, {
                "type" : "object",
                "description" : "Together with billFrequencyInterval, defines how often Bills are generated."
              } ]
            },
            "billFrequencyInterval" : {
              "maximum" : 365,
              "minimum" : 1,
              "type" : "integer",
              "description" : "How often Bills are issued. For example, if billFrequency is `MONTHLY` and `billFrequencyInterval` is 3, Bills are issued every three months.",
              "format" : "int32"
            },
            "billInAdvance" : {
              "type" : "boolean",
              "description" : "Used to specify how Charges created by the Balance Charge Schedule are billed - either in arrears or in advance:\n* Use `false` for billing in arrears.\n* Use `true` for billing in advance."
            },
            "chargeDescription" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The description for Charges created by the Balance Charge Schedule. Used on Bills for Charge line items."
            }
          }
        } ]
      },
      "PrincipalPermissionRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "principalId" ],
          "type" : "object",
          "properties" : {
            "principalId" : {
              "minLength" : 1,
              "type" : "string",
              "description" : ""
            }
          }
        } ]
      },
      "QueryObligationsRequest" : {
        "required" : [ "endDate", "startDate" ],
        "type" : "object",
        "properties" : {
          "startDate" : {
            "type" : "string",
            "description" : "ISO 8601 formatted start date for the obligations.",
            "format" : "date-time"
          },
          "endDate" : {
            "type" : "string",
            "description" : "ISO 8601 formatted end date for the obligations.",
            "format" : "date-time"
          },
          "dimensions" : {
            "maxItems" : 100,
            "type" : "array",
            "description" : "Dimensions to filter by",
            "items" : {
              "$ref" : "#/components/schemas/DimensionQuery"
            }
          },
          "limit" : {
            "maximum" : 2000,
            "minimum" : 1,
            "type" : "integer",
            "description" : "Limit the number of data points returned",
            "format" : "int32"
          }
        },
        "description" : "Data Explorer Obligations query."
      },
      "PaginatedPricingBandResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/PricingBandResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "GenerateExportDownloadUrlResponse" : {
        "type" : "object",
        "properties" : {
          "url" : {
            "type" : "string",
            "description" : "The presigned download URL"
          },
          "expirationTime" : {
            "type" : "string",
            "description" : "The expiration time of the URL",
            "format" : "date-time"
          }
        },
        "description" : "It contains details for downloading an export file"
      },
      "AdHocUsageDataExportConfigurationRequestV2" : {
        "required" : [ "sourceType" ],
        "type" : "object",
        "properties" : {
          "sourceType" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/SourceType"
            }, {
              "type" : "object",
              "description" : "The type of data to export. Possible values are: OPERATIONAL, USAGE."
            } ]
          },
          "endDate" : {
            "type" : "string",
            "description" : "The exclusive end date for the data export.",
            "format" : "date-time"
          },
          "meterIds" : {
            "type" : "array",
            "description" : "List of meter IDs for which the usage data will be exported.",
            "items" : {
              "type" : "string"
            }
          },
          "accountIds" : {
            "type" : "array",
            "description" : "List of account IDs for which the usage data will be exported.",
            "items" : {
              "type" : "string"
            }
          },
          "dimensionFilters" : {
            "type" : "array",
            "description" : "List of dimension filters to apply",
            "items" : {
              "$ref" : "#/components/schemas/DataExplorerDimensionFilter"
            }
          },
          "aggregations" : {
            "type" : "array",
            "description" : "List of aggregations to apply",
            "items" : {
              "$ref" : "#/components/schemas/DataExplorerAggregation"
            }
          },
          "groups" : {
            "type" : "array",
            "description" : "List of groups to apply",
            "items" : {
              "$ref" : "#/components/schemas/DataExplorerGroup"
            }
          }
        },
        "description" : "Request representing a usage data export configuration.",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AdHocDataExportConfigurationRequest"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "CommitmentFee" : {
        "required" : [ "amount", "date", "servicePeriodEndDate", "servicePeriodStartDate" ],
        "type" : "object",
        "properties" : {
          "date" : {
            "type" : "string",
            "description" : "",
            "format" : "date"
          },
          "amount" : {
            "minimum" : 0,
            "exclusiveMinimum" : true,
            "type" : "number",
            "description" : "",
            "format" : "double"
          },
          "servicePeriodStartDate" : {
            "type" : "string",
            "description" : "",
            "format" : "date-time"
          },
          "servicePeriodEndDate" : {
            "type" : "string",
            "description" : "",
            "format" : "date-time"
          }
        },
        "description" : ""
      },
      "DataExplorerAccountGroup_1" : {
        "type" : "string",
        "description" : "Type of group",
        "discriminator" : {
          "propertyName" : "groupType",
          "mapping" : {
            "ACCOUNT" : "#/components/schemas/DataExplorerAccountGroup",
            "DIMENSION" : "#/components/schemas/DataExplorerDimensionGroup",
            "TIME" : "#/components/schemas/DataExplorerTimeGroup"
          }
        },
        "enum" : [ "ACCOUNT", "DIMENSION", "TIME" ]
      },
      "BalanceTransactionScheduleRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequestWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "amount", "endDate", "frequency", "frequencyInterval", "startDate", "transactionTypeId" ],
          "type" : "object",
          "properties" : {
            "name" : {
              "maxLength" : 200,
              "type" : "string",
              "description" : "The name of the Balance Transaction Schedule."
            },
            "code" : {
              "maxLength" : 80,
              "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
              "type" : "string",
              "description" : "The unique short code of the Balance Transaction Schedule."
            },
            "amount" : {
              "minimum" : 0,
              "type" : "number",
              "description" : "The amount of each Balance Transaction created by this Schedule."
            },
            "transactionDescription" : {
              "type" : "string",
              "description" : "The description of each Balance Transaction that will be created by this Schedule."
            },
            "paid" : {
              "type" : "number",
              "description" : "The payment amount if the payment currency differs from the Balance currency. "
            },
            "currencyPaid" : {
              "type" : "string",
              "description" : "The currency code of the payment if it differs from the Balance currency. For example: USD, GBP or EUR. "
            },
            "transactionTypeId" : {
              "maxLength" : 36,
              "minLength" : 1,
              "pattern" : "^[a-zA-Z0-9-]*$",
              "type" : "string",
              "description" : "The unique identifier (UUID) of the transaction type used to create Transactions by this Schedule. You can obtain a list of Transaction Types created for the Organization. See the the [List TransactionTypes](https://www.m3ter.com/docs/api#tag/TransactionType/operation/ListTransactionTypes) endpoint of this API Reference."
            },
            "startDate" : {
              "type" : "string",
              "description" : "The start date (*in ISO-8601 format*) of the Balance Transaction Schedule.",
              "format" : "date-time"
            },
            "endDate" : {
              "type" : "string",
              "description" : "The end date (*in ISO-8601 format*) of the Balance Transaction Schedule.\n\n**NOTE:** End date is exclusive.",
              "format" : "date-time"
            },
            "frequency" : {
              "description" : "Specify a daily, weekly, monthly, or yearly interval for when Transactions are generated for the Balance throughout the defined Transaction Schedule time period.",
              "allOf" : [ {
                "$ref" : "#/components/schemas/ScheduleFrequency"
              }, {
                "type" : "object",
                "description" : "Together with frequencyInterval, defines how often BalanceTransactions are generated."
              } ]
            },
            "frequencyInterval" : {
              "maximum" : 365,
              "minimum" : 1,
              "type" : "integer",
              "description" : "Used in conjunction with `frequency` to define how often Balance Transactions are generated by the Schedule. For example, if `frequency` is MONTHLY and `frequencyInterval` is 3, then Balance Transactions are generated every three months.",
              "format" : "int32"
            }
          }
        } ]
      },
      "PlanTemplateRequest" : {
        "type" : "object",
        "description" : "",
        "example" : {
          "version" : null,
          "customFields" : [ ],
          "productId" : "string",
          "name" : "string",
          "currency" : "USD",
          "standingCharge" : 0,
          "standingChargeDescription" : "string",
          "standingChargeInterval" : 1,
          "standingChargeOffset" : 364,
          "billFrequencyInterval" : 1,
          "billFrequency" : "DAILY",
          "ordinal" : 0,
          "code" : "string",
          "minimumSpend" : 0,
          "minimumSpendDescription" : "string",
          "standingChargeBillInAdvance" : true,
          "minimumSpendBillInAdvance" : true
        },
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequestWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "billFrequency", "currency", "name", "productId", "standingCharge" ],
          "type" : "object",
          "properties" : {
            "productId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "The unique identifier (UUID) of the Product associated with this PlanTemplate."
            },
            "name" : {
              "maxLength" : 200,
              "minLength" : 1,
              "type" : "string",
              "description" : "Descriptive name for the PlanTemplate."
            },
            "currency" : {
              "maxLength" : 3,
              "minLength" : 3,
              "type" : "string",
              "description" : "The ISO currency code for the currency used to charge end users - for example USD, GBP, EUR. This defines the *pricing currency* and is inherited by any Plans based on the Plan Template.\n\n**Notes:**\n* You can define a currency at Organization-level or Account-level to be used as the *billing currency*. This can be a different currency to that used for the Plan as the *pricing currency*.\n* If the billing currency for an Account is different to the pricing currency used by a Plan attached to the Account, you must ensure a *currency conversion rate* is defined for your Organization to convert the pricing currency into the billing currency at billing, otherwise Bills will fail for the Account.\n* To define any required currency conversion rates, use the `currencyConversions` request body parameter for the [Update OrganizationConfig](https://www.m3ter.com/docs/api#tag/OrganizationConfig/operation/UpdateOrganizationConfig) call."
            },
            "standingCharge" : {
              "minimum" : 0,
              "type" : "number",
              "description" : "The fixed charge *(standing charge)* applied to customer bills. This charge is prorated and must be a non-negative number.",
              "format" : "double"
            },
            "standingChargeDescription" : {
              "maxLength" : 200,
              "type" : "string",
              "description" : "Standing charge description *(displayed on the bill line item)*."
            },
            "standingChargeInterval" : {
              "maximum" : 365,
              "minimum" : 1,
              "type" : "integer",
              "description" : "How often the standing charge is applied. \nFor example, if the bill is issued every three months and `standingChargeInterval` is 2, then the standing charge is applied every six months.",
              "format" : "int32"
            },
            "standingChargeOffset" : {
              "maximum" : 364,
              "minimum" : 0,
              "type" : "integer",
              "description" : "Defines an offset for when the standing charge is first applied. \nFor example, if the bill is issued every three months and the `standingChargeOfset` is 0, then the charge is applied to the first bill *(at three months)*; if 1, it would be applied to the second bill *(at six months)*, and so on.",
              "format" : "int32"
            },
            "billFrequencyInterval" : {
              "maximum" : 365,
              "minimum" : 1,
              "type" : "integer",
              "description" : "How often bills are issued. \nFor example, if `billFrequency` is Monthly and `billFrequencyInterval` is 3, bills are issued every three months.",
              "format" : "int32"
            },
            "billFrequency" : {
              "description" : "Determines the frequency at which bills are generated.\n\n* **Daily**. Starting at midnight each day, covering the twenty-four hour period following.\n\n* **Weekly**. Starting at midnight on a Monday, covering the seven-day period following.\n\n* **Monthly**. Starting at midnight on the first day of each month, covering the entire calendar month following.\n\n* **Annually**. Starting at midnight on first day of each year covering the entire calendar year following.",
              "$ref" : "#/components/schemas/BillingFrequency"
            },
            "ordinal" : {
              "minimum" : 0,
              "type" : "integer",
              "description" : "The ranking of the PlanTemplate among your pricing plans. Lower numbers represent more basic plans, while higher numbers represent premium plans. This must be a non-negative integer.\n\n**NOTE: DEPRECATED** - do not use.",
              "format" : "int64"
            },
            "code" : {
              "maxLength" : 80,
              "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
              "type" : "string",
              "description" : "A unique, short code reference for the PlanTemplate. This code should not contain control characters or spaces."
            },
            "minimumSpend" : {
              "minimum" : 0,
              "type" : "number",
              "description" : "The Product minimum spend amount per billing cycle for end customer Accounts on a pricing Plan based on the PlanTemplate. This must be a non-negative number.",
              "format" : "double"
            },
            "minimumSpendDescription" : {
              "maxLength" : 200,
              "type" : "string",
              "description" : "Minimum spend description *(displayed on the bill line item)*."
            },
            "standingChargeBillInAdvance" : {
              "type" : "boolean",
              "description" : "A boolean that determines when the standing charge is billed.\n\n* TRUE - standing charge is billed at the start of each billing period.\n* FALSE - standing charge is billed at the end of each billing period.\n\nOverrides the setting at Organizational level for standing charge billing in arrears/in advance."
            },
            "minimumSpendBillInAdvance" : {
              "type" : "boolean",
              "description" : "A boolean that determines when the minimum spend is billed.\n\n* TRUE - minimum spend is billed at the start of each billing period.\n* FALSE - minimum spend is billed at the end of each billing period.\n\nOverrides the setting at Organizational level for minimum spend billing in arrears/in advance."
            }
          }
        } ]
      },
      "BillStatus" : {
        "type" : "string",
        "description" : "Indicates whether the Bill has passed human/manual approval.\n\n* **Pending** - Bill has not yet been passed by a human reviewer.\n* **Approved** - Bill has been approved after manual review. ",
        "enum" : [ "PENDING", "APPROVED" ]
      },
      "MeterDimensionsResponse" : {
        "type" : "object",
        "properties" : {
          "meterCode" : {
            "type" : "string",
            "description" : "Code representing the Meter"
          },
          "dimensionName" : {
            "type" : "string",
            "description" : "Name representing the dimension"
          },
          "dimensionValues" : {
            "type" : "array",
            "description" : "Dimension values",
            "items" : {
              "$ref" : "#/components/schemas/DimensionValue"
            }
          }
        },
        "description" : "Response containing a Meters dimensions and values"
      },
      "PaginatedAggregationResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/AggregationResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "EvaluateCalculationResponse" : {
        "required" : [ "success" ],
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "boolean",
            "description" : "Indicates whether the calculation evaluated to True against the specified Event."
          },
          "errorMessage" : {
            "type" : "string",
            "description" : "Optional message providing details about any errors that occurred during the evaluation. If no errors occurred, this is `null`."
          }
        },
        "description" : "Response containing the results of a calculation evaluation."
      },
      "PaginatedTransactionTypeResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/TransactionTypeResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "LookupTableRevisionDataItemUpsertRequest" : {
        "required" : [ "item" ],
        "type" : "object",
        "properties" : {
          "item" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "object"
            },
            "description" : "",
            "x-not-null-message" : "item cannot be null"
          },
          "version" : {
            "type" : "integer",
            "description" : "The version of the LookupTableRevisionData.",
            "format" : "int64"
          }
        },
        "description" : ""
      },
      "ExternalMappingConfigurationResponse" : {
        "required" : [ "externalSystems", "m3terEntities" ],
        "type" : "object",
        "properties" : {
          "m3terEntities" : {
            "type" : "array",
            "description" : " An array of m3ter entity names. For example, this could include \"Account\".",
            "items" : {
              "type" : "string"
            }
          },
          "externalSystems" : {
            "type" : "array",
            "description" : "An array with the list of external systems.",
            "items" : {
              "$ref" : "#/components/schemas/ExternalSystemResponse"
            }
          }
        },
        "description" : "Response containing permitted External Mapping configuration."
      },
      "BasePricingResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithAuditFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "planId" : {
              "type" : "string",
              "description" : "UUID of the Plan the Pricing is created for."
            },
            "planTemplateId" : {
              "type" : "string",
              "description" : "UUID of the Plan Template the Pricing was created for."
            },
            "cumulative" : {
              "type" : "boolean",
              "description" : "Controls whether or not charge rates under a set of pricing bands configured for a Pricing are applied according to each separate band or at the highest band reached.\n\nThe default value is **TRUE**.\n\n* When TRUE, at billing charge rates are applied according to each separate band.\n\n* When FALSE, at billing charge rates are applied according to highest band reached."
            },
            "startDate" : {
              "type" : "string",
              "description" : "The start date *(in ISO-8601 format)* for when the Pricing starts to be active for the Plan of Plan Template.",
              "format" : "date-time"
            },
            "endDate" : {
              "type" : "string",
              "description" : "The end date *(in ISO-8601 format)* for when the Pricing ceases to be active for the Plan or Plan Template.\n\nIf not specified, the Pricing remains active indefinitely.",
              "format" : "date-time"
            },
            "code" : {
              "type" : "string",
              "description" : "Unique short code for the Pricing."
            },
            "description" : {
              "type" : "string",
              "description" : "Displayed on Bill line items."
            },
            "accountingProductId" : {
              "type" : "string",
              "description" : "Optional Product ID this Pricing should be attributed to for accounting purposes."
            }
          }
        } ]
      },
      "ChargeResponse" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Name of the Charge. Added to the Bill line item description for Charge."
          },
          "code" : {
            "type" : "string",
            "description" : "The unique short code of the Charge."
          },
          "accountId" : {
            "type" : "string",
            "description" : "The ID of the Account the Charge was created for."
          },
          "billDate" : {
            "type" : "string",
            "description" : "The date when the Charge will be added to a Bill.",
            "format" : "date"
          },
          "amount" : {
            "type" : "number",
            "description" : "The Charge amount. If `amount` has been defined, then `units` and `unitPrice` cannot be used."
          },
          "units" : {
            "type" : "number",
            "description" : "Number of units of the Charge. Provided together with `unitPrice`. If `units` and `unitPrice` are provided, `amount` cannot be used."
          },
          "unitPrice" : {
            "type" : "number",
            "description" : "Unit Price for the Charge. Provided together with `units`:\n* Null if the Charge was created with `amount` only.\n* If `units` and `unitPrice` are provided, `amount` cannot be used."
          },
          "currency" : {
            "type" : "string",
            "description" : "Charge currency."
          },
          "description" : {
            "type" : "string",
            "description" : "The description added to the Bill line item for the Charge."
          },
          "entityType" : {
            "description" : "The entity type the Charge has been created for.",
            "$ref" : "#/components/schemas/ChargeEntityType"
          },
          "entityId" : {
            "type" : "string",
            "description" : "The ID of the Charge linked entity. For example, the ID of an Account Balance if a Balance Charge."
          },
          "billId" : {
            "type" : "string",
            "description" : "The ID of the Bill created for this Charge."
          },
          "accountingProductId" : {
            "type" : "string",
            "description" : "The Accounting Product ID assigned to the Charge."
          },
          "servicePeriodStartDate" : {
            "type" : "string",
            "description" : "The service period start date (*in ISO-8601 format*) for the Charge .",
            "format" : "date-time"
          },
          "servicePeriodEndDate" : {
            "type" : "string",
            "description" : "The service period end date (*in ISO-8601 format*) for the Charge.\n\n**NOTE:** End date is exclusive.",
            "format" : "date-time"
          },
          "notes" : {
            "type" : "string",
            "description" : "Information about the Charge for accounting purposes, such as the reason it was created. This information will not be added to the created Bill line item for the Charge."
          },
          "contractId" : {
            "type" : "string",
            "description" : "The ID of a Contract on the Account that the Charge has been added to."
          },
          "lineItemType" : {
            "description" : "The line item type used for billing a Charge.",
            "$ref" : "#/components/schemas/ChargeLineItemType"
          },
          "dtCreated" : {
            "type" : "string",
            "description" : "The date and time (*in ISO-8601 format*) when the Charge was created.",
            "format" : "date-time"
          },
          "dtLastModified" : {
            "type" : "string",
            "description" : "The date and time (*in ISO 8601 format*) when the Charge was last modified.",
            "format" : "date-time"
          },
          "createdBy" : {
            "type" : "string",
            "description" : "The unique identifier (UUID) of the user who created the Charge."
          },
          "lastModifiedBy" : {
            "type" : "string",
            "description" : "The unique identifier (UUID) of the user who last modified the Charge."
          },
          "scheduleId" : {
            "type" : "string",
            "description" : "The ID of the Balance Charge Schedule that created the Charge."
          }
        },
        "description" : "Response containing a Charge entity",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        } ]
      },
      "ServiceUserResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "name" : {
              "type" : "string",
              "description" : ""
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The DateTime when the service user was created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The DateTime when the service user was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The id of the user who created this service user."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The id of the user who last modified this service user."
            }
          }
        } ]
      },
      "DestinationRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "description", "name" ],
          "type" : "object",
          "properties" : {
            "name" : {
              "minLength" : 1,
              "type" : "string",
              "description" : ""
            },
            "description" : {
              "minLength" : 1,
              "type" : "string",
              "description" : ""
            },
            "code" : {
              "type" : "string",
              "description" : ""
            },
            "active" : {
              "type" : "boolean",
              "description" : ""
            }
          }
        } ]
      },
      "AccountPlanRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequestWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "accountId", "startDate" ],
          "type" : "object",
          "properties" : {
            "accountId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "The unique identifier (UUID) for the Account."
            },
            "planId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "The unique identifier (UUID) of the Plan to be attached to the Account to create an AccountPlan.\n\n**Note:** Exclusive of the `planGroupId` request parameter - exactly one of `planId` or `planGroupId` must be used per call."
            },
            "planGroupId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "The unique identifier (UUID) of the PlanGroup to be attached to the Account to create an AccountPlanGroup.\n\n**Note:** Exclusive of the `planId` request parameter - exactly one of `planId` or `planGroupId` must be used per call."
            },
            "startDate" : {
              "type" : "string",
              "description" : "The start date *(in ISO-8601 format)* for the AccountPlan or AccountPlanGroup becoming active for the Account.",
              "format" : "date-time"
            },
            "endDate" : {
              "type" : "string",
              "description" : "The end date *(in ISO-8601 format)* for when the AccountPlan or AccountPlanGroup ceases to be active for the Account. If not specified, the AccountPlan or AccountPlanGroup remains active indefinitely.",
              "format" : "date-time"
            },
            "code" : {
              "maxLength" : 80,
              "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
              "type" : "string",
              "description" : "A unique short code for the AccountPlan or AccountPlanGroup."
            },
            "billEpoch" : {
              "type" : "string",
              "description" : "Optional setting to define a *billing cycle date*, which acts as a reference for when in the applied billing frequency period bills are created:\n* For example, if you attach a Plan to an Account where the Plan is configured for monthly billing frequency and you've defined the period the Plan will apply to the Account to be from January 1st, 2022 until January 1st, 2023. You then set a `billEpoch` date of February 15th, 2022. The first Bill will be created for the Account on February 15th, and subsequent Bills created on the 15th of the months following for the remainder of the billing period - March 15th, April 15th, and so on.\n* If not defined, then the `billEpoch` date set for the Account will be used instead.\n* The date is in ISO-8601 format.",
              "format" : "date"
            },
            "contractId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "The unique identifier (UUID) for a Contract to which you want to add the Plan or Plan Group being attached to the Account."
            },
            "childBillingMode" : {
              "description" : "If the Account is either a Parent or a Child Account, this specifies the Account hierarchy billing mode. The mode determines how billing will be handled and shown on bills for charges due on the Parent Account, and charges due on Child Accounts:\n\n* **Parent Breakdown** - a separate bill line item per Account. Default setting.\n\n* **Parent Summary** - single bill line item for all Accounts.\n\n* **Child** - the Child Account is billed.",
              "$ref" : "#/components/schemas/ChildBillingMode"
            }
          }
        } ]
      },
      "DataExportConfigurationResponseBase" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "The id of the Data Export Schedule."
          },
          "name" : {
            "type" : "string",
            "description" : "The name of the Data Export Schedule."
          },
          "code" : {
            "type" : "string",
            "description" : "Unique short code of the Data Export Schedule."
          },
          "sourceType" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/SourceType"
            }, {
              "type" : "object",
              "description" : "The type of data to export. Possible values: OPERATIONAL or USAGE."
            } ]
          },
          "destinationIds" : {
            "type" : "array",
            "description" : "The Export Destination ids.",
            "items" : {
              "type" : "string"
            }
          },
          "scheduleType" : {
            "description" : "The type of interval used for when Data Exports are run for the Schedule.",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ScheduleType"
            }, {
              "type" : "object",
              "description" : "The schedule type."
            } ]
          },
          "period" : {
            "type" : "integer",
            "description" : "Defines the Schedule frequency for the Data Export to run in Hours, Days, or Minutes. Used in conjunction with the `scheduleType` parameter.",
            "format" : "int32"
          },
          "offset" : {
            "type" : "integer",
            "description" : "Offset indicating starting point of the export within the configured scheduleType. For DAY, offset is in hours. For HOUR, offset is in minutes. Offset is not valid for MINUTE.",
            "format" : "int32"
          },
          "cronExpression" : {
            "type" : "string",
            "description" : "A cron expression (https://en.wikipedia.org/wiki/Cron) describing the frequency of the expression. Executions cannot be more frequent than every 15 minutes."
          },
          "exportFileFormat" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ExportFileFormat"
            }, {
              "type" : "object",
              "description" : "The export file format."
            } ]
          },
          "dtCreated" : {
            "type" : "string",
            "description" : "The DateTime when the Data Export Schedule was created.",
            "format" : "date-time"
          },
          "dtLastModified" : {
            "type" : "string",
            "description" : "The DateTime when the Schedule was last modified.",
            "format" : "date-time"
          },
          "createdBy" : {
            "type" : "string",
            "description" : "The id of the user who created this Schedule."
          },
          "lastModifiedBy" : {
            "type" : "string",
            "description" : "The id of the user who last modified this Data Export Schedule."
          }
        },
        "description" : "Base Response containing data export configuration",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        } ]
      },
      "ChargeLineItemType" : {
        "type" : "string",
        "description" : "Available line item types that can be used for billing a Charge.",
        "enum" : [ "BALANCE_FEE", "AD_HOC" ]
      },
      "IntegrationRunLogResponse" : {
        "type" : "object",
        "properties" : {
          "Payload" : {
            "type" : "string",
            "description" : "Base64 encoded log"
          }
        },
        "description" : "Response containing the log for an IntegrationRun entity"
      },
      "PaginatedLookupTableResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/LookupTableResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "IntegrationConfigResponse" : {
        "type" : "object",
        "description" : "Response containing a IntegrationConfigResponse entity.",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithAuditFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "required" : [ "destination", "entityType" ],
          "type" : "object",
          "properties" : {
            "entityType" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The type of entity the integration is for *(e.g. Bill)*.",
              "example" : "Bill"
            },
            "entityId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the entity this integration is for *(e.g. the ID of a notification configuration. Optional.)*",
              "example" : "00000000-0000-0000-0000-000000000000"
            },
            "destination" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The type of destination *(e.g. Netsuite, webhooks)*.",
              "example" : "Stripe"
            },
            "destinationId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the entity the integration is for.",
              "example" : "00000000-0000-0000-0000-000000000000"
            },
            "configData" : {
              "type" : "object",
              "description" : "The configuration data for the integration.",
              "allOf" : [ {
                "type" : "object",
                "additionalProperties" : true
              }, {
                "type" : "object",
                "description" : "Configuration data for the integration"
              } ]
            },
            "authorized" : {
              "type" : "boolean",
              "description" : "A flag indicating whether the integration configuration is authorized. \n\n* TRUE - authorized.\n* FALSE - not authorized."
            },
            "enabled" : {
              "type" : "boolean",
              "description" : "A flag indicating whether the integration configuration is currently enabled or disabled.\n\n* TRUE - enabled.\n* FALSE - disabled."
            },
            "triggerType" : {
              "description" : "Specifies the type of trigger for the integration. ",
              "deprecated" : true,
              "allOf" : [ {
                "$ref" : "#/components/schemas/TriggerType"
              } ]
            },
            "integrationCredentialsId" : {
              "type" : "string",
              "description" : "UUID of the credentials to use for this integration",
              "example" : "00000000-0000-0000-0000-000000000000"
            },
            "name" : {
              "type" : "string",
              "description" : "The name of the configuration",
              "example" : "My Integration"
            }
          },
          "description" : "Response containing a IntegrationConfigResponse entity"
        } ]
      },
      "IntegrationM3terSignedCredentialsResponse" : {
        "type" : "object",
        "properties" : {
          "apiKey" : {
            "type" : "string",
            "description" : "The API key provided by m3ter. This key is part of the credential set required for signing requests and authenticating with m3ter services.",
            "example" : "api key"
          },
          "secret" : {
            "type" : "string",
            "description" : "The secret associated with the API key. This secret is used in conjunction with the API key to generate a signature for secure authentication.",
            "example" : "api secret"
          }
        },
        "description" : "Response representing a set of credentials used for signing m3ter requests. ",
        "allOf" : [ {
          "$ref" : "#/components/schemas/IntegrationCredentialsResponse"
        }, {
          "$ref" : "#/components/schemas/AbstractResponseWithAuditFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        } ]
      },
      "AccountsResponse" : {
        "type" : "object",
        "properties" : {
          "accountCodes" : {
            "type" : "array",
            "description" : "A list of account codes.",
            "items" : {
              "type" : "string"
            }
          },
          "accounts" : {
            "type" : "array",
            "description" : "A list of accounts.",
            "items" : {
              "$ref" : "#/components/schemas/Account"
            }
          }
        },
        "description" : "Response containing accounts used for filtering bill queries."
      },
      "SortOrder" : {
        "type" : "string",
        "description" : "Specifies the sorting direction *(**ASC** for ascending or **DESC** for descending)*.",
        "enum" : [ "ASC", "DESC" ]
      },
      "SubmitMeasurementsRequest" : {
        "required" : [ "measurements" ],
        "type" : "object",
        "properties" : {
          "measurements" : {
            "maxItems" : 1000,
            "minItems" : 1,
            "type" : "array",
            "description" : "Request containing the usage data measurements for submission.",
            "items" : {
              "$ref" : "#/components/schemas/MeasurementRequest"
            },
            "x-size-message" : "Measurements cannot be blank"
          }
        },
        "description" : ""
      },
      "PaginatedEventResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/EventResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "PaginatedMarketplaceUsageReportResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/MarketplaceUsageReportResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "UrlDownloadResponse" : {
        "type" : "object",
        "properties" : {
          "jobId" : {
            "type" : "string",
            "description" : "UUID of the download job"
          },
          "url" : {
            "type" : "string",
            "description" : "The URL"
          },
          "headers" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            },
            "description" : "The headers"
          }
        },
        "description" : "It contains details for downloading a file"
      },
      "PermissionPolicyResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "name" : {
              "type" : "string",
              "description" : "The name of the Permission Policy."
            },
            "permissionPolicy" : {
              "type" : "array",
              "description" : "Array containing the Permission Policies information. ",
              "items" : {
                "$ref" : "#/components/schemas/PermissionStatement"
              }
            },
            "managedPolicy" : {
              "type" : "boolean",
              "description" : "Indicates whether this is a system generated Managed Permission Policy. "
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the Permission Policy was created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the Permission Policy was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who created this Permission Policy."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who last modified this Permission Policy."
            }
          }
        } ]
      },
      "AggregationResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractAggregationResponse"
        }, {
          "$ref" : "#/components/schemas/AbstractResponseWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "meterId" : {
              "type" : "string",
              "description" : "The UUID of the Meter used as the source of usage data for the Aggregation.\n\nEach Aggregation is a child of a Meter, so the Meter must be selected. "
            },
            "targetField" : {
              "type" : "string",
              "description" : "`Code` of the target `dataField` or `derivedField` on the Meter used as the basis for the Aggregation."
            },
            "aggregation" : {
              "description" : "Specifies the computation method applied to usage data collected in `targetField`. Aggregation unit value depends on the **Category** configured for the selected targetField.\n\nEnum: \n\n* **SUM**. Adds the values. Can be applied to a **Measure**, **Income**, or **Cost** `targetField`.\n\n* **MIN**. Uses the minimum value. Can be applied to a **Measure**, **Income**, or **Cost** `targetField`.\n\n* **MAX**. Uses the maximum value. Can be applied to a **Measure**, **Income**, or **Cost** `targetField`.\n\n* **COUNT**. Counts the number of values. Can be applied to a **Measure**, **Income**, or **Cost** `targetField`.\n\n* **LATEST**. Uses the most recent value. Can be applied to a **Measure**, **Income**, or **Cost** `targetField`. Note: Based on the timestamp (`ts`) value of usage data measurement submissions. If using this method, please ensure *distinct* `ts` values are used for usage data measurement submissions.\n\n* **MEAN**. Uses the arithmetic mean of the values. Can be applied to a **Measure**, **Income**, or **Cost** `targetField`.\n\n* **UNIQUE**. Uses unique values and returns a count of the number of unique values. Can be applied to a **Metadata** `targetField`.\n\n* **CUSTOM_SQL**. Uses an SQL query expression. The `customSQL` parameter is used for the SQL query.",
              "$ref" : "#/components/schemas/Aggregation"
            },
            "segmentedFields" : {
              "type" : "array",
              "description" : "*(Optional)*. Used when creating a segmented Aggregation, which segments the usage data collected by a single Meter. Works together with `segments`.\n\nThe `Codes` of the fields in the target Meter to use for segmentation purposes.\n\nString `dataFields` on the target Meter can be segmented. Any string `derivedFields` on the target Meter, such as one that concatenates two string `dataFields`, can also be segmented.",
              "items" : {
                "type" : "string"
              }
            },
            "defaultValue" : {
              "type" : "number",
              "description" : "Aggregation value used when no usage data is available to be aggregated. *(Optional)*.\n\n**Note:** Set to 0, if you expect to reference the Aggregation in a Compound Aggregation. This ensures that any null values are passed in correctly to the Compound Aggregation calculation with a value = 0."
            },
            "customSql" : {
              "type" : "string",
              "description" : "The SQL query expression to be used for a Custom SQL Aggregation."
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The DateTime when the aggregation was created *(in ISO 8601 format)*.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The DateTime when the aggregation was last modified *(in ISO 8601 format)*.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The id of the user who created this aggregation."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The id of the user who last modified this aggregation."
            }
          }
        } ]
      },
      "JobType" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "COPY", "UPLOAD", "DOWNLOAD", "ARCHIVE" ]
      },
      "CreditCoverage" : {
        "type" : "object",
        "properties" : {
          "lineItemId" : {
            "type" : "string",
            "description" : ""
          },
          "units" : {
            "type" : "number",
            "description" : ""
          },
          "lineItemAmount" : {
            "type" : "number",
            "description" : ""
          },
          "creditAmount" : {
            "type" : "number",
            "description" : ""
          },
          "billAmount" : {
            "type" : "number",
            "description" : ""
          }
        },
        "description" : ""
      },
      "MeterGroupResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "name" : {
              "type" : "string",
              "description" : ""
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The DateTime when the meter group was created *(in ISO-8601 format)*.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The DateTime when the meter group was last modified *(in ISO-8601 format)*.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The id of the user who created this meter group."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The id of the user who last modified this meter group."
            }
          }
        } ]
      },
      "DataExplorerFieldType" : {
        "type" : "string",
        "description" : "Type of field",
        "enum" : [ "DIMENSION", "MEASURE" ]
      },
      "PrincipalType" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "USER", "USERGROUP", "SERVICEUSER", "SUPPORTUSERS" ]
      },
      "DataExplorerAggregationFunction" : {
        "type" : "string",
        "description" : "Aggregation function",
        "enum" : [ "SUM", "MIN", "MAX", "COUNT", "LATEST", "MEAN", "UNIQUE" ]
      },
      "LineItemType" : {
        "type" : "string",
        "description" : "See [Bill Line Item Types](https://www.m3ter.com/docs/guides/running-viewing-and-managing-bills/bill-line-item-types) for more information.",
        "enum" : [ "STANDING_CHARGE", "USAGE", "COUNTER_RUNNING_TOTAL_CHARGE", "COUNTER_ADJUSTMENT_DEBIT", "COUNTER_ADJUSTMENT_CREDIT", "USAGE_CREDIT", "MINIMUM_SPEND", "MINIMUM_SPEND_REFUND", "CREDIT_DEDUCTION", "MANUAL_ADJUSTMENT", "CREDIT_MEMO", "DEBIT_MEMO", "COMMITMENT_CONSUMED", "COMMITMENT_FEE", "OVERAGE_SURCHARGE", "OVERAGE_USAGE", "BALANCE_CONSUMED", "BALANCE_FEE", "AD_HOC" ]
      },
      "Obligation" : {
        "type" : "object",
        "properties" : {
          "dateMonth" : {
            "type" : "string",
            "description" : ""
          },
          "obligations" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "number",
              "format" : "double"
            },
            "description" : ""
          }
        },
        "description" : ""
      },
      "AbstractAggregationRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequestWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "name", "quantityPerUnit", "rounding", "unit" ],
          "type" : "object",
          "properties" : {
            "version" : {
              "type" : "integer",
              "description" : "The version number of the Aggregation:\n- **Create entity:** Not valid for initial insertion of new Aggregation - *do not use for Create*. On initial Create, version is set at 1 and listed in the response.\n- **Update Entity:**  On Update, version is required and must match the existing version because a check is performed to ensure sequential versioning is preserved. Version is incremented by 1 and listed in the response.",
              "format" : "int64"
            },
            "name" : {
              "maxLength" : 200,
              "minLength" : 1,
              "type" : "string",
              "description" : "Descriptive name for the Aggregation."
            },
            "rounding" : {
              "description" : "Specifies how you want to deal with non-integer, fractional number Aggregation values.\n\n**NOTES:**\n* **NONE** is default.\n* **NEAREST** rounds to the nearest half: 5.1 is rounded to 5, and 3.5 is rounded to 4.\n* Also used in combination with `quantityPerUnit`. Rounds the number of units after `quantityPerUnit` is applied. If you set `quantityPerUnit` to a value other than one, you would typically set Rounding to **UP**. For example, suppose you charge by kilobytes per second (KiBy/s), set `quantityPerUnit` = 500, and set charge rate at $0.25 per unit used. If your customer used 48,900 KiBy/s in a billing period, the charge would be 48,900 / 500 = 97.8 rounded up to 98 * 0.25 = $2.45.\n\n ",
              "$ref" : "#/components/schemas/Rounding"
            },
            "quantityPerUnit" : {
              "minimum" : 0,
              "exclusiveMinimum" : true,
              "type" : "number",
              "description" : "Defines how much of a quantity equates to 1 unit. Used when setting the price per unit for billing purposes - if charging for kilobytes per second (KiBy/s) at rate of $0.25 per 500 KiBy/s, then set quantityPerUnit to 500 and price Plan at $0.25 per unit.\n\n**Note:** If `quantityPerUnit` is set to a value other than one, `rounding` is typically set to `\"UP\"`."
            },
            "unit" : {
              "maxLength" : 50,
              "minLength" : 1,
              "type" : "string",
              "description" : "User defined label for units shown for Bill line items, indicating to your customers what they are being charged for."
            },
            "code" : {
              "maxLength" : 80,
              "pattern" : "^[\\p{L}_$][\\p{L}_$0-9]*$",
              "type" : "string",
              "description" : "Code of the new Aggregation. A unique short code to identify the Aggregation.",
              "example" : "example_code"
            },
            "accountingProductId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "Optional Product ID this Aggregation should be attributed to for accounting purposes."
            }
          }
        } ]
      },
      "DestinationResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithAuditFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "name" : {
              "type" : "string",
              "description" : ""
            },
            "description" : {
              "type" : "string",
              "description" : ""
            },
            "code" : {
              "type" : "string",
              "description" : ""
            },
            "active" : {
              "type" : "boolean",
              "description" : ""
            }
          },
          "description" : "Response containing a Destination"
        } ]
      },
      "PermissionPolicyRequest" : {
        "required" : [ "name", "permissionPolicy" ],
        "type" : "object",
        "properties" : {
          "version" : {
            "type" : "integer",
            "description" : "The version number of the entity:\n* **Create entity:** Not valid for initial insertion of new entity - do not use for Create. On initial Create, version is set at 1 and listed in the response.\n* **Update Entity:** On Update, version is required and must match the existing version because a check is performed to ensure sequential versioning is preserved. Version is incremented by 1 and listed in the response.\n\n",
            "format" : "int64"
          },
          "name" : {
            "maxLength" : 100,
            "minLength" : 1,
            "type" : "string",
            "description" : ""
          },
          "permissionPolicy" : {
            "minItems" : 1,
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/PermissionStatement"
            }
          }
        },
        "description" : ""
      },
      "BalanceChargeScheduleResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "required" : [ "chargeDescription" ],
          "type" : "object",
          "properties" : {
            "balanceId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the Balance this Balance Charge Schedule was created for."
            },
            "name" : {
              "type" : "string",
              "description" : "The name of the Balance Charge Schedule."
            },
            "code" : {
              "type" : "string",
              "description" : "Unique short code for the Balance Charge Schedule."
            },
            "amount" : {
              "type" : "number",
              "description" : "The amount of each Charge created by the Balance Charge Schedule."
            },
            "units" : {
              "type" : "number",
              "description" : "Number of units. If the Charge was created with `amount` only, then will be null."
            },
            "unitPrice" : {
              "type" : "number",
              "description" : "Unit price. If the Charge was created with `amount` only, then will be null."
            },
            "currency" : {
              "type" : "string",
              "description" : "The currency of the Charges created by the Balance Charge Schedule."
            },
            "servicePeriodStartDate" : {
              "type" : "string",
              "description" : "The service period start date (*in ISO-8601 format*) of the Balance Charge Schedule.",
              "format" : "date-time"
            },
            "servicePeriodEndDate" : {
              "type" : "string",
              "description" : "The service period end date (*in ISO-8601 format*) of the Balance Charge Schedule.",
              "format" : "date-time"
            },
            "billEpoch" : {
              "type" : "string",
              "description" : "Specifies a billing cycle date (*in ISO-8601 format*) for when the first Bill is generated for Balance Charges created by the Schedule, and also acts as a reference for when in the Schedule period subsequent Bills are created for the defined `billFrequency`. If blank, then the relevant Epoch date from your Organization's configuration is used.",
              "format" : "date"
            },
            "billFrequency" : {
              "description" : "Specifies when Bills for Charges created by the Schedule are generated for the Account - at either daily, weekly, monthly, or yearly intervals.",
              "allOf" : [ {
                "$ref" : "#/components/schemas/ScheduleFrequency"
              }, {
                "type" : "object",
                "description" : "The period length of the Scheduled Balance Charge"
              } ]
            },
            "billFrequencyInterval" : {
              "type" : "integer",
              "description" : "How often Bills are issued. For example, if billFrequency is `MONTHLY` and `billFrequencyInterval` is 3, Bills are issued every three months.",
              "format" : "int32"
            },
            "billInAdvance" : {
              "type" : "boolean",
              "description" : "Specifies how Charges created by the Balance Charge Schedule are billed - either in arrears or in advance:\n* If `false` then billing is in arrears.\n* If `true` then billing is in advance."
            },
            "chargeDescription" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The description for Charges created by the Balance Charge Schedule. Used on Bills for Charge line items. "
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The date and time (*in ISO-8601 format*) when the Balance Charge Schedule was created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The date and time (*in ISO-8601 format*) when the Balance Charge Schedule was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who created the Balance Charge Schedule."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the user who last modified the Balance Charge Schedule."
            },
            "nextRun" : {
              "type" : "string",
              "description" : "The date and time (*in ISO-8601 format*) when the next Charge will be created by the Balance Charge Schedule.",
              "format" : "date-time"
            },
            "previousRun" : {
              "type" : "string",
              "description" : "The date and time (*in ISO-8601 format*) when the previous Charge was generated by the Balance Charge Schedule.",
              "format" : "date-time"
            }
          }
        } ]
      },
      "Measure" : {
        "type" : "object",
        "properties" : {
          "meterId" : {
            "type" : "string",
            "description" : "The unique identifier (UUID) of the Meter containing this Measure."
          },
          "name" : {
            "type" : "string",
            "description" : "The name of a Measure data field *(or blank to indicate a wildcard, i.e. all fields)*. Default value is blank."
          },
          "aggregations" : {
            "maxItems" : 7,
            "type" : "array",
            "description" : "A list of Aggregations to apply to the Measure.",
            "items" : {
              "$ref" : "#/components/schemas/Aggregation"
            }
          }
        },
        "description" : ""
      },
      "OrgUserRequest" : {
        "type" : "object",
        "properties" : {
          "version" : {
            "type" : "integer",
            "description" : "The version number of the entity:\n\n- **Newly created entity:** On initial Create, version is set at 1 and listed in the response.\n- **Update Entity:** On Update, version is required and must match the existing version because a check is performed to ensure sequential versioning is preserved. Version is incremented by 1 and listed in the response.\n",
            "format" : "int64"
          },
          "permissionPolicy" : {
            "type" : "array",
            "description" : "An array of permission statements for the user. Each permission statement defines a specific permission for the user.\n\nSee [Understanding, Creating, and Managing Permission Policies](https://www.m3ter.com/docs/guides/organization-and-access-management/creating-and-managing-permissions) for more information.",
            "items" : {
              "$ref" : "#/components/schemas/PermissionStatement"
            }
          },
          "dtEndAccess" : {
            "type" : "string",
            "description" : "The date and time *(in ISO 8601 format)* when the user's access will end. Use this to set or update the expiration of the user's access.",
            "format" : "date-time"
          }
        },
        "description" : ""
      },
      "PaginatedStatementJobResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/StatementJobResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "DebitReasonResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractPickListResponse"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "dtCreated" : {
              "type" : "string",
              "description" : "The DateTime when the debit reason was created *(in ISO-8601 format)*.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The DateTime when the debit reason was last modified *(in ISO-8601 format)*.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The id of the user who created this debit reason."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The id of the user who last modified this debit reason."
            }
          }
        } ]
      },
      "TriggerType" : {
        "type" : "string",
        "description" : "Specifies the type of trigger for the integration. ",
        "enum" : [ "EVENT", "SCHEDULE" ]
      },
      "AbstractPickListResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "code" : {
              "type" : "string",
              "description" : "The short code of the data entity."
            },
            "name" : {
              "type" : "string",
              "description" : "The name of the data entity."
            },
            "archived" : {
              "type" : "boolean",
              "description" : "TRUE / FALSE flag indicating whether the data entity is archived. An entity can be archived if it is obsolete."
            }
          }
        } ]
      },
      "DwMeter" : {
        "type" : "object",
        "properties" : {
          "meterCode" : {
            "type" : "string",
            "description" : "The code of a Meter"
          },
          "meterName" : {
            "type" : "string",
            "description" : "The name of a Meter"
          },
          "measures" : {
            "type" : "array",
            "description" : "Measures associated with the Meter",
            "items" : {
              "$ref" : "#/components/schemas/DataFieldMeasure"
            }
          },
          "dimensions" : {
            "type" : "array",
            "description" : "Dimensions associated with the Meter",
            "items" : {
              "$ref" : "#/components/schemas/Dimension"
            }
          }
        },
        "description" : "A Meter from the Data Warehouse"
      },
      "OperationalDataExportConfigurationRequest" : {
        "required" : [ "operationalDataTypes", "sourceType" ],
        "type" : "object",
        "properties" : {
          "sourceType" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/SourceType"
            }, {
              "type" : "object",
              "description" : "The type of data to export. Possible values are: OPERATIONAL, USAGE."
            } ]
          },
          "operationalDataTypes" : {
            "minItems" : 1,
            "type" : "array",
            "description" : "A list of the entities whose operational data is included in the data export.",
            "items" : {
              "$ref" : "#/components/schemas/OperationalDataType"
            }
          }
        },
        "description" : "Request representing an operational schedule configuration.",
        "allOf" : [ {
          "$ref" : "#/components/schemas/DataExportConfigurationRequestBase"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "CustomFieldResponse" : {
        "type" : "object",
        "description" : "",
        "example" : {
          "id" : "81c49a54-dfcd-4da5-bbf3-d2885ec025dd",
          "version" : 4,
          "organization" : {
            "Org Example 2" : "Sample text 2.",
            "Org Example 1" : "Sample text. "
          },
          "product" : {
            "Product CF Example" : 42
          },
          "account" : { },
          "accountPlan" : {
            "New CF Test" : "Test Value"
          },
          "meter" : { },
          "planTemplate" : { },
          "plan" : { },
          "aggregation" : { },
          "compoundAggregation" : { }
        },
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "organization" : {
              "type" : "object",
              "additionalProperties" : true,
              "description" : "CustomFields added to the Organization. "
            },
            "account" : {
              "type" : "object",
              "additionalProperties" : true,
              "description" : "CustomFields added to Account entities. "
            },
            "accountPlan" : {
              "type" : "object",
              "additionalProperties" : true,
              "description" : "CustomFields added to accountPlan entities. "
            },
            "meter" : {
              "type" : "object",
              "additionalProperties" : true,
              "description" : "CustomFields added to Meter entities. "
            },
            "product" : {
              "type" : "object",
              "additionalProperties" : true,
              "description" : "CustomFields added to Product entities. "
            },
            "planTemplate" : {
              "type" : "object",
              "additionalProperties" : true,
              "description" : "CustomFields added to planTemplate entities. "
            },
            "plan" : {
              "type" : "object",
              "additionalProperties" : true,
              "description" : "CustomFields added to Plan entities. "
            },
            "aggregation" : {
              "type" : "object",
              "additionalProperties" : true,
              "description" : "CustomFields added to simple Aggregation entities. "
            },
            "compoundAggregation" : {
              "type" : "object",
              "additionalProperties" : true,
              "description" : "CustomFields added to Compound Aggregation entities. "
            },
            "contract" : {
              "type" : "object",
              "additionalProperties" : true,
              "description" : "CustomFields added to Contract entities."
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The DateTime when the Organization was created *(in ISO-8601 format)*.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The DateTime when a custom field was last modified - created, modified, or deleted - for the Organization *(in ISO-8601 format)*.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The id of the user who created this custom field."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The id of the user who last modified this custom field."
            }
          }
        } ]
      },
      "GrantDrawdown" : {
        "type" : "object",
        "properties" : {
          "balanceId" : {
            "type" : "string",
            "description" : ""
          },
          "quantity" : {
            "type" : "number",
            "description" : ""
          },
          "units" : {
            "type" : "number",
            "description" : ""
          },
          "currencyAmount" : {
            "type" : "number",
            "description" : ""
          }
        },
        "description" : ""
      },
      "DimensionQuery" : {
        "required" : [ "filter", "name" ],
        "type" : "object",
        "properties" : {
          "name" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "The Dimension name to target."
          },
          "attributes" : {
            "type" : "array",
            "description" : "The dimension attribute to target",
            "items" : {
              "type" : "string"
            }
          },
          "filter" : {
            "minItems" : 1,
            "type" : "array",
            "description" : "The value of a dimension to filter by. Use \"*\" to filter on all dimension values.",
            "items" : {
              "type" : "string"
            }
          }
        },
        "description" : "Dimension of a Meter used as a filter."
      },
      "CounterAdjustmentResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithAuditFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "counterId" : {
              "type" : "string",
              "description" : "The ID of the Counter that was used to make the CounterAdjustment on the Account."
            },
            "accountId" : {
              "type" : "string",
              "description" : "The Account ID the CounterAdjustment was created for."
            },
            "date" : {
              "type" : "string",
              "description" : "The date the CounterAdjustment was created for the Account *(in ISO-8601 date format)*.",
              "format" : "date"
            },
            "value" : {
              "type" : "integer",
              "description" : "Integer Value of the Counter that was used to make the CounterAdjustment.",
              "format" : "int32"
            },
            "purchaseOrderNumber" : {
              "type" : "string",
              "description" : "Purchase Order Number for the Counter Adjustment. *(Optional)*"
            }
          }
        } ]
      },
      "BillConfigResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "billLockDate" : {
              "type" : "string",
              "description" : "The global lock date *(in ISO 8601 format)* when all Bills will be locked.\n\nFor example: `\"2024-03-01\"`.",
              "format" : "date"
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The DateTime *(in ISO-8601 format)* when the bill config was first created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The DateTime *(in ISO-8601 format)* when the bill config was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The id of the user who created this bill config."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The id of the user who last modified this bill config."
            }
          }
        } ]
      },
      "PaginatedBalanceChargeScheduleResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/BalanceChargeScheduleResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "StatementDefinitionRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "aggregationFrequency" ],
          "type" : "object",
          "properties" : {
            "name" : {
              "type" : "string",
              "description" : "Descriptive name for the StatementDefinition providing context and information."
            },
            "aggregationFrequency" : {
              "description" : "This specifies how often the Statement should aggregate data.",
              "$ref" : "#/components/schemas/AggregationFrequency"
            },
            "includePricePerUnit" : {
              "type" : "boolean",
              "description" : "A Boolean indicating whether to include the price per unit in the Statement.\n\n* TRUE - includes the price per unit.\n* FALSE - excludes the price per unit."
            },
            "dimensions" : {
              "type" : "array",
              "description" : "An array of objects, each representing a Dimension data field from a Meter *(for Meters that have Dimensions setup)*.",
              "items" : {
                "$ref" : "#/components/schemas/Dimension"
              }
            },
            "measures" : {
              "type" : "array",
              "description" : "An array of objects, each representing a Measure data field from a Meter.",
              "items" : {
                "$ref" : "#/components/schemas/Measure"
              }
            },
            "generateSlimStatements" : {
              "type" : "boolean",
              "description" : ""
            }
          }
        } ]
      },
      "LookupTableDataJobStatus" : {
        "type" : "string",
        "description" : "The status of a job",
        "enum" : [ "PENDING", "FAILED", "SUCCEEDED" ]
      },
      "BillLineItem" : {
        "required" : [ "averageUnitPrice", "conversionRate", "convertedSubtotal", "currency", "description", "lineItemType", "quantity", "subtotal", "unit", "units" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "The UUID for the line item."
          },
          "productId" : {
            "type" : "string",
            "description" : "The UUID of the Product for the line item."
          },
          "productName" : {
            "type" : "string",
            "description" : "The name of the Product for the line item. "
          },
          "productCode" : {
            "type" : "string",
            "description" : ""
          },
          "accountingProductId" : {
            "type" : "string",
            "description" : ""
          },
          "accountingProductName" : {
            "type" : "string",
            "description" : ""
          },
          "accountingProductCode" : {
            "type" : "string",
            "description" : ""
          },
          "aggregationId" : {
            "type" : "string",
            "description" : "The Aggregation ID used for the line item. "
          },
          "compoundAggregationId" : {
            "type" : "string",
            "description" : "The Compound Aggregation ID for the line item if a Compound Aggregation has been used. "
          },
          "counterId" : {
            "type" : "string",
            "description" : ""
          },
          "chargeId" : {
            "type" : "string",
            "description" : ""
          },
          "segment" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            },
            "description" : "Applies only when segmented Aggregations have been used. The Segment to which the usage data in this line item belongs. "
          },
          "group" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            },
            "description" : ""
          },
          "meterId" : {
            "type" : "string",
            "description" : "The UUID of the Meter used in the line item. "
          },
          "planId" : {
            "type" : "string",
            "description" : "The ID of the Plan used for the line item. "
          },
          "planGroupId" : {
            "type" : "string",
            "description" : "The UUID of the PlanGroup, provided the line item used a PlanGroup. "
          },
          "commitmentId" : {
            "type" : "string",
            "description" : "If Commitments *(prepayments)* are used in the line item, this shows the Commitment UUID."
          },
          "balanceId" : {
            "type" : "string",
            "description" : ""
          },
          "description" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "Line item description. "
          },
          "quantity" : {
            "type" : "number",
            "description" : "The amount of usage for the line item. "
          },
          "units" : {
            "type" : "number",
            "description" : "The number of units used for the line item. "
          },
          "unit" : {
            "type" : "string",
            "description" : "The unit for the usage data in thie line item. For example: **GB** of disk storage space."
          },
          "subtotal" : {
            "type" : "number",
            "description" : "The subtotal amount for the line item, before any currency conversions. "
          },
          "currency" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "The currency code for the currency used in the line item. For example: USD, GBP, or EUR."
          },
          "conversionRate" : {
            "type" : "number",
            "description" : "The currency conversion rate if currency conversion is required for the line item. "
          },
          "convertedSubtotal" : {
            "type" : "number",
            "description" : "The converted subtotal amount if currency conversions have been used."
          },
          "creditTypeId" : {
            "type" : "string",
            "description" : ""
          },
          "lineItemType" : {
            "description" : "",
            "$ref" : "#/components/schemas/LineItemType"
          },
          "pricingId" : {
            "type" : "string",
            "description" : "The UUID of the Pricing used on the line item. "
          },
          "childAccountId" : {
            "type" : "string",
            "description" : "If part of a Parent/Child account billing hierarchy, this is the child Account UUID."
          },
          "childAccountCode" : {
            "type" : "string",
            "description" : "If part of a Parent/Child account billing hierarchy, this is the code for the child Account. "
          },
          "usagePerPricingBand" : {
            "type" : "array",
            "description" : "Shows the usage by pricing band for tiered pricing structures. ",
            "items" : {
              "$ref" : "#/components/schemas/BillLineItemPricingBandUsage"
            }
          },
          "servicePeriodStartDate" : {
            "type" : "string",
            "description" : "The starting date *(inclusive)* for the service period *(in ISO 8601 format)*. ",
            "format" : "date-time"
          },
          "servicePeriodEndDate" : {
            "type" : "string",
            "description" : "The ending date *(exclusive)* for the service period *(in ISO 8601 format)*. ",
            "format" : "date-time"
          },
          "referencedBillId" : {
            "type" : "string",
            "description" : ""
          },
          "referencedLineItemId" : {
            "type" : "string",
            "description" : ""
          },
          "reasonId" : {
            "type" : "string",
            "description" : ""
          },
          "contractId" : {
            "type" : "string",
            "description" : "The UUID for the Contract used in the line item."
          },
          "averageUnitPrice" : {
            "type" : "number",
            "description" : "The average unit price across all tiers / pricing bands. "
          },
          "sequenceNumber" : {
            "type" : "integer",
            "description" : "The number used for sequential invoices. ",
            "format" : "int32"
          },
          "additional" : {
            "type" : "object",
            "additionalProperties" : true,
            "description" : ""
          },
          "grantDrawdowns" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/GrantDrawdown"
            }
          },
          "balanceDrawdowns" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/BalanceDrawdown"
            }
          },
          "commitmentDrawdowns" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/CommitmentDrawdown"
            }
          },
          "creditCoverage" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/CreditCoverage"
            }
          }
        },
        "description" : ""
      },
      "LookupTableDataDownloadJobRequest" : {
        "required" : [ "contentType" ],
        "type" : "object",
        "properties" : {
          "contentType" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ContentType"
            }, {
              "type" : "object",
              "enum" : [ "application/jsonl", "text/csv" ]
            } ],
            "x-not-null-message" : "The content type cannot be blank"
          }
        },
        "description" : "Request containing the file details when triggering a download job"
      },
      "AbstractList_ConfigSetting_" : {
        "$ref" : "#/components/schemas/AbstractCollection_ConfigSetting_"
      },
      "AbstractCollection_ConfigSetting_" : {
        "type" : "object",
        "properties" : {
          "empty" : {
            "type" : "boolean",
            "description" : ""
          }
        },
        "description" : ""
      },
      "DimensionValue" : {
        "type" : "object",
        "properties" : {
          "dimensionAttribute" : {
            "type" : "string",
            "description" : "The attribute of a DimensionQuery"
          },
          "dimensionValue" : {
            "type" : "string",
            "description" : "The value of a DimensionQuery"
          }
        },
        "description" : "A dimension and its value."
      },
      "PaginatedAccountPlanResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/AccountPlanResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "DownloadDataExplorerResponse" : {
        "type" : "object",
        "properties" : {
          "downloadUrl" : {
            "type" : "string",
            "description" : "",
            "format" : "url"
          }
        },
        "description" : "Download link for Data Explorer data"
      },
      "DataExplorerDimensionGroup_1" : {
        "type" : "string",
        "description" : "Type of group",
        "discriminator" : {
          "propertyName" : "groupType",
          "mapping" : {
            "ACCOUNT" : "#/components/schemas/DataExplorerAccountGroup",
            "DIMENSION" : "#/components/schemas/DataExplorerDimensionGroup",
            "TIME" : "#/components/schemas/DataExplorerTimeGroup"
          }
        },
        "enum" : [ "ACCOUNT", "DIMENSION", "TIME" ]
      },
      "QueryBillDataRequest" : {
        "required" : [ "endDate", "lineItemTypes", "startDate" ],
        "type" : "object",
        "properties" : {
          "startDate" : {
            "type" : "string",
            "description" : "ISO 8601 formatted start date for the aggregation.",
            "format" : "date-time"
          },
          "endDate" : {
            "type" : "string",
            "description" : "ISO 8601 formatted end date for the aggregation.",
            "format" : "date-time"
          },
          "dimensions" : {
            "maxItems" : 100,
            "type" : "array",
            "description" : "Dimensions to filter by. Valid dimensions include 'account' and 'product name'",
            "items" : {
              "$ref" : "#/components/schemas/DimensionQuery"
            }
          },
          "lineItemTypes" : {
            "minItems" : 1,
            "type" : "array",
            "description" : "Line item types to query for.",
            "items" : {
              "$ref" : "#/components/schemas/LineItemType"
            }
          },
          "limit" : {
            "maximum" : 2000,
            "minimum" : 1,
            "type" : "integer",
            "description" : "Limit the number of data points returned",
            "format" : "int32"
          }
        },
        "description" : "Data Explorer Bill data query.",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "DataExplorerUsageDataFrequency" : {
        "type" : "string",
        "description" : "Frequency of usage data",
        "enum" : [ "DAY", "HOUR", "WEEK", "MONTH", "QUARTER" ]
      },
      "UsageQueryResponse" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "type" : "object",
              "additionalProperties" : {
                "type" : "object"
              }
            }
          },
          "hasMoreData" : {
            "type" : "boolean",
            "description" : "Boolean flag to indicate whether or not there are more data available for the query than are returned:\n* If there are more data, then TRUE.\n* If there are no more data, then FALSE.\n\n**NOTES:**\n* The limit on the size of the return is 20000 data items. If the query returns more than this limit, only 20000 items are returned with most recent first and `hasMoreData` will be TRUE.\n* If you have set `limit` in your query request at fewer than the number returned by the query, then `hasMoreData` will be TRUE in the response.\n\n"
          }
        },
        "description" : ""
      },
      "BillJobRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "type" : "object",
          "properties" : {
            "lastDateInBillingPeriod" : {
              "type" : "string",
              "description" : "Specifies the date *(in ISO 8601 format)* of the last day in the billing period, defining the time range for the associated Bills.\n\nFor example: `\"2023-03-24\"`.",
              "format" : "date"
            },
            "billingFrequency" : {
              "description" : "How often Bills are generated.\n\n* **Daily**. Starting at midnight each day, covering a twenty-four hour period following.\n\n* **Weekly**. Starting at midnight on a Monday morning covering the seven-day period following.\n\n* **Monthly**. Starting at midnight on the morning of the first day of each month covering the entire calendar month following.\n\n* **Annually**. Starting at midnight on the morning of the first day of each year covering the entire calendar year following.\n\n* **Ad_Hoc**. Use this setting when a custom billing schedule is used for billing an Account, such as for billing of Prepayment/Commitment fees using a custom billing schedule.\n",
              "$ref" : "#/components/schemas/BillJobBillingFrequency"
            },
            "billFrequencyInterval" : {
              "type" : "integer",
              "description" : "How often Bills are issued - used in conjunction with `billingFrequency`.\n\nFor example, if `billingFrequency` is set to Monthly and `billFrequencyInterval` is set to 3, Bills are issued every three months.",
              "format" : "int32"
            },
            "billDate" : {
              "type" : "string",
              "description" : "The specific billing date *(in ISO 8601 format)*, determining when the Bill was generated.\n\nFor example: `\"2023-01-24\"`.",
              "format" : "date"
            },
            "externalInvoiceDate" : {
              "type" : "string",
              "description" : "For accounting purposes, the date set at Organization level to use for external invoicing with respect to billing periods - two options:\n* `FIRST_DAY_OF_NEXT_PERIOD` *(Default)*. Used when you want to recognize usage revenue in the following period.\n* `LAST_DAY_OF_ARREARS`. Used when you want to recognize usage revenue in the same period that it's consumed, instead of in the following period.\n\nFor example, if the retrieved Bill was on a monthly billing frequency and the billing period for the Bill is September 2023 and the *External invoice date* is set at `FIRST_DAY_OF_NEXT_PERIOD`, then the `externalInvoiceDate` will be `\"2023-10-01\"`.\n\n**NOTE:** To change the `externalInvoiceDate` setting for your Organization, you can use the [Update OrganizationConfig](https://www.m3ter.com/docs/api#tag/OrganizationConfig/operation/GetOrganizationConfig) call.",
              "format" : "date"
            },
            "dueDate" : {
              "type" : "string",
              "description" : "The due date *(in ISO 8601 format)* for payment of the Bill.\n\nFor example: `\"2023-02-24\"`.",
              "format" : "date"
            },
            "accountIds" : {
              "maxItems" : 100,
              "minItems" : 1,
              "type" : "array",
              "description" : "An array of UUIDs representing the end customer Accounts associated with the BillJob.",
              "items" : {
                "type" : "string"
              }
            },
            "targetCurrency" : {
              "maxLength" : 3,
              "minLength" : 3,
              "type" : "string",
              "description" : "The currency code used for the Bill, such as USD, GBP, or EUR."
            },
            "currencyConversions" : {
              "maxItems" : 250,
              "type" : "array",
              "description" : "An array of currency conversion rates from Bill currency to Organization currency. For example, if Account is billed in GBP and Organization is set to USD, Bill line items are calculated in GBP and then converted to USD using the defined rate.",
              "items" : {
                "$ref" : "#/components/schemas/CurrencyConversion"
              }
            },
            "timezone" : {
              "type" : "string",
              "description" : "Specifies the time zone used for the generated Bills, ensuring alignment with the local time zone.",
              "example" : "UTC",
              "default" : "UTC"
            },
            "yearEpoch" : {
              "type" : "string",
              "description" : "The starting date *(epoch)* for Yearly billing frequency *(in ISO 8601 format)*, determining the first Bill date for yearly Bills.",
              "format" : "date"
            },
            "monthEpoch" : {
              "type" : "string",
              "description" : "The starting date *(epoch)* for Monthly billing frequency *(in ISO 8601 format)*, determining the first Bill date for monthly Bills.",
              "format" : "date"
            },
            "weekEpoch" : {
              "type" : "string",
              "description" : "The starting date *(epoch)* for Weekly billing frequency *(in ISO 8601 format)*, determining the first Bill date for weekly Bills.",
              "format" : "date"
            },
            "dayEpoch" : {
              "type" : "string",
              "description" : "The starting date *(epoch)* for Daily billing frequency *(in ISO 8601 format)*, determining the first Bill date for daily Bills.",
              "format" : "date"
            }
          }
        } ]
      },
      "AbstractResponse" : {
        "required" : [ "id" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "The UUID of the entity. "
          },
          "version" : {
            "type" : "integer",
            "description" : "The version number:\n- **Create:** On initial Create to insert a new entity, the version is set at 1 in the response.\n- **Update:** On successful Update, the version is incremented by 1 in the response.",
            "format" : "int64",
            "x-stainless-terraform-configurability" : "computed",
            "x-stainless-terraform-always-send" : true
          }
        },
        "description" : ""
      },
      "CounterPricingResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/BasePricingResponseWithPricingBands"
        }, {
          "$ref" : "#/components/schemas/BasePricingResponse"
        }, {
          "$ref" : "#/components/schemas/AbstractResponseWithAuditFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "counterId" : {
              "type" : "string",
              "description" : "UUID of the Counter used to create the pricing."
            },
            "runningTotalBillInAdvance" : {
              "type" : "boolean",
              "description" : "The default value is **TRUE**.\n\n* When TRUE, running totals are billed at the start of each billing period.\n\n* When FALSE, running totals are billed at the end of each billing period."
            },
            "proRateRunningTotal" : {
              "type" : "boolean",
              "description" : "The default value is **TRUE**.\n\n* When TRUE, counter running total charges are prorated and are billed according to the number of days in billing period.\n\n* When FALSE, counter running total charges are not prorated and are billed for the entire billing period."
            },
            "proRateAdjustmentDebit" : {
              "type" : "boolean",
              "description" : "The default value is **TRUE**.\n\n* When TRUE, counter adjustment debits are prorated and are billed according to the number of days in billing period.\n\n* When FALSE, counter adjustment debits are not prorated and are billed for the entire billing period."
            },
            "proRateAdjustmentCredit" : {
              "type" : "boolean",
              "description" : "The default value is **TRUE**.\n\n* When TRUE, counter adjustment credits are prorated and are billed according to the number of days in billing period.\n\n* When FALSE, counter adjustment credits are not prorated and are billed for the entire billing period."
            }
          }
        } ]
      },
      "PlanResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "planTemplateId" : {
              "type" : "string",
              "description" : "UUID of the PlanTemplate the Plan belongs to. "
            },
            "productId" : {
              "type" : "string",
              "description" : "UUID of the Product the Plan belongs to. "
            },
            "name" : {
              "type" : "string",
              "description" : "Descriptive name for the Plan."
            },
            "code" : {
              "type" : "string",
              "description" : "Unique short code reference for the Plan."
            },
            "standingCharge" : {
              "type" : "number",
              "description" : "The standing charge applied to bills for end customers. This is prorated.\n\n*(Optional)*. Overrides PlanTemplate value.",
              "format" : "double"
            },
            "standingChargeDescription" : {
              "type" : "string",
              "description" : "Standing charge description *(displayed on the bill line item)*."
            },
            "ordinal" : {
              "type" : "integer",
              "description" : "Assigns a rank or position to the Plan in your order of pricing plans - lower numbers represent more basic pricing plans; higher numbers represent more premium pricing plans.\n\n*(Optional)*. Overrides PlanTemplate value.\n\n**NOTE:** **DEPRECATED** - no longer used.",
              "format" : "int64"
            },
            "bespoke" : {
              "type" : "boolean",
              "description" : "TRUE/FALSE flag indicating whether the Plan is custom/bespoke for a particular Account."
            },
            "minimumSpend" : {
              "type" : "number",
              "description" : "The product minimum spend amount per billing cycle for end customer Accounts on a priced Plan.\n\n*(Optional)*. Overrides PlanTemplate value.",
              "format" : "double"
            },
            "minimumSpendDescription" : {
              "type" : "string",
              "description" : "Minimum spend description *(displayed on the bill line item)*."
            },
            "standingChargeBillInAdvance" : {
              "type" : "boolean",
              "description" : "When **TRUE**, standing charge is billed at the start of each billing period.\n\nWhen **FALSE**, standing charge is billed at the end of each billing period.\n\n*(Optional)*. Overrides the setting at PlanTemplate level for standing charge billing in arrears/in advance."
            },
            "minimumSpendBillInAdvance" : {
              "type" : "boolean",
              "description" : "When **TRUE**, minimum spend is billed at the start of each billing period.\n\nWhen **FALSE**, minimum spend is billed at the end of each billing period.\n\n*(Optional)*. Overrides the setting at PlanTemplate level for minimum spend billing in arrears/in advance."
            },
            "minimumSpendAccountingProductId" : {
              "type" : "string",
              "description" : "Optional Product ID this Plan's minimum spend should be attributed to for accounting purposes."
            },
            "standingChargeAccountingProductId" : {
              "type" : "string",
              "description" : "Optional Product ID this Plan's standing charge should be attributed to for accounting purposes."
            },
            "accountId" : {
              "type" : "string",
              "description" : "*(Optional)*. The Account ID for which this Plan was created as custom/bespoke. A custom/bespoke Plan can only be attached to the specified Account."
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The DateTime *(in ISO-8601 format)* when the Plan was created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The DateTime *(in ISO-8601 format)* when the Plan was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The id of the user who created this plan."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The id of the user who last modified this Plan."
            }
          }
        } ]
      },
      "AggregationRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractAggregationRequest"
        }, {
          "$ref" : "#/components/schemas/AbstractRequestWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "aggregation", "meterId", "targetField" ],
          "type" : "object",
          "properties" : {
            "version" : {
              "type" : "integer",
              "description" : "The version number of the entity:\n- **Create entity:** Not valid for initial insertion of new entity - *do not use for Create*. On initial Create, version is set at 1 and listed in the response.\n- **Update Entity:**  On Update, version is required and must match the existing version because a check is performed to ensure sequential versioning is preserved. Version is incremented by 1 and listed in the response.",
              "format" : "int64"
            },
            "meterId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "The UUID of the Meter used as the source of usage data for the Aggregation.\n\nEach Aggregation is a child of a Meter, so the Meter must be selected.  "
            },
            "targetField" : {
              "maxLength" : 80,
              "minLength" : 1,
              "type" : "string",
              "description" : "`Code` of the target `dataField` or `derivedField` on the Meter used as the basis for the Aggregation."
            },
            "aggregation" : {
              "description" : "Specifies the computation method applied to usage data collected in `targetField`. Aggregation unit value depends on the **Category** configured for the selected `targetField`.\n\nEnum: \n\n* **SUM**. Adds the values. Can be applied to a **Measure**, **Income**, or **Cost** `targetField`.\n\n* **MIN**. Uses the minimum value. Can be applied to a **Measure**, **Income**, or **Cost** `targetField`.\n\n* **MAX**. Uses the maximum value. Can be applied to a **Measure**, **Income**, or **Cost** `targetField`.\n\n* **COUNT**. Counts the number of values. Can be applied to a **Measure**, **Income**, or **Cost** `targetField`.\n\n* **LATEST**. Uses the most recent value. Can be applied to a **Measure**, **Income**, or **Cost** `targetField`. Note: Based on the timestamp (`ts`) value of usage data measurement submissions. If using this method, please ensure *distinct* `ts` values are used for usage data measurement submissions.\n\n* **MEAN**. Uses the arithmetic mean of the values. Can be applied to a **Measure**, **Income**, or **Cost** `targetField`.\n\n* **UNIQUE**. Uses unique values and returns a count of the number of unique values. Can be applied to a **Metadata** `targetField`.\n\n* **CUSTOM_SQL**. Uses an SQL query expression. If you select this Aggregation type, use the `customSQL` request parameter to enter an SQL query.",
              "$ref" : "#/components/schemas/Aggregation"
            },
            "segmentedFields" : {
              "maxItems" : 5,
              "type" : "array",
              "description" : "*(Optional)*. Used when creating a segmented Aggregation, which segments the usage data collected by a single Meter. Works together with `segments`.\n\nEnter the `Codes` of the fields in the target Meter to use for segmentation purposes.\n\nString `dataFields` on the target Meter can be segmented. Any string `derivedFields` on the target Meter, such as one that concatenates two string `dataFields`, can also be segmented.",
              "items" : {
                "type" : "string"
              }
            },
            "segments" : {
              "maxItems" : 1000,
              "type" : "array",
              "description" : "*(Optional)*. Used when creating a segmented Aggregation, which segments the usage data collected by a single Meter. Works together with `segmentedFields`.\n\nEnter the values that are to be used as the segments, read from the fields in the meter pointed at by `segmentedFields`.\n\nNote that you can use *wildcards* or *defaults* when setting up segment values. For more details on how to do this with an example, see [Using Wildcards - API Calls](https://www.m3ter.com/docs/guides/setting-up-usage-data-meters-and-aggregations/segmented-aggregations#using-wildcards---api-calls) in our main User Docs.",
              "items" : {
                "type" : "object",
                "additionalProperties" : {
                  "type" : "string"
                }
              }
            },
            "defaultValue" : {
              "minimum" : 0,
              "type" : "number",
              "description" : "Aggregation value used when no usage data is available to be aggregated. *(Optional)*.\n\n**Note:** Set to 0, if you expect to reference the Aggregation in a Compound Aggregation. This ensures that any null values are passed in correctly to the Compound Aggregation calculation with a value = 0."
            },
            "customSql" : {
              "maxLength" : 2048,
              "type" : "string",
              "description" : "Enter the SQL query expression to be used for a Custom SQL Aggregation. Custom SQL queries should be run against the Measurements table - for more details see [Custom SQL Aggregations](https://www.m3ter.com/docs/guides/usage-data-aggregations/custom-sql-aggregations) in your main User documentation.\n\n**NOTE:** The `customSql` Aggregation type is currently available in Preview release. If you are interested in using this feature, please get in touch with m3ter Support or your m3ter contact."
            }
          }
        } ]
      },
      "PaginatedBillGroupingKeyResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/BillGroupingKeyResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "BearerAccessTokenResponse" : {
        "required" : [ "access_token", "expires_in" ],
        "type" : "object",
        "properties" : {
          "token_type" : {
            "type" : "string",
            "description" : "The token type, which in this case is \"bearer\"."
          },
          "access_token" : {
            "type" : "string",
            "description" : "The access token. "
          },
          "expires_in" : {
            "type" : "integer",
            "description" : "Token expiry time in seconds. ",
            "format" : "int64"
          },
          "scope" : {
            "type" : "string",
            "description" : "Not used."
          }
        },
        "description" : "",
        "example" : {
          "token_type" : "Bearer",
          "access_token" : "eyJ0eXAiOiJKV1QiLCJwdCI6InNlcnZpY2UiLCJhbGciOiJSUzI1NiIsImtpZCI6InNlcnZpY2VVc2VyXzgxYzQ5YTU0LWRmY2QtNGRhNS1iYmYzLWQyODg1ZWMwMjVkZCJ9.eyJzdWIiOiIyOTA2ZDE4Zi1lNzFiLTRlMTAtOWJkNi1mZDA3YjUyNjM4ZjIiLCJwZXJtaXNzaW9ucyI6eyJNRUFTVVJFTUVOVFMjTUVBU1VSRU1FTlRTX1VQTE9BRCNJVEVNIyoiOnRydWV9LCJpc3MiOiJodHRwczpcL1wvbTN0ZXIuY29tXC9vYXV0aDIiLCJleHAiOjE2ODA1NDU3NTAsImlhdCI6MTY4MDUyNzc1MCwib3JnSWQiOiI4MWM0OWE1NC1kZmNkLTRkYTUtYmJmMy1kMjg4NWVjMDI1ZGQifQ.EwB-H4u7jKP5Ew8g0KwkPOBJPvuzDpayzWwyfm-kLPLPm9X3b3etQi1y3btKADYLy8WU452IbRFKgkhGBXrFN5rFR7mXLc1SUR-fU-anUNKCX-QPNrCzUyI2P1icQA2KFdvnYjJfLp5-gtCJWoX-Mf09-CFNPKC7sx0cVbro1Zd4axn6KpYi_48fufRYgoprwriYgpzkvG1Tq9SZtGU3vWex0eWFRKqHur6QwdxQzi_HM08kOb3puWqTio-7r3_sMOLkGitsg0teyJ-A-gYmOayZ4I2Nad7pmciLRh70kJYpR3L1yc82MPBIaJIYRxfWcOTnY8Opyv7ZlGm-hn2lUA",
          "expires_in" : 18000,
          "scope" : null
        }
      },
      "ResourceType" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "ALL", "TEMPLATE", "ORG_USER", "SERVICE_USER", "SUPPORT_USERS", "PLAN", "PLAN_TEMPLATE", "PLAN_GROUP", "PLAN_GROUP_LINK", "METER", "METER_GROUP", "COUNTER", "AGGREGATION", "ACCOUNT_PLAN", "PERMISSION_POLICY", "PRINCIPAL_PERMISSION", "RESOURCE_GROUP", "ACCOUNT", "CONTRACT", "EXTERNAL_MAPPING", "PRODUCT", "OUTGOING_INTEGRATION", "INTEGRATION", "ALERT", "CUSTOM_FIELD", "ORGANIZATION_CONFIG", "COMMITMENT", "DATA_EXPLORER_SELECTION", "REPORT_SELECTION", "NOTIFICATION", "EVENT", "SCHEDULED_EVENT", "PICKLIST_CREDIT_REASON", "PICKLIST_DEBIT_REASON", "PICKLIST_TRANSACTION_TYPE", "PICKLIST_CURRENCY", "PICKLIST_BILL_GROUPING_KEY", "ORG_USER_INVITATION", "MEASUREMENTS", "MEASUREMENTS_VALIDATION_ERRORS", "BILL", "BILL_LOCK", "BILL_CONFIG", "BILL_JOB", "BALANCE", "CHARGE", "COUNTER_ADJUSTMENT", "ACTION", "ACTION_PERFORMED", "ACTION_TRIGGER", "STATEMENT_DEFINITION", "STATEMENT", "STATEMENT_JOB", "CREDIT", "CREDIT_TYPE", "CREDIT_ADJUSTMENT", "SCHEDULED_VALIDATION", "INTEGRATION_RUN", "INTEGRATION_CREDENTIALS", "INTEGRATION_CONFIG", "INTEGRATION_TRANSFORMATION", "INTEGRATION_DESTINATION", "INTEGRATION_WORKFLOW_TEMPLATE", "MARKETPLACE_USAGE", "ANALYTICS_USAGE", "ANALYTICS_MOM", "ANALYTICS_COMMITMENT_REPORT", "ANALYTICS_TCV", "ANALYTICS_PLAN_MRR", "ANALYTICS_BILL_MRR", "ANALYTICS_REV_REC", "ANALYTICS_JOBS", "DW_CACHE_CONFIG", "DATA_EXPORT_DESTINATION", "DATA_EXPORT_SCHEDULES", "DATA_EXPORT_STATUS", "USAGE_FORECAST", "USAGE_HEALTH_SCORES", "USAGE_ANOMALIES", "REAL_TIME_NOTIFICATIONS_DESTINATION", "EXPORTS_DATA" ]
      },
      "AccountPlanResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "accountId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the Account to which the AccountPlan or AccounPlanGroup is attached."
            },
            "productId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the Product associated with the AccountPlan.\n\n**Note:** Not present in response for AccountPlanGroup - Plan Groups can contain multiple Plans belonging to different Products."
            },
            "planId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the Plan that has been attached to the Account to create the AccountPlan."
            },
            "planGroupId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the Plan Group that has been attached to the Account to create the AccountPlanGroup."
            },
            "startDate" : {
              "type" : "string",
              "description" : "The start date *(in ISO-8601 format)* for the when the AccountPlan or AccountPlanGroup starts to be active for the Account.",
              "format" : "date-time"
            },
            "endDate" : {
              "type" : "string",
              "description" : "The end date *(in ISO-8601 format)* for when the AccountPlan or AccountPlanGroup ceases to be active for the Account. If not specified, the AccountPlan or AccountPlanGroup remains active indefinitely.",
              "format" : "date-time"
            },
            "code" : {
              "type" : "string",
              "description" : "The unique short code of the AccountPlan or AccountPlanGroup. "
            },
            "billEpoch" : {
              "type" : "string",
              "description" : "The initial date for creating the first bill against the Account for charges due under the AccountPlan or AccountPlanGroup. All subsequent bill creation dates are calculated from this date. If left empty, the first bill date definedfor the Account is used. The date is in ISO-8601 format.",
              "format" : "date"
            },
            "contractId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the Contract to which the Plan or Plan Group  attached to the Account has been added."
            },
            "childBillingMode" : {
              "description" : "If the Account is either a Parent or a Child Account, this specifies the Account hierarchy billing mode. The mode determines how billing will be handled and shown on bills for charges due on the Parent Account, and charges due on Child Accounts:\n\n* **Parent Breakdown** - a separate bill line item per Account. Default setting.\n\n* **Parent Summary** - single bill line item for all Accounts.\n\n* **Child** - the Child Account is billed.",
              "$ref" : "#/components/schemas/ChildBillingMode"
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The date and time *(in ISO 8601 format)* when the AccountPlan or AccountPlanGroup was first created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The date and time *(in ISO 8601 format)* when the AccountPlan or AccountPlanGroup was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the user who created the AccountPlan or AccountPlanGroup."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the user who last modified the AccountPlan or AccountPlanGroup."
            }
          }
        } ]
      },
      "CompoundAggregationResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractAggregationResponse"
        }, {
          "$ref" : "#/components/schemas/AbstractResponseWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "calculation" : {
              "type" : "string",
              "description" : "This field is a string that represents the formula for the calculation. This formula determines how the Compound Aggregation is calculated from the underlying usage data."
            },
            "productId" : {
              "type" : "string",
              "description" : "This field represents the unique identifier (UUID) of the Product that is associated with the Compound Aggregation. "
            },
            "evaluateNullAggregations" : {
              "type" : "boolean",
              "description" : "This is a boolean True / False flag. \n\nIf set to TRUE, the calculation will be evaluated even if the referenced aggregation has no usage data."
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the Compound Aggregation was created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the Compound Aggregation was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who created this Compound Aggregation."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who last modified this Compound Aggregation."
            }
          }
        } ]
      },
      "PaginatedLookupTableRevisionResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/LookupTableRevisionResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "BillJobStatus" : {
        "type" : "string",
        "description" : "The current status of the BillJob, indicating its progress or completion state.",
        "enum" : [ "PENDING", "INITIALIZING", "RUNNING", "COMPLETE", "CANCELLED" ]
      },
      "LookupTableRequest" : {
        "required" : [ "code", "name" ],
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequestWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "type" : "object",
          "properties" : {
            "name" : {
              "maxLength" : 200,
              "minLength" : 1,
              "type" : "string",
              "description" : "Descriptive name for the Lookup Table.",
              "x-size-message" : "Name cannot exceed 200 characters"
            },
            "code" : {
              "maxLength" : 80,
              "minLength" : 1,
              "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
              "type" : "string",
              "description" : "Code of the Lookup Table - unique short code used to identify the Lookup Table.\n\n**NOTE:** Code has a maximum length of 80 characters and must not contain non-printable or whitespace characters (except space), and cannot start/end with whitespace.",
              "x-pattern-message" : "Code must not contain non-printable or whitespace characters (except space), and cannot start/end with whitespace",
              "x-size-message" : "Code cannot exceed 80 characters"
            }
          }
        } ]
      },
      "PaginatedNotificationResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/NotificationResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "AdHocResponse" : {
        "type" : "object",
        "properties" : {
          "jobId" : {
            "type" : "string",
            "description" : "The id of the job"
          }
        },
        "description" : "Response containing data export ad-hoc jobId"
      },
      "SourceType" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "USAGE", "OPERATIONAL" ]
      },
      "RequestWithStartAndEndDate" : {
        "type" : "object",
        "properties" : {
          "startDate" : {
            "type" : "string",
            "description" : "The inclusive start date to define a time period to filter by. (*ISO 8601 formatted*)",
            "format" : "date-time"
          },
          "endDate" : {
            "type" : "string",
            "description" : "The exclusive end date to define a time period to filter by. (*ISO 8601 formatted*)",
            "format" : "date-time"
          }
        },
        "description" : ""
      },
      "CommitmentRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "accountId", "amount", "currency", "endDate", "startDate" ],
          "type" : "object",
          "properties" : {
            "accountId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "The unique identifier (UUID) for the end customer Account the Commitment is added to."
            },
            "billingPlanId" : {
              "maxLength" : 36,
              "type" : "string",
              "description" : "The unique identifier (UUID) for the Product Plan used for billing Commitment fees due."
            },
            "productIds" : {
              "maxItems" : 100,
              "type" : "array",
              "description" : "A list of unique identifiers (UUIDs) for Products the Account consumes. Charges due for these Products will be made available for draw-down against the Commitment.\n\n**Note:** If not used, then charges due for all Products the Account consumes will be made available for draw-down against the Commitment.",
              "items" : {
                "type" : "string"
              }
            },
            "startDate" : {
              "type" : "string",
              "description" : "The start date of the Commitment period in ISO-8601 format.",
              "format" : "date"
            },
            "endDate" : {
              "type" : "string",
              "description" : "The end date of the Commitment period in ISO-8601 format.\n\n**Note:** End date is exclusive -  if you set an end date of June 1st 2022, then the Commitment ceases to be active for the Account at midnight on May 31st 2022, and any Prepayment fees due are calculated up to that point in time, NOT up to midnight on June 1st",
              "format" : "date"
            },
            "currency" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The currency used for the Commitment. For example: USD. "
            },
            "amount" : {
              "minimum" : 0,
              "exclusiveMinimum" : true,
              "type" : "number",
              "description" : "The total amount that the customer has committed to pay.",
              "format" : "double"
            },
            "amountPrePaid" : {
              "minimum" : 0,
              "type" : "number",
              "description" : "The amount that the customer has already paid upfront at the start of the Commitment service period.",
              "format" : "double"
            },
            "amountFirstBill" : {
              "minimum" : 0,
              "type" : "number",
              "description" : "The amount to be billed in the first invoice.",
              "format" : "double"
            },
            "overageSurchargePercent" : {
              "type" : "number",
              "description" : "The percentage surcharge applied to usage charges that exceed the Commitment amount.\n\n**Note:** You can enter a *negative percentage* if you want to give a discount rate for usage to end customers who exceed their Commitment amount",
              "format" : "double"
            },
            "separateOverageUsage" : {
              "type" : "boolean",
              "description" : "A boolean value indicating whether the overage usage is billed separately or together. If overage usage is separated and a Commitment amount has been consumed by an Account, any subsequent line items on Bills against the Account for usage will show as separate \"overage usage\" charges, not simply as \"usage\" charges:\n\n* **TRUE** - billed separately.\n* **FALSE** - billed together.\n\n**Notes:**\n- Can be used only if no value or 0 has been defined for the `overageSurchargePercent` parameter. If you try to separate overage usage when a value other than 0 has been defined for `overageSurchargePercent`, you'll receive an error.\n- If a priced Plan is used to bill any outstanding Commitment fees due and the Plan is set up with overage pricing on a *tiered pricing structure* and you enable separate bill line items for overage usage, then overage usage charges will be rated according to the overage pricing defined for the tiered pricing on the Plan."
            },
            "billingInterval" : {
              "maximum" : 365,
              "minimum" : 1,
              "type" : "integer",
              "description" : "How often the Commitment fees are applied to bills. For example, if the plan being used to bill for Commitment fees is set to issue bills every three months and the `billingInterval` is set to 2, then the Commitment fees are applied every six months.",
              "format" : "int32"
            },
            "billingOffset" : {
              "maximum" : 364,
              "minimum" : 0,
              "type" : "integer",
              "description" : "Defines an offset for when the Commitment fees are first applied to bills on the Account. For example, if bills are issued every three months and the `billingOffset` is 0, then the charge is applied to the first bill (at three months); if set to 1, it's applied to the next bill (at six months), and so on.",
              "format" : "int32"
            },
            "commitmentFeeDescription" : {
              "maxLength" : 200,
              "type" : "string",
              "description" : "A textual description of the Commitment fee."
            },
            "commitmentUsageDescription" : {
              "maxLength" : 200,
              "type" : "string",
              "description" : "A textual description of the Commitment usage."
            },
            "overageDescription" : {
              "maxLength" : 200,
              "type" : "string",
              "description" : "A textual description of the overage charges."
            },
            "commitmentFeeBillInAdvance" : {
              "type" : "boolean",
              "description" : "A boolean value indicating whether the Commitment fee is billed in advance *(start of each billing period)* or arrears *(end of each billing period)*.\n\nIf no value is supplied, then the Organization Configuration value is used.  \n\n* **TRUE** - bill in advance *(start of each billing period)*.\n* **FALSE** - bill in arrears *(end of each billing period)*."
            },
            "billEpoch" : {
              "type" : "string",
              "description" : "The starting date *(in ISO-8601 date format)* from which the billing cycles are calculated.",
              "format" : "date"
            },
            "contractId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "The unique identifier (UUID) for a Contract you've created for the Account - used to add the Commitment to this Contract.\n\n**Note:** If you associate the Commitment with a Contract you must ensure the Account Plan attached to the Account has the same Contract associated with it. If the Account Plan Contract and Commitment Contract do not match, then at billing the Commitment amount will not be drawn-down against."
            },
            "accountingProductId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "The unique identifier (UUID) for the Product linked to the Commitment for accounting purposes. *(Optional)*\n\n**NOTE:** If you're planning to set up an integration for sending Bills to an external accounts receivable system, please check requirements for your chosen system. Some systems, such as NetSuite, require a Product to be linked with any Bill line items associated with Account Commitments, and the integration will fail if this is not present"
            },
            "feesAccountingProductId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "Optional Product ID this Commitment's fees should be attributed to for accounting purposes."
            },
            "drawdownsAccountingProductId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "Optional Product ID this Commitment's consumptions should be attributed to for accounting purposes."
            },
            "feeDates" : {
              "type" : "array",
              "description" : "Used for billing any outstanding Commitment fees *on a schedule*.\n\nCreate an array to define a series of bill dates and amounts covering specified service periods:\n- `date` - the billing date *(in ISO-8601 format)*.\n- `amount` - the billed amount.\n- `servicePeriodStartDate` and `servicePeriodEndDate` - defines the service period the bill covers *(in ISO-8601 format)*.\n\n**Notes:**\n* If you try to set `servicePeriodStartDate` *after* `servicePeriodEndDate`, you'll receive an error.\n* You can set `servicePeriodStartDate` and `servicePeriodEndDate` to the *same date* without receiving an error, but *please be sure* your Commitment billing use case requires this.",
              "items" : {
                "$ref" : "#/components/schemas/CommitmentFee"
              }
            },
            "childBillingMode" : {
              "description" : "Commitment billing mode that only applies while using Parent/Child accounts. Used to control on which Bill the commitment fees and draw-downs appear:\n* **PARENT_BREAKDOWN** - A separate bill line item per Account and appear as separate line items on the Parent Bill - one per Child. *(Default)*\n* **PARENT_SUMMARY** - A single bill line item for all Accounts and appears as a single separate line item on the Parent Bill.\n* **CHILD** - Child Accounts are billed and appear as line items on each Child Account Bill.",
              "allOf" : [ {
                "$ref" : "#/components/schemas/ChildBillingMode"
              }, {
                "type" : "object",
                "description" : "Commitment billing mode that only applies while using parent/child accounts, used to configure on which bill the commitment fees and draw downs end up."
              } ]
            },
            "lineItemTypes" : {
              "type" : "array",
              "description" : "Specify the line item charge types that can draw-down at billing against the Commitment amount. Options are:\n- `MINIMUM_SPEND`\n- `STANDING_CHARGE`\n- `USAGE`\n- `\"COUNTER_RUNNING_TOTAL_CHARGE\"`\n- `\"COUNTER_ADJUSTMENT_DEBIT\"`\n\n**NOTE:** If no charge types are specified, by default *all types* can draw-down against the Commitment amount at billing.",
              "items" : {
                "$ref" : "#/components/schemas/CommitmentLineItemType"
              }
            }
          }
        } ]
      },
      "UploadJobResponse" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "UUID of the file upload job."
          },
          "version" : {
            "type" : "integer",
            "description" : "The version number. Default value when newly created is one. ",
            "format" : "int64"
          },
          "fileName" : {
            "type" : "string",
            "description" : "The name of the measurements file for the upload job. "
          },
          "uploadDate" : {
            "type" : "string",
            "description" : "The upload date for the upload job *(in ISO-8601 format)*."
          },
          "contentLength" : {
            "type" : "integer",
            "description" : "The size of the body in bytes. For example: `\"contentLength\": 485`, where 485 is the size in bytes of the file uploaded.",
            "format" : "int64"
          },
          "status" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/JobStatus"
            } ]
          },
          "totalRows" : {
            "type" : "integer",
            "description" : "The total number of rows in the file. ",
            "format" : "int64"
          },
          "processedRows" : {
            "type" : "integer",
            "description" : "The number of rows that were processed during ingest.",
            "format" : "int64"
          },
          "failedRows" : {
            "type" : "integer",
            "description" : "The number of rows that failed processing during ingest.",
            "format" : "int64"
          }
        },
        "description" : "Response containing the upload job details."
      },
      "PaginatedPlanGroupLinkResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/PlanGroupLinkResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "BillingEntity" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "CONTRACT", "ACCOUNTPLAN", "PREPAYMENT", "PRICINGS", "COUNTER_PRICINGS" ]
      },
      "PaginatedPlanResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/PlanResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "LookupTableRevisionStatus" : {
        "type" : "string",
        "description" : "Status of a Lookup Table Revision",
        "enum" : [ "DRAFT", "PUBLISHED", "ARCHIVED" ]
      },
      "Set_String_" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/Collection_String_"
        }, {
          "type" : "object",
          "properties" : {
            "empty" : {
              "type" : "boolean",
              "description" : ""
            }
          }
        } ]
      },
      "UsageSavedQueryRequest" : {
        "required" : [ "name", "usageQuery" ],
        "type" : "object",
        "properties" : {
          "name" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "Name of the saved query",
            "x-size-message" : "Required field 'name' is missing"
          },
          "usageQuery" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/UsageQueryRequestWithTimePeriod"
            } ],
            "x-not-null-message" : "Required field 'usageQuery' is missing"
          }
        },
        "description" : "Request representing a usage saved query",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "LookupTableResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "name" : {
              "type" : "string",
              "description" : "The name of the Lookup Table"
            },
            "code" : {
              "type" : "string",
              "description" : "The code of the Lookup Table"
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The DateTime when the Lookup Table was created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The DateTime when the Lookup Table was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The id of the user who created this Lookup Table."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The id of the user who last modified this Lookup Table."
            },
            "activeRevision" : {
              "description" : "",
              "allOf" : [ {
                "$ref" : "#/components/schemas/LookupTableRevisionResponse"
              } ]
            }
          }
        } ]
      },
      "UserRequest" : {
        "required" : [ "email", "firstName", "lastName" ],
        "type" : "object",
        "properties" : {
          "m3terUser" : {
            "type" : "boolean",
            "description" : ""
          },
          "version" : {
            "type" : "integer",
            "description" : "",
            "format" : "int64"
          },
          "firstName" : {
            "maxLength" : 100,
            "minLength" : 1,
            "type" : "string",
            "description" : ""
          },
          "lastName" : {
            "maxLength" : 100,
            "minLength" : 1,
            "type" : "string",
            "description" : ""
          },
          "contactNumber" : {
            "maxLength" : 50,
            "type" : "string",
            "description" : ""
          },
          "email" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "",
            "format" : "email"
          }
        },
        "description" : ""
      },
      "ConfigOptions" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/ArrayList_ConfigSetting_"
        }, {
          "$ref" : "#/components/schemas/AbstractList_ConfigSetting_"
        }, {
          "$ref" : "#/components/schemas/AbstractCollection_ConfigSetting_"
        } ]
      },
      "IntegrationCredentialsResponse" : {
        "type" : "object",
        "description" : "Response containing a IntegrationCredentials entity",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithAuditFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "required" : [ "destination", "type" ],
          "type" : "object",
          "properties" : {
            "type" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "the type of credentials"
            },
            "destination" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "the system the integration is for"
            },
            "destinationId" : {
              "type" : "string",
              "description" : "the destinationId the integration is for"
            },
            "name" : {
              "type" : "string",
              "description" : "the name of the credentials"
            }
          },
          "description" : "Response containing a IntegrationCredentials entity"
        } ]
      },
      "PaginatedCurrencyResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/CurrencyResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "ChargeRequest" : {
        "type" : "object",
        "description" : "Request containing a Charge entity",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "accountId", "code", "currency", "entityType", "lineItemType", "name", "servicePeriodEndDate", "servicePeriodStartDate" ],
          "type" : "object",
          "properties" : {
            "name" : {
              "maxLength" : 200,
              "minLength" : 1,
              "type" : "string",
              "description" : "Name of the Charge. Added to the Bill line item description for this Charge."
            },
            "code" : {
              "maxLength" : 80,
              "minLength" : 1,
              "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
              "type" : "string",
              "description" : "Unique short code for the Charge."
            },
            "accountId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "The ID of the Account the Charge is being created for."
            },
            "billDate" : {
              "type" : "string",
              "description" : "The date when the Charge will be added to a Bill.",
              "example" : "2022-01-04"
            },
            "amount" : {
              "type" : "number",
              "description" : "Amount of the Charge. If `amount` is provided, then `units` and `unitPrice` must be omitted."
            },
            "units" : {
              "type" : "number",
              "description" : "Number of units of the Charge. If `amount` is omitted, then provide together with `unitPrice`. When `amount` is provided, `units` must be omitted."
            },
            "unitPrice" : {
              "type" : "number",
              "description" : "Unit price. If `amount` is omitted, then provide together with `units`. When `amount` is provided, `unitPrice` must be omitted."
            },
            "currency" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "Charge currency."
            },
            "description" : {
              "type" : "string",
              "description" : "The description added to the Bill line item for the Charge."
            },
            "entityType" : {
              "description" : "The entity type the Charge is created for.\n\n**NOTE:** If `entityType` is `BALANCE`, you must provide the `entityId` of the Balance the Charge is for.",
              "allOf" : [ {
                "$ref" : "#/components/schemas/ChargeEntityType"
              }, {
                "type" : "object",
                "description" : "The entity this charge is created for, ex: Balance or AD_HOC if none applies"
              } ]
            },
            "lineItemType" : {
              "description" : "The line item type used for Charge billing.",
              "allOf" : [ {
                "$ref" : "#/components/schemas/ChargeLineItemType"
              }, {
                "type" : "object",
                "description" : "The Line Item Type to be used for this Charge"
              } ]
            },
            "entityId" : {
              "type" : "string",
              "description" : "The ID of the Charge linked entity. For example, the ID of an Account Balance if a Balance Charge.\n\n**NOTE:** If `entityType` is `BALANCE`, you must provide the `entityId` of the Balance the Charge is for."
            },
            "accountingProductId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "The Accounting Product ID assigned to the Charge."
            },
            "servicePeriodStartDate" : {
              "type" : "string",
              "description" : "The service period start date (*in ISO-8601 format*) for the Charge.",
              "format" : "date-time"
            },
            "servicePeriodEndDate" : {
              "type" : "string",
              "description" : "The service period end date (*in ISO-8601 format*)for the Charge.\n\n**NOTE:** End date is exclusive.",
              "format" : "date-time"
            },
            "notes" : {
              "type" : "string",
              "description" : "Used to enter information about the Charge for accounting purposes, such as the reason it was created. This information will not be added to a Bill line item for the Charge."
            },
            "contractId" : {
              "type" : "string",
              "description" : "The ID of a Contract on the Account that the Charge will be added to."
            }
          },
          "description" : "Request containing a Charge entity"
        } ]
      },
      "LineItemDimensions" : {
        "type" : "object",
        "properties" : {
          "account" : {
            "type" : "string",
            "description" : ""
          },
          "accountName" : {
            "type" : "string",
            "description" : ""
          },
          "accountId" : {
            "type" : "string",
            "description" : ""
          },
          "parentAccountCode" : {
            "type" : "string",
            "description" : ""
          },
          "parentAccountName" : {
            "type" : "string",
            "description" : ""
          },
          "parentAccountId" : {
            "type" : "string",
            "description" : ""
          },
          "childAccountId" : {
            "type" : "string",
            "description" : ""
          },
          "description" : {
            "type" : "string",
            "description" : ""
          },
          "lineItemType" : {
            "description" : "",
            "$ref" : "#/components/schemas/LineItemType"
          },
          "productName" : {
            "type" : "string",
            "description" : ""
          },
          "quantityUnit" : {
            "type" : "string",
            "description" : ""
          },
          "subtotalUnit" : {
            "type" : "string",
            "description" : ""
          },
          "convertedSubtotalUnit" : {
            "type" : "string",
            "description" : ""
          },
          "billId" : {
            "type" : "string",
            "description" : ""
          },
          "externalInvoiceReference" : {
            "type" : "string",
            "description" : ""
          },
          "commitmentId" : {
            "type" : "string",
            "description" : ""
          },
          "billLineItemId" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "CreditReasonRequest" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractPickListRequest"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "StatementJobResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "statementJobStatus" : {
              "description" : "The current status of the StatementJob. The status helps track the progress and outcome of a StatementJob.",
              "$ref" : "#/components/schemas/StatementJobStatus"
            },
            "billId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the bill associated with the StatementJob."
            },
            "orgId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of your Organization. The Organization represents your company as a direct customer of our service."
            },
            "includeCsvFormat" : {
              "type" : "boolean",
              "description" : "A Boolean value indicating whether the generated statement includes a CSV format.\n\n* TRUE - includes the statement in CSV format.\n* FALSE - no CSV format statement."
            },
            "filters" : {
              "description" : "",
              "allOf" : [ {
                "$ref" : "#/components/schemas/StatementJobFilters"
              }, {
                "type" : "object",
                "description" : "Optional filters to generate a statement for specific usage only."
              } ]
            },
            "presignedJsonStatementUrl" : {
              "type" : "string",
              "description" : "The URL to access the generated statement in JSON format. This URL is temporary and has a limited lifetime."
            },
            "jsonStatementStatus" : {
              "description" : "",
              "$ref" : "#/components/schemas/StatementStatus"
            },
            "presignedCsvStatementUrl" : {
              "type" : "string",
              "description" : ""
            },
            "csvStatementStatus" : {
              "description" : "",
              "$ref" : "#/components/schemas/StatementStatus"
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the StatementJob was created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the StatementJob was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who created this StatementJob."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who last modified this StatementJob."
            }
          }
        } ]
      },
      "IntegrationConfigRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "destination", "entityType" ],
          "type" : "object",
          "properties" : {
            "entityType" : {
              "minLength" : 1,
              "pattern" : "^[a-zA-Z0-9_-]*$",
              "type" : "string",
              "description" : "Specifies the type of entity for which the integration configuration is being updated. Must be a valid alphanumeric string.",
              "example" : "Bill"
            },
            "entityId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the entity. This field is used to specify which entity's integration configuration you're updating.",
              "example" : "00000000-0000-0000-0000-000000000000"
            },
            "destination" : {
              "minLength" : 1,
              "pattern" : "^[a-zA-Z0-9_-]*$",
              "type" : "string",
              "description" : "Denotes the integration destination. This field identifies the target platform or service for the integration.",
              "example" : "Stripe"
            },
            "destinationId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the integration destination.",
              "example" : "00000000-0000-0000-0000-000000000000"
            },
            "configData" : {
              "type" : "object",
              "description" : "A flexible object to include any additional configuration data specific to the integration.",
              "allOf" : [ {
                "type" : "object",
                "additionalProperties" : true
              }, {
                "type" : "object",
                "default" : { }
              } ]
            },
            "credentials" : {
              "description" : "Base model for defining integration credentials across different types of integrations.",
              "$ref" : "#/components/schemas/IntegrationCredentialsRequestBase"
            },
            "integrationCredentialsId" : {
              "type" : "string",
              "description" : "",
              "example" : "00000000-0000-0000-0000-000000000000"
            },
            "name" : {
              "type" : "string",
              "description" : "",
              "example" : "My Integration"
            }
          }
        } ]
      },
      "AggregationFrequency" : {
        "type" : "string",
        "description" : "This specifies how often the data should be aggregated.",
        "enum" : [ "ORIGINAL", "HOUR", "DAY", "WEEK", "MONTH", "QUARTER", "YEAR", "WHOLE_PERIOD" ]
      },
      "PlanGroupResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "name" : {
              "type" : "string",
              "description" : "The name of the PlanGroup."
            },
            "code" : {
              "type" : "string",
              "description" : "The short code representing the PlanGroup."
            },
            "standingCharge" : {
              "type" : "number",
              "description" : "Standing charge amount for the PlanGroup.",
              "format" : "double"
            },
            "standingChargeDescription" : {
              "type" : "string",
              "description" : "Description of the standing charge, displayed on the bill line item."
            },
            "minimumSpend" : {
              "type" : "number",
              "description" : "The minimum spend amount for the PlanGroup.",
              "format" : "double"
            },
            "minimumSpendDescription" : {
              "type" : "string",
              "description" : "Description of the minimum spend, displayed on the bill line item."
            },
            "currency" : {
              "type" : "string",
              "description" : "Currency code for the PlanGroup (For example, USD)."
            },
            "standingChargeBillInAdvance" : {
              "type" : "boolean",
              "description" : "A boolean flag that determines when the standing charge is billed. This flag overrides the setting at Organizational level for standing charge billing in arrears/in advance.\n\n* **TRUE** - standing charge is billed at the start of each billing period. \n* **FALSE** - standing charge is billed at the end of each billing period."
            },
            "minimumSpendBillInAdvance" : {
              "type" : "boolean",
              "description" : "A boolean flag that determines when the minimum spend is billed. This flag overrides the setting at Organizational level for minimum spend billing in arrears/in advance.\n\n* **TRUE** - minimum spend is billed at the start of each billing period. \n* **FALSE** - minimum spend is billed at the end of each billing period."
            },
            "accountId" : {
              "type" : "string",
              "description" : "Optional. This PlanGroup was created as bespoke for the associated Account with this Account ID."
            },
            "minimumSpendAccountingProductId" : {
              "type" : "string",
              "description" : "Optional. Product ID to attribute the PlanGroup's minimum spend for accounting purposes."
            },
            "standingChargeAccountingProductId" : {
              "type" : "string",
              "description" : "Optional. Product ID to attribute the PlanGroup's standing charge for accounting purposes."
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The date and time *(in ISO 8601 format)* when the PlanGroup was first created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The date and time *(in ISO 8601 format)* when the PlanGroup was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the user who created the PlanGroup."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) for the user who last modified the PlanGroup."
            }
          }
        } ]
      },
      "TimePeriodUnit" : {
        "type" : "string",
        "description" : "Time unit of grace period before bills are auto-approved. Used in combination with the field `autoApproveBillsGracePeriod`.",
        "enum" : [ "MINUTES", "HOURS", "DAYS" ]
      },
      "CurrencyResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractPickListResponse"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "maxDecimalPlaces" : {
              "type" : "integer",
              "description" : "This indicates the maximum number of decimal places to use for this Currency. ",
              "format" : "int32"
            },
            "roundingMode" : {
              "description" : "",
              "$ref" : "#/components/schemas/RoundingMode"
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the Currency was created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the Currency was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who created this Currency."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who last modified this Currency."
            }
          }
        } ]
      },
      "MeResponse" : {
        "type" : "object",
        "properties" : {
          "user" : {
            "description" : "",
            "$ref" : "#/components/schemas/UserResponse"
          },
          "serviceUser" : {
            "description" : "",
            "$ref" : "#/components/schemas/ServiceUserResponse"
          },
          "organization" : {
            "description" : "",
            "$ref" : "#/components/schemas/OrganizationResponse"
          }
        },
        "description" : ""
      },
      "PaginatedCounterPricingResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/CounterPricingResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "PricingBand" : {
        "required" : [ "fixedPrice", "lowerLimit", "unitPrice" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "The ID for the Pricing band."
          },
          "lowerLimit" : {
            "minimum" : 0,
            "type" : "number",
            "description" : "Lower limit for the Pricing band.",
            "format" : "double"
          },
          "fixedPrice" : {
            "type" : "number",
            "description" : "Fixed price charged for the Pricing band.",
            "format" : "double"
          },
          "unitPrice" : {
            "type" : "number",
            "description" : "Unit price charged for the Pricing band.",
            "format" : "double"
          },
          "creditTypeId" : {
            "type" : "string",
            "description" : "**OBSOLETE - this is deprecated and no longer used.** "
          }
        },
        "description" : ""
      },
      "PricingBandResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "id" : {
              "type" : "string",
              "description" : ""
            },
            "lowerLimit" : {
              "type" : "number",
              "description" : "",
              "format" : "double"
            },
            "fixedPrice" : {
              "type" : "number",
              "description" : "",
              "format" : "double"
            },
            "unitPrice" : {
              "type" : "number",
              "description" : "",
              "format" : "double"
            },
            "creditTypeId" : {
              "type" : "string",
              "description" : ""
            },
            "type" : {
              "description" : "",
              "$ref" : "#/components/schemas/PricingBandType"
            },
            "pricingId" : {
              "type" : "string",
              "description" : ""
            }
          }
        } ]
      },
      "BillLineItemPricingBandUsage" : {
        "type" : "object",
        "properties" : {
          "pricingBandId" : {
            "type" : "string",
            "description" : "The UUID for the pricing band. "
          },
          "lowerLimit" : {
            "type" : "number",
            "description" : "The lower limit *(start)* of the pricing band.",
            "format" : "double"
          },
          "fixedPrice" : {
            "type" : "number",
            "description" : "Fixed price is a charge entered for certain pricing types such as Stairstep, Custom Tiered, and Custom Volume. It is a set price and not dependent on usage.\n\n\n"
          },
          "unitSubtotal" : {
            "type" : "number",
            "description" : "The subtotal of the unit usage. "
          },
          "unitPrice" : {
            "type" : "number",
            "description" : "The price per unit in the band. "
          },
          "bandUnits" : {
            "type" : "number",
            "description" : "The number of units used within the band. "
          },
          "bandQuantity" : {
            "type" : "number",
            "description" : "Usage amount within the band. "
          },
          "bandSubtotal" : {
            "type" : "number",
            "description" : "Subtotal amount for the band. "
          },
          "creditTypeId" : {
            "type" : "string",
            "description" : "The UUID of the credit type."
          },
          "convertedBandSubtotal" : {
            "type" : "number",
            "description" : ""
          }
        },
        "description" : "Array containing the pricing band information, which shows the details for each pricing band or tier."
      },
      "LookupTableRevisionCopyRequest" : {
        "type" : "object",
        "properties" : {
          "revisionId" : {
            "type" : "string",
            "description" : "The target Revision id that the source Revision's data will be copied to. *(Optional)*"
          }
        },
        "description" : ""
      },
      "LookupTableDataUploadRequest" : {
        "required" : [ "contentLength", "contentType", "fileName" ],
        "type" : "object",
        "properties" : {
          "fileName" : {
            "maxLength" : 100,
            "minLength" : 1,
            "type" : "string",
            "description" : "The name of the file to be uploaded.",
            "x-size-message" : "The fileName cannot exceed 50 characters"
          },
          "contentType" : {
            "type" : "string",
            "description" : "",
            "enum" : [ "application/jsonl", "text/csv" ],
            "x-not-null-message" : "The content type cannot be blank"
          },
          "version" : {
            "type" : "integer",
            "description" : "Version of the Lookup Table Revision Data.",
            "format" : "int64"
          },
          "contentLength" : {
            "maximum" : 104857600,
            "minimum" : 1,
            "type" : "integer",
            "description" : "The size of the file body in bytes. For example: `\"contentLength\": 485`, where 485 is the size in bytes of the file to upload.",
            "format" : "int64",
            "x-maximum-message" : "The maximum content length is 104857600 bytes (100 MB)",
            "x-not-null-message" : "The content length cannot be blank"
          }
        },
        "description" : "Request containing the file details when generating an upload URL"
      },
      "OperationalDataExportConfigurationResponse" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "The id of the schedule."
          },
          "operationalDataTypes" : {
            "type" : "array",
            "description" : "A list of the entities whose operational data is included in the data export.",
            "items" : {
              "$ref" : "#/components/schemas/OperationalDataType"
            }
          }
        },
        "description" : "Response representing an operational data export configuration.",
        "allOf" : [ {
          "$ref" : "#/components/schemas/DataExportConfigurationResponseBase"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        } ]
      },
      "EntityConfiguration" : {
        "required" : [ "destinations", "entityConfigurationOptions", "readableName", "released" ],
        "type" : "object",
        "properties" : {
          "readableName" : {
            "type" : "string",
            "description" : "A human-readable name for the entity. Helps in identifying the entity type easily."
          },
          "destinations" : {
            "type" : "array",
            "description" : "An array of `DestinationConfiguration` objects, detailing available destinations for this entity.",
            "items" : {
              "$ref" : "#/components/schemas/DestinationConfiguration"
            }
          },
          "entityConfigurationOptions" : {
            "description" : "An array of objects, each representing a specific configuration option available for the entity.",
            "$ref" : "#/components/schemas/ConfigOptions"
          },
          "released" : {
            "type" : "boolean",
            "description" : "A boolean indicating whether this entity configuration is released and available for use.\n\n* TRUE - Configuration is released.\n* FALSE - Configuration is not released."
          }
        },
        "description" : "Configuration details for a specific entity type in the integration."
      },
      "DebitLineItemRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/MemoLineItemRequest"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "type" : "object",
          "properties" : {
            "amountToApplyOnBill" : {
              "type" : "number",
              "description" : ""
            },
            "debitReasonId" : {
              "type" : "string",
              "description" : "The ID of the Debit Reason given for this debit line item."
            }
          }
        } ]
      },
      "GetUploadUrlRequest" : {
        "required" : [ "contentLength", "contentType", "fileName" ],
        "type" : "object",
        "properties" : {
          "fileName" : {
            "maxLength" : 100,
            "minLength" : 1,
            "type" : "string",
            "description" : "The name of the measurements file to be uploaded.  ",
            "x-size-message" : "The fileName cannot exceed 50 characters"
          },
          "contentType" : {
            "maxLength" : 20,
            "minLength" : 1,
            "type" : "string",
            "description" : "The media type of the entity body sent, for example: `\"contentType\":\"text/json\"`.\n\n**NOTE:** Currently only a JSON formatted file type is supported by the File Upload Service.",
            "enum" : [ "application/json", "text/json" ],
            "x-size-message" : "The content type cannot exceed 20 characters"
          },
          "contentLength" : {
            "maximum" : 1073741824,
            "minimum" : 1,
            "type" : "integer",
            "description" : "The size of the body in bytes. For example: `\"contentLength\": 485`, where 485 is the size in bytes of the file to upload.\n\n**NOTE:** Required.",
            "format" : "int64",
            "x-not-null-message" : "The content length cannot be blank"
          }
        },
        "description" : "Request containing the file details when generating an upload URL."
      },
      "DataFieldMeasureQuery" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "The name of a Measure data field (or blank to indicate a wildcard, i.e. all fields)"
          },
          "aggregations" : {
            "maxItems" : 7,
            "type" : "array",
            "description" : "A list of Aggregations to apply to the measure",
            "items" : {
              "$ref" : "#/components/schemas/Aggregation"
            }
          }
        },
        "description" : "A data field (of type Measure) to retrieve aggregated usage data on."
      },
      "ExportDestinationGoogleCloudStorageResponse" : {
        "title" : "ExportDestinationGoogleCloudStorageResponse",
        "type" : "object",
        "properties" : {
          "bucketName" : {
            "type" : "string",
            "description" : "The bucket name."
          },
          "prefix" : {
            "type" : "string",
            "description" : "The prefix."
          },
          "projectNumber" : {
            "type" : "string",
            "description" : "The export destination GCP projectNumber."
          },
          "poolId" : {
            "type" : "string",
            "description" : "The export destination Web Identity Federation poolId."
          },
          "providerId" : {
            "type" : "string",
            "description" : "The export destination Web Identity Federation identity providerId."
          },
          "serviceAccountEmail" : {
            "type" : "string",
            "description" : "The export destination service account email."
          },
          "partitionOrder" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/PartitionOrder"
            }, {
              "type" : "object",
              "description" : "Output partitioning"
            } ]
          }
        },
        "description" : "The response containing the details of an Google Cloud Storage export destination.",
        "allOf" : [ {
          "$ref" : "#/components/schemas/ExportDestinationBaseResponse"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        } ]
      },
      "PaginatedCounterAdjustmentResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/CounterAdjustmentResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "BillCreditType" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "PREPAYMENT", "BALANCE" ]
      },
      "ScheduledEventConfigurationRequest" : {
        "required" : [ "entity", "field", "name", "offset" ],
        "type" : "object",
        "properties" : {
          "name" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "The name of the custom Scheduled Event Configuration.\n\nThis must be in the format: \n* scheduled.*name of entity*.*custom event name*\n\nFor example:\n* `scheduled.bill.endDateEvent`",
            "example" : "10 Days After Bill Due Date"
          },
          "entity" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "The referenced configuration or billing entity for which the desired scheduled Event will trigger.",
            "example" : "Bill"
          },
          "field" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "A DateTime field for which the desired scheduled Event will trigger - this must be a DateTime field on the referenced billing or configuration entity.",
            "example" : "dueDate"
          },
          "offset" : {
            "type" : "integer",
            "description" : "The offset in days from the specified DateTime field on the referenced entity when the scheduled Event will trigger.",
            "format" : "int32",
            "example" : 10
          }
        },
        "description" : "Request containing a ScheduledEventConfiguration entity",
        "example" : {
          "name" : "scheduled.bill.enddateEvent",
          "entity" : "Bill",
          "field" : "endDate",
          "offset" : 5
        },
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "ConfigOptionsResponse" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : ""
          },
          "label" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : "Response containing an options for a configuration"
      },
      "BalanceLineItemType" : {
        "type" : "string",
        "description" : "Available line item types for Balances",
        "enum" : [ "STANDING_CHARGE", "USAGE", "MINIMUM_SPEND", "COUNTER_RUNNING_TOTAL_CHARGE", "COUNTER_ADJUSTMENT_DEBIT", "AD_HOC" ]
      },
      "PaginatedUploadJobResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/UploadJobResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "PaginatedBillJobResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/BillJobResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "UpdateBillStatusRequest" : {
        "required" : [ "status" ],
        "type" : "object",
        "properties" : {
          "status" : {
            "description" : "The new status you want to assign to the Bill. Must be one \"Pending\" or \"Approved\".",
            "$ref" : "#/components/schemas/BillStatus"
          }
        },
        "description" : ""
      },
      "DestinationConfiguration" : {
        "required" : [ "apiName", "authConfigOptions", "authType", "categories", "destination", "destinationConfigOptions", "displayName", "released" ],
        "type" : "object",
        "properties" : {
          "apiName" : {
            "description" : "",
            "$ref" : "#/components/schemas/DestinationType"
          },
          "destination" : {
            "type" : "string",
            "description" : "The destination's unique identifier or name."
          },
          "displayName" : {
            "type" : "string",
            "description" : "A human-readable display name for the destination."
          },
          "destinationConfigOptions" : {
            "description" : "An array of objects, each representing a specific configuration option available for this destination.",
            "$ref" : "#/components/schemas/ConfigOptions"
          },
          "authConfigOptions" : {
            "description" : "An array of objects detailing authentication configuration options for the destination.",
            "$ref" : "#/components/schemas/ConfigOptions"
          },
          "released" : {
            "type" : "boolean",
            "description" : "A boolean indicating whether this destination configuration is released and available for use.\n\n* TRUE - Configuration is released.\n* FALSE - Configuration is not released."
          },
          "authType" : {
            "type" : "string",
            "description" : "The type of authentication required for this destination *(e.g., OAuth, API Key)*."
          },
          "categories" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "type" : "string"
            }
          }
        },
        "description" : "Configuration details for a specific destination within an entity."
      },
      "BalanceRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequestWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "accountId", "code", "currency", "endDate", "name", "startDate" ],
          "type" : "object",
          "properties" : {
            "code" : {
              "maxLength" : 80,
              "minLength" : 1,
              "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
              "type" : "string",
              "description" : "Unique short code for the Balance."
            },
            "name" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The official name for the Balance. "
            },
            "description" : {
              "type" : "string",
              "description" : "A description of the Balance."
            },
            "accountId" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The unique identifier (UUID) for the end customer Account."
            },
            "startDate" : {
              "type" : "string",
              "description" : "The date/time *(in ISO 8601 format)* when the Balance becomes active.",
              "format" : "date-time"
            },
            "endDate" : {
              "type" : "string",
              "description" : "The date/time *(in ISO 8601 format)* after which the Balance will no longer be active for the Account.\n\n**Note:** You can use the `rolloverEndDate` request parameter to define an extended grace period for continued draw-down against the Balance if any amount remains when the specified `endDate` is reached.",
              "format" : "date-time"
            },
            "currency" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The currency code used for the Balance amount. For example: USD, GBP or EUR. "
            },
            "rolloverAmount" : {
              "minimum" : 0,
              "type" : "number",
              "description" : "The maximum amount that can be carried over past the Balance end date for draw-down at billing if there is any unused Balance amount when the end date is reached. Works with `rolloverEndDate` to define the amount and duration of a Balance \"grace period\". *(Optional)*\n\n**Notes:**\n- If you leave `rolloverAmount` empty and only enter a `rolloverEndDate`, any amount left over after the Balance end date is reached will be drawn-down against up to the specified `rolloverEndDate`.\n- You must enter a `rolloverEndDate`. If you only enter a `rolloverAmount` without entering a `rolloverEndDate`, you'll receive an error when trying to create or update the Balance.\n- If you don't want to grant any grace period for outstanding Balance amounts, then do not use `rolloverAmount` and `rolloverEndDate`. "
            },
            "rolloverEndDate" : {
              "type" : "string",
              "description" : "The end date *(in ISO 8601 format)* for the grace period during which unused Balance amounts can be carried over and drawn-down against at billing.\n\n**Note:** Use `rolloverAmount` if you want to specify a maximum amount that can be carried over and made available for draw-down.",
              "format" : "date-time"
            },
            "balanceDrawDownDescription" : {
              "maxLength" : 200,
              "type" : "string",
              "description" : "A description for the bill line items for draw-down charges against the Balance. *(Optional).*\n"
            },
            "overageSurchargePercent" : {
              "type" : "number",
              "description" : "Define a surcharge level, as a percentage of regular usage rating, applied to overages *(usage charges that exceed the Balance amount)*. For example, if the regular usage rate is $10 per unit of usage consumed and `overageSurchargePercent` is set at 10%, then any usage charged above the original Balance amount is charged at $11 per unit of usage.",
              "format" : "double"
            },
            "overageDescription" : {
              "maxLength" : 200,
              "type" : "string",
              "description" : "A description for Bill line items overage charges."
            },
            "productIds" : {
              "type" : "array",
              "description" : "Specify the Products whose consumption charges due at billing can be drawn-down against the Balance amount.\n\n**Note:** If you don't specify any Products for Balance draw-down, by default the consumption charges for any Product the Account consumes will be drawn-down against the Balance amount.",
              "items" : {
                "type" : "string"
              }
            },
            "lineItemTypes" : {
              "type" : "array",
              "description" : "Specify the line item charge types that can draw-down at billing against the  Balance amount. Options are:\n- `\"MINIMUM_SPEND\"`\n- `\"STANDING_CHARGE\"`\n- `\"USAGE\"`\n- `\"COUNTER_RUNNING_TOTAL_CHARGE\"`\n- `\"COUNTER_ADJUSTMENT_DEBIT\"`\n- `AD_HOC`\n\n**NOTE:** If no charge types are specified, by default *all types* can draw-down against the Balance amount at billing.",
              "items" : {
                "$ref" : "#/components/schemas/BalanceLineItemType"
              }
            },
            "contractId" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of a Contract on the Account that the Balance will be added to."
            },
            "consumptionsAccountingProductId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "Product ID that any Balance Consumed line items will be attributed to for accounting purposes.(*Optional*)"
            },
            "feesAccountingProductId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "Product ID that any Balance Fees line items will be attributed to for accounting purposes.(*Optional*)"
            },
            "allowOverdraft" : {
              "type" : "boolean",
              "description" : "Allow balance amounts to fall below zero. This feature is enabled on request. Please get in touch with m3ter Support or your m3ter contact if you would like it enabling for your organization(s).",
              "example" : false
            },
            "grant" : {
              "type" : "boolean",
              "description" : "A Boolean flag indicating whether the Balance is enabled as a Grant:\n* **true** - the Balance is enabled as a Grant.\n* **false** - the Balance is not enabled as a Grant.*(Default)*\n\n**NOTE: Grants in Preview Release!** Please note that the Grants feature is currently available only in Preview release version. See [Feature Release Stages](https://m3ter.mintlify.app/guides/getting-started/feature-release-stages) for Preview release definition.",
              "example" : false
            }
          }
        } ]
      },
      "PaginatedContractResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/ContractResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "StatementsBatchJobRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "billIds" ],
          "type" : "object",
          "properties" : {
            "billIds" : {
              "maxItems" : 10,
              "minItems" : 1,
              "type" : "array",
              "description" : "The list of unique identifiers (UUIDs) of the bills associated with the StatementJob.",
              "items" : {
                "type" : "string"
              }
            },
            "includeCsvFormat" : {
              "type" : "boolean",
              "description" : "A Boolean value indicating whether the generated statement includes a CSV format.\n\n* TRUE - includes the statement in CSV format.\n* FALSE - no CSV format statement."
            },
            "filters" : {
              "description" : "",
              "allOf" : [ {
                "$ref" : "#/components/schemas/StatementJobFilters"
              }, {
                "type" : "object",
                "description" : "Optional filters to generate a statement for specific usage only."
              } ]
            }
          }
        } ]
      },
      "OperationalDataType" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "BILLS", "COMMITMENTS", "ACCOUNTS", "BALANCES", "CONTRACTS", "ACCOUNT_PLANS", "AGGREGATIONS", "PLANS", "PRICING", "PRICING_BANDS", "BILL_LINE_ITEMS", "METERS", "PRODUCTS", "COMPOUND_AGGREGATIONS", "PLAN_GROUPS", "PLAN_GROUP_LINKS", "PLAN_TEMPLATES", "BALANCE_TRANSACTIONS", "TRANSACTION_TYPES", "CHARGES" ]
      },
      "UsageFilter" : {
        "required" : [ "dimensionCode", "mode", "value" ],
        "type" : "object",
        "properties" : {
          "dimensionCode" : {
            "minLength" : 1,
            "type" : "string",
            "description" : ""
          },
          "value" : {
            "minLength" : 1,
            "type" : "string",
            "description" : ""
          },
          "mode" : {
            "description" : "",
            "$ref" : "#/components/schemas/UsageFilterMode"
          }
        },
        "description" : "Filters that determine which usage records are included in contract billing"
      },
      "UserResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "firstName" : {
              "type" : "string",
              "description" : "The first name of the user."
            },
            "lastName" : {
              "type" : "string",
              "description" : "The surname of the user. "
            },
            "contactNumber" : {
              "type" : "string",
              "description" : "The user's contact telephone number."
            },
            "email" : {
              "type" : "string",
              "description" : "The email address for this user. "
            },
            "organizations" : {
              "type" : "array",
              "description" : "An array listing the Organizations where this user has access.",
              "items" : {
                "type" : "string"
              }
            },
            "firstAcceptedTermsAndConditions" : {
              "type" : "string",
              "description" : "The date and time *(in ISO 8601 format)* when this user first accepted the the m3ter terms and conditions.  ",
              "format" : "date-time"
            },
            "lastAcceptedTermsAndConditions" : {
              "type" : "string",
              "description" : "The date and time *(in ISO 8601 format)* when this user last accepted the the m3ter terms and conditions.  ",
              "format" : "date-time"
            },
            "supportUser" : {
              "type" : "boolean",
              "description" : "Indicates whether this is a m3ter Support user. "
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the user was created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the user was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The user who created this user."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who last modified this user record."
            }
          }
        } ]
      },
      "LookupTableRevisionDataItemDeleteRequest" : {
        "type" : "object",
        "properties" : {
          "version" : {
            "type" : "integer",
            "description" : "The version of the Lookup Table Revision Data.",
            "format" : "int64"
          }
        },
        "description" : ""
      },
      "ApproveBillsRequest" : {
        "required" : [ "billIds" ],
        "type" : "object",
        "properties" : {
          "billIds" : {
            "minItems" : 1,
            "type" : "array",
            "description" : "Use to specify a collection of Bills by their IDs for batch approval",
            "items" : {
              "type" : "string"
            }
          }
        },
        "description" : ""
      },
      "Account" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string",
            "description" : "Account code"
          },
          "name" : {
            "type" : "string",
            "description" : "Account name"
          }
        },
        "description" : "Response containing accounts parameters that can be used for filtering."
      },
      "ExportDestinationBaseResponse" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "The name of the data Export Destination."
          },
          "code" : {
            "type" : "string",
            "description" : "The code of the data Export Destination."
          },
          "destinationType" : {
            "description" : "",
            "$ref" : "#/components/schemas/DataExportDestinationType"
          },
          "dtCreated" : {
            "type" : "string",
            "description" : "The DateTime when the Export Destination was created.",
            "format" : "date-time"
          },
          "dtLastModified" : {
            "type" : "string",
            "description" : "The DateTime when the Export Destination was last modified.",
            "format" : "date-time"
          },
          "createdBy" : {
            "type" : "string",
            "description" : "The id of the user who created the Export Destination."
          },
          "lastModifiedBy" : {
            "type" : "string",
            "description" : "The id of the user who last modified the Export Destination."
          }
        },
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        } ]
      },
      "ContentType" : {
        "type" : "string",
        "description" : "The content type of the file",
        "enum" : [ "TEXT_CSV", "APPLICATION_JSONL" ],
        "x-type" : "String"
      },
      "ResourceGroupRequest" : {
        "required" : [ "name" ],
        "type" : "object",
        "properties" : {
          "version" : {
            "type" : "integer",
            "description" : "",
            "format" : "int64"
          },
          "name" : {
            "maxLength" : 100,
            "minLength" : 1,
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "StatementDefinitionResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "id" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the StatementDefinition. "
            },
            "name" : {
              "type" : "string",
              "description" : "Descriptive name for the StatementDefinition providing context and information."
            },
            "version" : {
              "type" : "integer",
              "description" : "The version number. Default value when newly created is one.",
              "format" : "int64"
            },
            "aggregationFrequency" : {
              "description" : "This specifies how often the Statement should aggregate data.",
              "$ref" : "#/components/schemas/AggregationFrequency"
            },
            "includePricePerUnit" : {
              "type" : "boolean",
              "description" : "A Boolean indicating whether to include the price per unit in the Statement.\n\n* TRUE - includes the price per unit.\n* FALSE - excludes the price per unit."
            },
            "dimensions" : {
              "type" : "array",
              "description" : "An array of objects, each representing a Dimension data field from a Meter *(for Meters that have Dimensions setup)*.",
              "items" : {
                "$ref" : "#/components/schemas/Dimension"
              }
            },
            "measures" : {
              "type" : "array",
              "description" : "An array of objects, each representing a Measure data field from a Meter.",
              "items" : {
                "$ref" : "#/components/schemas/Measure"
              }
            },
            "generateSlimStatements" : {
              "type" : "boolean",
              "description" : ""
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the StatementDefinition was created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the StatementDefinition was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who created this StatementDefinition."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who last modified this StatementDefinition."
            }
          }
        } ]
      },
      "EventFieldsResponse" : {
        "type" : "object",
        "properties" : {
          "events" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "object",
              "additionalProperties" : {
                "type" : "string"
              }
            },
            "description" : "An object containing the list of Fields for the queried Event Type. \n\nSee the 200 Response sample where we have queried to get the Fields for the `configuration.commitment.created` Event Type. \n\n**Note:** `new` represents the attributes the newly created object has."
          }
        },
        "description" : "",
        "example" : {
          "events" : {
            "configuration.commitment.created" : {
              "new.accountCode" : "string",
              "new.accountId" : "string",
              "new.accountingProductId" : "string",
              "new.amount" : "double",
              "new.amountFirstBill" : "double",
              "new.amountPrePaid" : "double",
              "new.amountSpent" : "double",
              "new.billEpoch" : "string",
              "new.billingInterval" : "int",
              "new.billingOffset" : "int",
              "new.billingPlanId" : "string",
              "new.commitmentFeeBillInAdvance" : "boolean",
              "new.commitmentFeeDescription" : "string",
              "new.commitmentUsageDescription" : "string",
              "new.contractId" : "string",
              "new.currency" : "string",
              "new.customFields" : "map",
              "new.endDate" : "string",
              "new.feeDates" : "array",
              "new.id" : "string",
              "new.overageDescription" : "string",
              "new.overageSurchargePercent" : "double",
              "new.productIds" : "array",
              "new.startDate" : "string"
            }
          }
        }
      },
      "BillJobBillingFrequency" : {
        "type" : "string",
        "description" : "Defines how often Bills are generated.\n- **Daily**. Starting at midnight each day, covering a twenty-four hour period following.\n- **Weekly**. Starting at midnight on a Monday morning covering the seven-day period following.\n- **Monthly**. Starting at midnight on the morning of the first day of each month covering the entire calendar month following.\n- **Annually**. Starting at midnight on the morning of the first day of each year covering the entire calendar year following.\n- **Ad_Hoc**. Use this setting when a custom billing schedule is used for billing an Account, such as for billing of Prepayment/Commitment fees using a custom billing schedule.\n",
        "enum" : [ "DAILY", "WEEKLY", "MONTHLY", "ANNUALLY", "AD_HOC" ]
      },
      "ResourceGroupResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "name" : {
              "type" : "string",
              "description" : "The name of the Resource Group."
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the Resource Group was created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the Resource Group was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who created this Resource Group."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who last modified this Resource Group."
            }
          }
        } ]
      },
      "LookupTableDataArchivedResponse" : {
        "type" : "object",
        "properties" : {
          "url" : {
            "type" : "string",
            "description" : "The presigned URL"
          },
          "expiry" : {
            "type" : "string",
            "description" : "The URL expiry time",
            "format" : "date-time"
          }
        },
        "description" : "Response containing the archive job URL details"
      },
      "BillingFrequency" : {
        "type" : "string",
        "description" : "Defines how often Bills are generated.\n\n* **Daily**. Starting at midnight each day, covering a twenty-four hour period following.\n\n* **Weekly**. Starting at midnight on a Monday morning covering the seven-day period following.\n\n* **Monthly**. Starting at midnight on the morning of the first day of each month covering the entire calendar month following.\n\n* **Annually**. Starting at midnight on the morning of the first day of each year covering the entire calendar year following.\n\n* **Ad_Hoc**. Use this setting when a custom billing schedule is used for billing an Account, such as for billing of Prepayment/Commitment fees using a custom billing schedule.\n",
        "enum" : [ "DAILY", "WEEKLY", "MONTHLY", "ANNUALLY", "AD_HOC", "MIXED" ]
      },
      "TimePeriod" : {
        "type" : "string",
        "description" : "Define a time period to control the range of usage data you want the data export to contain when it runs:\n\n* **TODAY**. Data collected for the current day up until the time the export is scheduled to run.\n* **YESTERDAY**. Data collected for the day before the export runs under the schedule - that is, the 24 hour period from midnight to midnight of the day before.\n* **PREVIOUS_WEEK**, **PREVIOUS_MONTH**, **PREVIOUS_QUARTER**, **PREVIOUS_YEAR**. Data collected for the previous full week, month, quarter, or year period. For example if **PREVIOUS_WEEK**, weeks run Monday to Monday - if the export is scheduled to run on June 12th 2024, which is a Wednesday, the export will contain data for the period running from Monday, June 3rd 2024 to midnight on Sunday, June 9th 2024.\n* **WEEK_TO_DATE**, **MONTH_TO_DATE**, or **YEAR_TO_DATE**. Data collected for the period covering the current week, month, or year period. For example if **WEEK_TO_DATE**, weeks run Monday to Monday - if the Export is scheduled to run at 10 a.m. UTC on October 16th 2024, which is a Wednesday, it will contain all usage data collected starting Monday October 14th 2024 through to the Wednesday at 10 a.m. UTC of the current week.\n* **LAST_12_HOURS**. Data collected for the twelve hour period up to the start of the hour in which the export is scheduled to run.\n* **LAST_7_DAYS**, **LAST_30_DAYS**, **LAST_35_DAYS**, **LAST_90_DAYS**, **LAST_120_DAYS** **LAST_YEAR**. Data collected for the selected period prior to the date the export is scheduled to run. For example if **LAST_30_DAYS** and the export is scheduled to run for any time on June 15th 2024, it will contain usage data collected for the previous 30 days - starting May 16th 2024 through to midnight on June 14th 2024\n\nFor more details and examples, see the [Time Period](https://www.m3ter.com/docs/guides/data-exports/creating-export-schedules#time-period) section in our main User Documentation.",
        "enum" : [ "TODAY", "YESTERDAY", "WEEK_TO_DATE", "MONTH_TO_DATE", "YEAR_TO_DATE", "PREVIOUS_WEEK", "PREVIOUS_MONTH", "PREVIOUS_QUARTER", "PREVIOUS_YEAR", "LAST_12_HOURS", "LAST_7_DAYS", "LAST_30_DAYS", "LAST_35_DAYS", "LAST_90_DAYS", "LAST_120_DAYS", "LAST_YEAR" ]
      },
      "MeterGroupRequest" : {
        "required" : [ "name" ],
        "type" : "object",
        "properties" : {
          "version" : {
            "type" : "integer",
            "description" : "",
            "format" : "int64"
          },
          "name" : {
            "maxLength" : 200,
            "minLength" : 1,
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "UsageSavedQueryResponse" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Name of the saved query"
          },
          "usageQuery" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/UsageQueryRequestWithTimePeriod"
            } ]
          }
        },
        "description" : "Request representing a usage saved query",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        } ]
      },
      "DataExplorerGroup" : {
        "type" : "object",
        "properties" : {
          "groupType" : {
            "description" : "",
            "$ref" : "#/components/schemas/DataExplorerGroupType"
          },
          "DataExplorerGroup" : {
            "description" : "Group by a field",
            "allOf" : [ {
              "$ref" : "#/components/schemas/DataExplorerGroup_1"
            }, {
              "type" : "object",
              "discriminator" : {
                "propertyName" : "groupType",
                "mapping" : {
                  "ACCOUNT" : "#/components/schemas/DataExplorerAccountGroup",
                  "DIMENSION" : "#/components/schemas/DataExplorerDimensionGroup",
                  "TIME" : "#/components/schemas/DataExplorerTimeGroup"
                }
              }
            } ]
          }
        },
        "description" : "Group by a field",
        "discriminator" : {
          "propertyName" : "groupType",
          "mapping" : {
            "ACCOUNT" : "#/components/schemas/DataExplorerAccountGroup",
            "DIMENSION" : "#/components/schemas/DataExplorerDimensionGroup",
            "TIME" : "#/components/schemas/DataExplorerTimeGroup"
          }
        }
      },
      "DataField" : {
        "required" : [ "category", "code", "name" ],
        "type" : "object",
        "properties" : {
          "category" : {
            "description" : "The type of field (WHO, WHAT, WHERE, MEASURE, METADATA, INCOME, COST, OTHER).",
            "$ref" : "#/components/schemas/DataFieldCategory"
          },
          "code" : {
            "maxLength" : 80,
            "minLength" : 1,
            "pattern" : "^[\\p{L}_$][\\p{L}_$0-9]*$",
            "type" : "string",
            "description" : "Short code to identify the field\n\n**NOTE:** Code has a maximum length of 80 characters and can only contain letters, numbers, underscore, and the dollar character, and must not start with a number."
          },
          "name" : {
            "maxLength" : 200,
            "minLength" : 1,
            "type" : "string",
            "description" : "Descriptive name of the field."
          },
          "unit" : {
            "maxLength" : 50,
            "minLength" : 1,
            "type" : "string",
            "description" : "The units to measure the data with. Should conform to *Unified Code for Units of Measure* (UCUM). Required only for numeric field categories."
          }
        },
        "description" : ""
      },
      "ProductResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "name" : {
              "type" : "string",
              "description" : "Descriptive name for the Product providing context and information."
            },
            "code" : {
              "type" : "string",
              "description" : "A unique short code to identify the Product. It should not contain control chracters or spaces. "
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the Product was created.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The date and time *(in ISO-8601 format)* when the Product was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who created this Product."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The unique identifier (UUID) of the user who last modified this Product."
            }
          }
        } ]
      },
      "AvailableConfigurationResponse" : {
        "required" : [ "globalConfigurationOptions", "selectedConfigurations", "supportedEntities" ],
        "type" : "object",
        "properties" : {
          "supportedEntities" : {
            "type" : "object",
            "additionalProperties" : {
              "$ref" : "#/components/schemas/EntityConfiguration"
            },
            "description" : "An object mapping entity types to their respective `EntityConfiguration`. Provides information on which entities are supported and their configurations."
          },
          "selectedConfigurations" : {
            "type" : "object",
            "additionalProperties" : {
              "$ref" : "#/components/schemas/ConfigOptions"
            },
            "description" : ""
          },
          "globalConfigurationOptions" : {
            "description" : "An array of objects, each representing a global configuration option available for integrations.",
            "$ref" : "#/components/schemas/ConfigOptions"
          }
        },
        "description" : "Response containing available configuration options for integrations."
      },
      "LookupTableRevisionRequest" : {
        "required" : [ "fields", "keys", "name" ],
        "type" : "object",
        "properties" : {
          "name" : {
            "maxLength" : 200,
            "minLength" : 1,
            "type" : "string",
            "description" : "Descriptive name for the Lookup Table Revision.",
            "x-size-message" : "Name cannot exceed 200 characters"
          },
          "startDate" : {
            "type" : "string",
            "description" : "The start date of the Lookup Table Revision.",
            "format" : "date-time"
          },
          "fields" : {
            "maxItems" : 10,
            "minItems" : 2,
            "type" : "array",
            "description" : "The list of fields of the Lookup Table Revision.",
            "items" : {
              "$ref" : "#/components/schemas/LookupTableRevisionField"
            },
            "x-size-message" : "Must specify between 2 and 10 fields",
            "x-not-null-message" : "Fields cannot be blank"
          },
          "keys" : {
            "maxItems" : 5,
            "minItems" : 1,
            "type" : "array",
            "description" : "The ordered keys of the Lookup Table Revision.",
            "example" : [ "foo", "bar" ],
            "items" : {
              "type" : "string"
            },
            "x-size-message" : "Must specify between 1 and 5 keys",
            "x-not-null-message" : "Keys cannot be blank"
          }
        },
        "description" : "Request containing a LookupTableRevision entity",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequestWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "PaginatedBalanceTransactionScheduleResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/BalanceTransactionScheduleResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "LookupTableRevisionStatusRequest" : {
        "type" : "object",
        "properties" : {
          "status" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/LookupTableRevisionStatus"
            } ]
          },
          "version" : {
            "type" : "integer",
            "description" : "The version of the LookupTableRevision.",
            "format" : "int64"
          }
        },
        "description" : "Request containing the status details for a LookupTableRevision entity"
      },
      "SystemResponse" : {
        "type" : "object",
        "properties" : {
          "identifier" : {
            "type" : "string",
            "description" : "System name"
          },
          "displayName" : {
            "type" : "string",
            "description" : "User friendly display name"
          },
          "validationSupported" : {
            "type" : "boolean",
            "description" : "Whether or not m3ter supports validation of requests for this system. Requests will need to made without validation"
          },
          "supportedAuthTypes" : {
            "type" : "array",
            "description" : "List of supported auth types",
            "items" : {
              "$ref" : "#/components/schemas/AuthType"
            }
          }
        },
        "description" : "Response containing information about a system that m3ter can integrate with"
      },
      "BalanceTransactionRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "amount" ],
          "type" : "object",
          "properties" : {
            "description" : {
              "type" : "string",
              "description" : "A brief description explaining the purpose and context of the transaction."
            },
            "amount" : {
              "type" : "number",
              "description" : "The financial value of the transaction."
            },
            "paid" : {
              "type" : "number",
              "description" : "The payment amount if the payment currency differs from the Balance currency."
            },
            "currencyPaid" : {
              "type" : "string",
              "description" : "The currency code of the payment if it differs from the Balance currency. For example: USD, GBP or EUR. "
            },
            "transactionTypeId" : {
              "maxLength" : 36,
              "pattern" : "^[a-zA-Z0-9-]*$",
              "type" : "string",
              "description" : "The unique identifier (UUID) of the transaction type. This is obtained from the list of created Transaction Types within the Organization Configuration. "
            },
            "appliedDate" : {
              "type" : "string",
              "description" : "The date *(in ISO 8601 format)* when the Balance transaction was applied.",
              "format" : "date-time"
            },
            "transactionDate" : {
              "type" : "string",
              "description" : "The date *(in ISO 8601 format)* when the transaction occurred.",
              "format" : "date-time"
            }
          }
        } ]
      },
      "Aggregation" : {
        "type" : "string",
        "description" : "Specifies the computation method applied to usage data collected in `targetField`. Aggregation unit value depends on the **Category** configured for the selected targetField.\n\n* **SUM**. Adds the values. Can be applied to a **Measure**, **Income**, or **Cost** `targetField`.\n\n* **MIN**. Uses the minimum value. Can be applied to a **Measure**, **Income**, or **Cost** `targetField`.\n\n* **MAX**. Uses the maximum value. Can be applied to a **Measure**, **Income**, or **Cost** `targetField`.\n\n* **COUNT**. Counts the number of values. Can be applied to a **Measure**, **Income**, or **Cost** `targetField`.\n\n* **LATEST**. Uses the most recent value. Can be applied to a **Measure**, **Income**, or **Cost** `targetField`. Note: Based on the timestamp `ts` value of usage data measurement submissions. If using this method, please ensure *distinct* `ts` values are used for usage data measurement submissions.\n\n* **MEAN**. Uses the arithmetic mean of the values. Can be applied to a **Measure**, **Income**, or **Cost** `targetField`.\n\n* **UNIQUE**. Uses unique values and returns a count of the number of unique values. Can be applied to a **Metadata** `targetField`.",
        "enum" : [ "SUM", "MIN", "MAX", "COUNT", "LATEST", "MEAN", "UNIQUE", "CUSTOM_SQL" ]
      },
      "JobStatus" : {
        "type" : "string",
        "description" : "The status of the file upload job. ",
        "enum" : [ "notUploaded", "running", "failed", "succeeded" ],
        "x-enum-varnames" : [ "notUploaded", "running", "failed", "succeeded" ]
      },
      "ExternalSystemResponse" : {
        "required" : [ "name" ],
        "type" : "object",
        "properties" : {
          "name" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "The name of the external system."
          },
          "tables" : {
            "type" : "array",
            "description" : "An array containing the list of external system tables permitted in mappings.",
            "items" : {
              "type" : "string"
            }
          },
          "allowCustomExternalTables" : {
            "type" : "boolean",
            "description" : ""
          }
        },
        "description" : "Response containing external system and permitted tables."
      },
      "TargetType" : {
        "type" : "string",
        "description" : "When adding to or removing from a Resource Group, specify whether a single item or group:\n- `item` \n\t- *Add Item* call: use to add a single meter to a Resource Group\n\t- *Remove Item* call: use to remove a single from a Resource Group.\n- `group`\n\t- *Add Item* call: use to add a Resource Group to another Resource Group and form a nested Resource Group\n\t- *Remove Item* call: use remove a nested Resource Group from a Resource Group.",
        "enum" : [ "ITEM", "GROUP" ]
      },
      "MeterRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequestWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "code", "dataFields", "derivedFields", "name" ],
          "type" : "object",
          "properties" : {
            "productId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "UUID of the product the Meter belongs to. *(Optional)* - if left blank, the Meter is global."
            },
            "groupId" : {
              "maxLength" : 36,
              "minLength" : 36,
              "type" : "string",
              "description" : "UUID of the group the Meter belongs to. *(Optional)*."
            },
            "name" : {
              "maxLength" : 200,
              "minLength" : 1,
              "type" : "string",
              "description" : "Descriptive name for the Meter."
            },
            "code" : {
              "maxLength" : 80,
              "minLength" : 1,
              "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
              "type" : "string",
              "description" : "Code of the Meter - unique short code used to identify the Meter.\n\n**NOTE:** Code has a maximum length of 80 characters and must not contain non-printable or whitespace characters (except space), and cannot start/end with whitespace."
            },
            "dataFields" : {
              "maxItems" : 15,
              "minItems" : 1,
              "type" : "array",
              "description" : "Used to submit categorized raw usage data values for ingest into the platform - either numeric quantitative values or non-numeric data values. At least one required per Meter; maximum 15 per Meter.",
              "items" : {
                "$ref" : "#/components/schemas/DataField"
              }
            },
            "derivedFields" : {
              "maxItems" : 15,
              "type" : "array",
              "description" : "Used to submit usage data values for ingest into the platform that are the result of a calculation performed on `dataFields`, `customFields`, or system `Timestamp` fields. Raw usage data is not submitted using `derivedFields`. Maximum 15 per Meter. *(Optional)*.\n\n**Note:** Required parameter. If you want to create a Meter without Derived Fields, use an empty array `[]`. If you use a `null`, you'll receive an error.",
              "items" : {
                "$ref" : "#/components/schemas/DerivedField"
              }
            }
          }
        } ]
      },
      "ProductRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequestWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "code", "name" ],
          "type" : "object",
          "properties" : {
            "name" : {
              "maxLength" : 200,
              "minLength" : 1,
              "type" : "string",
              "description" : "Descriptive name for the Product providing context and information."
            },
            "code" : {
              "maxLength" : 80,
              "minLength" : 1,
              "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
              "type" : "string",
              "description" : "A unique short code to identify the Product. It should not contain control chracters or spaces. "
            }
          }
        } ]
      },
      "OrgUserInvitationRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/UserRequest"
        }, {
          "type" : "object",
          "properties" : {
            "permissionPolicyIds" : {
              "type" : "array",
              "description" : "The IDs of the permission policies the invited user has been assigned. This controls the access rights and privileges that this user will have when working in the m3ter Organization. ",
              "items" : {
                "type" : "string"
              }
            },
            "dtEndAccess" : {
              "type" : "string",
              "description" : "The date when access will end for the user *(in ISO-8601 format)*. Leave blank for no end date, which gives the user permanent access. ",
              "format" : "date-time"
            },
            "dtExpiry" : {
              "type" : "string",
              "description" : "The date when the invite expires *(in ISO-8601 format)*. After this date the invited user can no longer accept the invite. By default, any invite is valid for 30 days from the date the invite is sent.",
              "format" : "date-time"
            }
          }
        } ]
      },
      "OrganizationConfigResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "timezone" : {
              "type" : "string",
              "description" : "The timezone for the Organization. ",
              "example" : "UTC",
              "default" : "UTC"
            },
            "yearEpoch" : {
              "type" : "string",
              "description" : "The first bill date *(in ISO-8601 format)* for yearly billing periods.",
              "example" : "2022-01-01",
              "default" : "2022-01-01"
            },
            "monthEpoch" : {
              "type" : "string",
              "description" : "The first bill date *(in ISO-8601 format)* for monthly billing periods.",
              "example" : "2022-01-01",
              "default" : "2022-01-01"
            },
            "weekEpoch" : {
              "type" : "string",
              "description" : "The first bill date *(in ISO-8601 format)* for weekly billing periods.",
              "example" : "2022-01-04",
              "default" : "2022-01-04"
            },
            "dayEpoch" : {
              "type" : "string",
              "description" : "The first bill date *(in ISO-8601 format)* for daily billing periods.",
              "example" : "2022-01-01",
              "default" : "2022-01-01"
            },
            "currency" : {
              "type" : "string",
              "description" : "The currency code for the currency used in this Organization. For example: USD, GBP, or EUR."
            },
            "currencyConversions" : {
              "type" : "array",
              "description" : "Currency conversion rates from Bill currency to Organization currency. \n\nFor example, if Account is billed in GBP and Organization is set to USD, Bill line items are calculated in GBP and then converted to USD using the defined rate. ",
              "items" : {
                "$ref" : "#/components/schemas/CurrencyConversion"
              }
            },
            "daysBeforeBillDue" : {
              "type" : "integer",
              "description" : "The number of days after the Bill generation date shown on Bills as the due date.",
              "format" : "int32"
            },
            "scheduledBillInterval" : {
              "type" : "number",
              "description" : "Specifies the required interval for updating bills. \n\n* **For portions of an hour (minutes)**. Two options: **0.25** (15 minutes) and **0.5** (30 minutes).\n* **For full hours.** Eight possible values: **1**, **2**, **3**, **4**, **6**, **8**, **12**, or **24**.\n* **Default.** The default is **0**, which disables scheduling.",
              "format" : "double"
            },
            "scheduledBillOffset" : {
              "type" : "integer",
              "description" : "Offset (hours) within the scheduled interval to run the job, interpreted in the organization's timezone. For daily (24h) schedules this is the hour of day (0-23). Only supported when ScheduledBillInterval is 24 (daily) at present.",
              "format" : "int32"
            },
            "standingChargeBillInAdvance" : {
              "type" : "boolean",
              "description" : "Specifies whether the standing charge is billed in advance at the start of each billing period, or billed in arrears at the end of each billing period. \n\n* **TRUE** - bill in advance *(start of each billing period)*.\n* **FALSE** - bill in arrears *(end of each billing period)*."
            },
            "commitmentFeeBillInAdvance" : {
              "type" : "boolean",
              "description" : "Specifies whether commitments *(prepayments)* are billed in advance at the start of each billing period, or billed in arrears at the end of each billing period. \n\n* **TRUE** - bill in advance *(start of each billing period)*.\n* **FALSE** - bill in arrears *(end of each billing period)*."
            },
            "minimumSpendBillInAdvance" : {
              "type" : "boolean",
              "description" : "Specifies whether minimum spend amounts are billed in advance at the start of each billing period, or billed in arrears at the end of each billing period. \n\n* **TRUE** - bill in advance *(start of each billing period)*.\n* **FALSE** - bill in arrears *(end of each billing period)*."
            },
            "autoApproveBillsGracePeriod" : {
              "type" : "integer",
              "description" : "Grace period before bills are auto-approved. Used in combination with the field `autoApproveBillsGracePeriodUnit`.",
              "format" : "int32"
            },
            "autoApproveBillsGracePeriodUnit" : {
              "description" : " ",
              "$ref" : "#/components/schemas/TimePeriodUnit"
            },
            "externalInvoiceDate" : {
              "description" : "",
              "$ref" : "#/components/schemas/InvoiceDate"
            },
            "suppressedEmptyBills" : {
              "type" : "boolean",
              "description" : "Specifies whether to supress generating bills that have no line items. \n\n* **TRUE** - prevents generating bills with no line items.\n* **FALSE** - bills are still generated even when they have no line items. "
            },
            "consolidateBills" : {
              "type" : "boolean",
              "description" : "Specifies whether to consolidate different billing frequencies onto the same bill.\n\n* **TRUE** - consolidate different billing frequencies onto the same bill.\n* **FALSE** - bills are not consolidated."
            },
            "defaultStatementDefinitionId" : {
              "type" : "string",
              "description" : "Organization level default `statementDefinitionId` to be used when there is no statement definition linked to the account.\n\nStatement definitions are used to generate bill statements, which are informative backing sheets to invoices. "
            },
            "billPrefix" : {
              "type" : "string",
              "description" : "Prefix to be used for sequential invoice numbers. This will be combined with the `sequenceStartNumber`."
            },
            "sequenceStartNumber" : {
              "type" : "integer",
              "description" : "The starting number to be used for sequential invoice numbers. This will be combined with the `billPrefix`.",
              "format" : "int32"
            },
            "autoGenerateStatementMode" : {
              "description" : "Specifies whether to auto-generate statements once Bills are *approved* or *locked*. It will not auto-generate if a bill is in *pending* state.\n\nThe default value is **None**.\n\n- **None**. Statements will not be auto-generated.\n- **JSON**. Statements are auto-generated in JSON format.\n- **JSON and CSV**. Statements are auto-generated in both JSON and CSV formats. ",
              "$ref" : "#/components/schemas/StatementAutoGenerateMode"
            },
            "creditApplicationOrder" : {
              "type" : "array",
              "description" : "The order in which any Prepayment or Balance credit amounts on Accounts are to be drawn-down against for billing. Four options:\n- `\"PREPAYMENT\",\"BALANCE\"`. Draw-down against Prepayment credit before Balance credit.\n- `\"BALANCE\",\"PREPAYMENT\"`. Draw-down against Balance credit before Prepayment credit.\n- `\"PREPAYMENT\"`. Only draw-down against Prepayment credit.\n- `\"BALANCE\"`. Only draw-down against Balance credit.",
              "items" : {
                "$ref" : "#/components/schemas/BillCreditType"
              }
            },
            "allowNegativeBalances" : {
              "type" : "boolean",
              "description" : "Allow balance amounts to fall below zero. This feature is enabled on request. Please get in touch with m3ter Support or your m3ter contact if you would like it enabling for your organization(s)."
            },
            "allowOverlappingPlans" : {
              "type" : "boolean",
              "description" : "Allows plans to overlap time periods for different contracts."
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The DateTime when the organization config was created *(in ISO-8601 format)*.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The DateTime when the organization config was last modified *(in ISO-8601 format)*.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The id of the user who created this organization config."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The id of the user who last modified this organization config."
            }
          }
        } ]
      },
      "UsageQueryRequestWithTimePeriod" : {
        "type" : "object",
        "properties" : {
          "timePeriod" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/UsageSavedQueryTimePeriod"
            } ]
          }
        },
        "description" : "Data Explorer saved query request.",
        "allOf" : [ {
          "$ref" : "#/components/schemas/UsageQueryRequest"
        }, {
          "$ref" : "#/components/schemas/RequestWithStartAndEndDate"
        } ]
      },
      "Dimension" : {
        "type" : "object",
        "properties" : {
          "dimensionName" : {
            "type" : "string",
            "description" : "The name of a dimension"
          },
          "dimensionAttributes" : {
            "type" : "array",
            "description" : "Attributes belonging to the dimension",
            "items" : {
              "type" : "string"
            }
          }
        },
        "description" : "A Dimension belonging to a Meter."
      },
      "LineItemMeasures" : {
        "type" : "object",
        "properties" : {
          "convertedSubtotal" : {
            "type" : "number",
            "description" : "",
            "format" : "double"
          },
          "subtotal" : {
            "type" : "number",
            "description" : "",
            "format" : "double"
          },
          "version" : {
            "type" : "number",
            "description" : "",
            "format" : "double"
          },
          "conversionRate" : {
            "type" : "number",
            "description" : "",
            "format" : "double"
          },
          "quantity" : {
            "type" : "number",
            "description" : "",
            "format" : "double"
          },
          "units" : {
            "type" : "number",
            "description" : "",
            "format" : "double"
          }
        },
        "description" : ""
      },
      "CounterPricingRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/BasePricingRequestWithPricingBands"
        }, {
          "$ref" : "#/components/schemas/BasePricingRequest"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "counterId" ],
          "type" : "object",
          "properties" : {
            "counterId" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "UUID of the Counter used to create the pricing."
            },
            "runningTotalBillInAdvance" : {
              "type" : "boolean",
              "description" : "The default value is **TRUE**.\n\n* When **TRUE**, running totals are billed at the start of each billing period.\n\n* When **FALSE**, running totals are billed at the end of each billing period.\n\n*(Optional)*."
            },
            "proRateRunningTotal" : {
              "type" : "boolean",
              "description" : "The default value is **TRUE**.\n\n* When **TRUE**, counter running total charges are prorated and are billed according to the number of days in billing period.\n\n* When **FALSE**, counter running total charges are not prorated and are billed for the entire billing period.\n\n*(Optional)*."
            },
            "proRateAdjustmentDebit" : {
              "type" : "boolean",
              "description" : "The default value is **TRUE**.\n\n* When **TRUE**, counter adjustment debits are prorated and are billed according to the number of days in billing period.\n\n* When **FALSE**, counter adjustment debits are not prorated and are billed for the entire billing period.\n\n*(Optional)*."
            },
            "proRateAdjustmentCredit" : {
              "type" : "boolean",
              "description" : "The default value is **TRUE**.\n\n* When **TRUE**, counter adjustment credits are prorated and are billed according to the number of days in billing period.\n\n* When **FALSE**, counter adjustment credits are not prorated and are billed for the entire billing period.\n\n*(Optional)*."
            }
          }
        } ]
      },
      "BillGroupingKeyRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractPickListRequest"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "exclusive" ],
          "type" : "object",
          "properties" : {
            "exclusive" : {
              "type" : "boolean",
              "description" : "Whether or not the Bill Grouping Key will be used exclusively by one entity."
            }
          }
        } ]
      },
      "LookupTableDataUploadResponse" : {
        "type" : "object",
        "properties" : {
          "jobId" : {
            "type" : "string",
            "description" : "UUID of the upload job"
          },
          "url" : {
            "type" : "string",
            "description" : "The presigned URL"
          },
          "headers" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            },
            "description" : ""
          }
        },
        "description" : "Response containing the upload job URL details"
      },
      "PaginatedDebitLineItemResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/DebitLineItemResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "RoundingMode" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "UP", "DOWN", "CEILING", "FLOOR", "HALF_UP", "HALF_DOWN", "HALF_EVEN", "UNNECESSARY" ]
      },
      "AggregatedUsageDataResponse" : {
        "type" : "object",
        "properties" : {
          "values" : {
            "type" : "array",
            "description" : "List of aggregated usage data",
            "items" : {
              "$ref" : "#/components/schemas/AggregatedUsageData"
            }
          }
        },
        "description" : "Response containing the aggregated usage data"
      },
      "Collection_String_" : {
        "type" : "object",
        "properties" : {
          "empty" : {
            "type" : "boolean",
            "description" : ""
          }
        },
        "description" : ""
      },
      "MeasurementRequest" : {
        "required" : [ "account", "meter", "ts" ],
        "type" : "object",
        "properties" : {
          "uid" : {
            "maxLength" : 128,
            "type" : "string",
            "description" : "Unique ID for this measurement.",
            "x-size-message" : "'uid' cannot exceed 128 characters"
          },
          "meter" : {
            "maxLength" : 80,
            "minLength" : 1,
            "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
            "type" : "string",
            "description" : "Short code identifying the Meter the measurement is for.",
            "x-pattern-message" : "Code must not contain non-printable or whitespace characters (except space), and cannot start/end with whitespace",
            "x-size-message" : "Code cannot exceed 80 characters"
          },
          "account" : {
            "maxLength" : 80,
            "minLength" : 1,
            "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
            "type" : "string",
            "description" : "Code of the Account the measurement is for.",
            "x-pattern-message" : "Code must not contain non-printable or whitespace characters (except space), and cannot start/end with whitespace",
            "x-size-message" : "Code cannot exceed 80 characters"
          },
          "ts" : {
            "type" : "string",
            "description" : "Timestamp for the measurement *(in ISO 8601 format)*.",
            "format" : "date-time",
            "x-not-null-message" : "Required field 'ts' is missing"
          },
          "ets" : {
            "type" : "string",
            "description" : "End timestamp for the measurement *(in ISO 8601 format)*. *(Optional)*.\n\nCan be used in the case a usage event needs to have an explicit start and end rather than being instantaneous.",
            "format" : "date-time"
          },
          "who" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            },
            "description" : "Non-numeric `who` values for data measurements, such as: who logged-in to the service; who was contacted by the service."
          },
          "where" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            },
            "description" : "Non-numeric `where` values for data measurements such as: where someone logged into your service from."
          },
          "what" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            },
            "description" : "Non-numeric `what` values for data measurements such as: what level of user logged into the service."
          },
          "other" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            },
            "description" : "Non-numeric `other` values for measurements such as textual data which is not applicable to **Who**, **What**, or **Where** events."
          },
          "metadata" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            },
            "description" : "Non-numeric `metadata` values for measurements using high-cardinality fields that you don't intend to segment when you aggregate the data.\n\nMaximum length of 256 characters."
          },
          "measure" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "number",
              "format" : "double"
            },
            "description" : "Numeric `measure` values for general quantitative measurements."
          },
          "cost" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "number",
              "format" : "double"
            },
            "description" : "Numeric `cost` values for measurements associated with costs."
          },
          "income" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "number",
              "format" : "double"
            },
            "description" : "Numeric `income` values for measurements associated with income."
          }
        },
        "description" : "",
        "example" : {
          "uid" : "string",
          "meter" : "string",
          "account" : "Acme Corp",
          "ts" : "2022-08-24T14:15:22Z",
          "ets" : "2022-08-24T15:15:22Z",
          "who" : {
            "property1" : "string",
            "property2" : "string"
          },
          "where" : {
            "property1" : "string",
            "property2" : "string"
          },
          "what" : {
            "property1" : "string",
            "property2" : "string"
          },
          "other" : {
            "property1" : "string",
            "property2" : "string"
          },
          "metadata" : {
            "property1" : "string",
            "property2" : "string"
          },
          "measure" : {
            "property1" : 0,
            "property2" : 0
          },
          "cost" : {
            "property1" : 0,
            "property2" : 0
          },
          "income" : {
            "property1" : 0,
            "property2" : 0
          }
        }
      },
      "AggregationType" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "SIMPLE", "COMPOUND" ]
      },
      "PaginatedMeterGroupResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/MeterGroupResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "PaginatedIntegrationRunResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/IntegrationRunResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "PricingRequest" : {
        "type" : "object",
        "properties" : {
          "aggregationId" : {
            "maxLength" : 36,
            "type" : "string",
            "description" : "UUID of the Aggregation used to create the Pricing. Use this when creating a Pricing for a segmented aggregation."
          },
          "compoundAggregationId" : {
            "maxLength" : 36,
            "type" : "string",
            "description" : "UUID of the Compound Aggregation used to create the Pricing."
          },
          "type" : {
            "description" : "* **DEBIT**. Default setting. The amount calculated using the Pricing is added to the bill as a debit.\n\n* **PRODUCT_CREDIT**. The amount calculated using the Pricing is added to the bill as a credit *(negative amount)*. To prevent negative billing, the bill will be capped at the total of other line items for the same Product.\n\n* **GLOBAL_CREDIT**. The amount calculated using the Pricing is added to the bill as a credit *(negative amount)*. To prevent negative billing, the bill will be capped at the total of other line items for the entire bill, which might include other Products the Account consumes.",
            "$ref" : "#/components/schemas/PricingType"
          },
          "segment" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            },
            "description" : "Specifies the segment value which you are defining a Pricing for using this call:\n- For each segment value defined on a Segmented Aggregation you must create a separate Pricing and use the appropriate `aggregationId` parameter for the call.\n- If you specify a segment value that has not been defined for the Aggregation, you'll receive an error.\n- If you've defined segment values for the Aggregation using a single wildcard or multiple wildcards, you can create Pricing for these wildcard segment values also.\n\nFor more details on creating Pricings for segment values on a Segmented Aggregation using this call, together with some examples, see the [Using API Call to Create Segmented Pricings](https://www.m3ter.com/docs/guides/plans-and-pricing/pricing-plans/pricing-plans-using-segmented-aggregations#using-api-call-to-create-a-segmented-pricing) in our User Documentation."
          },
          "tiersSpanPlan" : {
            "type" : "boolean",
            "description" : "The default value is **FALSE**.\n\n* If **TRUE**, usage accumulates over the entire period the priced Plan is active for the account, and is not reset for pricing band rates at the start of each billing period.\n\n* If **FALSE**, usage does not accumulate, and is reset for pricing bands at the start of each billing period."
          },
          "minimumSpend" : {
            "minimum" : 0,
            "type" : "number",
            "description" : "The minimum spend amount per billing cycle for end customer Accounts on a Plan to which the Pricing is applied.",
            "format" : "double"
          },
          "minimumSpendDescription" : {
            "maxLength" : 200,
            "type" : "string",
            "description" : "Minimum spend description *(displayed on the bill line item)*."
          },
          "minimumSpendBillInAdvance" : {
            "type" : "boolean",
            "description" : "The default value is **FALSE**.\n\n* When **TRUE**, minimum spend is billed at the start of each billing period.\n\n* When **FALSE**, minimum spend is billed at the end of each billing period.\n\n*(Optional)*. Overrides the setting at Organization level for minimum spend billing in arrears/in advance."
          },
          "overagePricingBands" : {
            "type" : "array",
            "description" : "Specify Prepayment/Balance overage pricing in pricing bands for the case of a **Tiered** pricing structure. The overage pricing rates will be used to charge for usage if the Account has a Commitment/Prepayment or Balance applied to it and the entire Commitment/Prepayment or Balance amount has been consumed.\n\n**Constraints:**\n* Can only be used for a **Tiered** pricing structure. If cumulative is **FALSE** and you defined `overagePricingBands`, then you'll receive an error.\n* If `tiersSpanPlan` is set to **TRUE** for usage accumulates over entire contract period, then cannot be used.\n* If the Commitment/Prepayement or Balance has an `overageSurchargePercent` defined, then  this will override any `overagePricingBands` you've defined for the pricing.",
            "items" : {
              "$ref" : "#/components/schemas/PricingBand"
            }
          }
        },
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/BasePricingRequestWithPricingBands"
        }, {
          "$ref" : "#/components/schemas/BasePricingRequest"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        } ]
      },
      "AbstractRequestWithCustomFields" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "type" : "object",
          "properties" : {
            "customFields" : {
              "maxProperties" : 100,
              "type" : "object",
              "additionalProperties" : {
                "type" : "object"
              },
              "description" : "User defined fields enabling you to attach custom data. The value for a custom field can be either a string or a number.\n\nIf `customFields` can also be defined for this entity at the Organizational level, `customField` values defined at individual level override values of `customFields` with the same name defined at Organization level.\n\nSee [Working with Custom Fields](https://www.m3ter.com/docs/guides/creating-and-managing-products/working-with-custom-fields) in the m3ter documentation for more information.",
              "x-size-message" : "An entity can have a maximum of 100 custom fields"
            }
          }
        } ]
      },
      "BillProductsResponse" : {
        "type" : "object",
        "properties" : {
          "productNames" : {
            "type" : "array",
            "description" : "A list of product names that can be used for filtering.",
            "items" : {
              "type" : "string"
            }
          }
        },
        "description" : "Response containing product names used for filtering bill queries."
      },
      "AccountRequest" : {
        "type" : "object",
        "description" : "Account request for operations such as Create or Update Account.",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequestWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "code", "emailAddress", "name" ],
          "type" : "object",
          "properties" : {
            "name" : {
              "maxLength" : 200,
              "minLength" : 1,
              "type" : "string",
              "description" : "Name of the Account."
            },
            "code" : {
              "maxLength" : 80,
              "minLength" : 1,
              "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
              "type" : "string",
              "description" : "Code of the Account. \nThis is a unique short code used for the Account."
            },
            "address" : {
              "description" : "Contact address for the Account.",
              "allOf" : [ {
                "$ref" : "#/components/schemas/Address"
              }, {
                "type" : "object",
                "description" : "Address of the Account"
              } ]
            },
            "emailAddress" : {
              "type" : "string",
              "description" : "Contact email for the Account.",
              "format" : "email"
            },
            "parentAccountId" : {
              "type" : "string",
              "description" : "Parent Account ID, or null if this Account does not have a parent."
            },
            "billEpoch" : {
              "type" : "string",
              "description" : "Optional setting to define a *billing cycle date*, which sets the date of the first Bill and acts as a reference for when in the applied billing frequency period subsequent bills are created:\n* For example, if you attach a Plan to an Account where the Plan is configured for monthly billing frequency and you've defined the period the Plan will apply to the Account to be from January 1st, 2022 until January 1st, 2023. You then set a `billEpoch` date of February 15th, 2022. The first Bill will be created for the Account on February 15th, and subsequent Bills created on the 15th of the months following for the remainder of the billing period - March 15th, April 15th, and so on.\n* If not defined, then the relevant Epoch date set for the billing frequency period at Organization level will be used instead.\n* The date is in ISO-8601 format.",
              "format" : "date"
            },
            "purchaseOrderNumber" : {
              "maxLength" : 100,
              "type" : "string",
              "description" : "Purchase Order Number of the Account.\n\nOptional attribute - allows you to set a purchase order number that comes through into invoicing. For example, your financial systems might require this as a reference for clearing payments."
            },
            "currency" : {
              "type" : "string",
              "description" : "Account level billing currency, such as USD or GBP. Optional attribute:\n- If you define an Account currency, this will be used for bills.\n- If you do not define a currency, the billing currency defined at Organizational level will be used.\n\n**Note:** If you've attached a Plan to the Account that uses a different currency to the billing currency, then you must add the relevant currency conversion rate at Organization level to ensure the billing process can convert line items calculated using the Plan currency into the selected billing currency. If you don't add these conversion rates, then bills will fail for the Account.",
              "example" : "USD"
            },
            "statementDefinitionId" : {
              "type" : "string",
              "description" : "The UUID of the statement definition used when Bill statements are generated for the Account. If no statement definition is specified for the Account, the statement definition specified at Organizational level is used.\n\nBill statements can be used as informative backing sheets to invoices. Based on the usage breakdown defined in the statement definition, generated statements give a breakdown of usage charges on Account Bills, which helps customers better understand usage charges incurred over the billing period.\n\nSee [Working with Bill Statements](https://docs.m3ter.com/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements) in the m3ter documentation for more details.\n"
            },
            "autoGenerateStatementMode" : {
              "description" : "Specify whether to auto-generate statements once Bills are approved or locked.\n\n- **None**. Statements will not be auto-generated.\n- **JSON**. Statements are auto-generated in JSON format.\n- **JSON and CSV**. Statements are auto-generated in both JSON and CSV formats. ",
              "$ref" : "#/components/schemas/StatementAutoGenerateMode"
            },
            "creditApplicationOrder" : {
              "type" : "array",
              "description" : "Define the order in which any Prepayment or Balance amounts on the Account are to be drawn-down against for billing. Four options:\n- `\"PREPAYMENT\",\"BALANCE\"`. Draw-down against Prepayment credit before Balance credit.\n- `\"BALANCE\",\"PREPAYMENT\"`. Draw-down against Balance credit before Prepayment credit.\n- `\"PREPAYMENT\"`. Only draw-down against Prepayment credit.\n- `\"BALANCE\"`. Only draw-down against Balance credit.\n\n**NOTES:**\n* Any setting you define here overrides the setting for credit application order at Organization level.\n* If the Account belongs to a Parent/Child Account hierarchy, then the `creditApplicationOrder` settings are not available, and the draw-down order defaults always to Prepayment then Balance order.",
              "items" : {
                "$ref" : "#/components/schemas/BillCreditType"
              }
            },
            "daysBeforeBillDue" : {
              "minimum" : 0,
              "exclusiveMinimum" : true,
              "type" : "integer",
              "description" : "Enter the number of days after the Bill generation date that you want to show on Bills as the due date.\n\n**Note:** If you define `daysBeforeBillDue` at individual Account level, this will take precedence over any `daysBeforeBillDue` setting defined at Organization level.",
              "format" : "int32"
            }
          }
        } ]
      },
      "LookupTableRevisionDataDeleteResponse" : {
        "type" : "object",
        "properties" : {
          "result" : {
            "type" : "string",
            "description" : "The result of the Lookup Table Revision Data delete action."
          }
        },
        "description" : ""
      },
      "CounterAdjustmentRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "accountId", "counterId", "date", "value" ],
          "type" : "object",
          "properties" : {
            "counterId" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The ID of the Counter used for the CounterAdjustment on the Account."
            },
            "accountId" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The Account ID the CounterAdjustment is created for."
            },
            "date" : {
              "type" : "string",
              "description" : "The date the CounterAdjustment is created for the Account *(in ISO-8601 date format)*.\n\n**Note:** CounterAdjustments on Accounts are supported down to a *specific day* of granularity - you cannot create more than one CounterAdjustment for any given day using the same Counter and you'll receive an error if you try to do this.",
              "example" : "2022-01-04",
              "default" : "2022-01-04"
            },
            "value" : {
              "minimum" : 0,
              "type" : "integer",
              "description" : "Integer Value of the Counter used for the CounterAdjustment.\n\n**Note:** Use the new absolute value for the Counter for the selected date - if it was 15 and has increased to 20, enter 20; if it was 15 and has decreased to 10, enter 10. *Do not enter* the plus or minus value relative to the previous Counter value on the Account.",
              "format" : "int32"
            },
            "purchaseOrderNumber" : {
              "maxLength" : 100,
              "type" : "string",
              "description" : "Purchase Order Number for the Counter Adjustment. *(Optional)*"
            }
          }
        } ]
      },
      "ResourceGroupItemResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "targetId" : {
              "type" : "string",
              "description" : "The UUID of the item."
            },
            "targetType" : {
              "description" : "",
              "$ref" : "#/components/schemas/TargetType"
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The DateTime when the item was created for the resource group.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The DateTime when the resource group item was last modified.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The id of the user who created this item for the resource group."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The id of the user who last modified this item for the resource group."
            }
          }
        } ]
      },
      "LookupTableRevisionDataRequest" : {
        "required" : [ "items" ],
        "type" : "object",
        "properties" : {
          "items" : {
            "maxItems" : 2000,
            "type" : "array",
            "description" : "The data for a lookup table revision",
            "items" : {
              "type" : "object",
              "additionalProperties" : {
                "type" : "object"
              }
            },
            "x-size-message" : "Cannot have more than 2000 items in the data",
            "x-not-null-message" : "data cannot be null"
          },
          "version" : {
            "type" : "integer",
            "description" : "The version of the LookupTableRevisionData.",
            "format" : "int64"
          }
        },
        "description" : ""
      },
      "MetersResponse" : {
        "type" : "object",
        "properties" : {
          "values" : {
            "type" : "array",
            "description" : "List of Meters.",
            "items" : {
              "$ref" : "#/components/schemas/DwMeter"
            }
          }
        },
        "description" : "Response containing Meters and their dimension names and measure names."
      },
      "EntityType" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "BILL", "COMMITMENT", "USER", "SERVICE_USER", "SCHEDULER" ]
      },
      "EndDateBillingEntitiesRequest" : {
        "required" : [ "billingEntities", "endDate" ],
        "type" : "object",
        "properties" : {
          "endDate" : {
            "type" : "string",
            "description" : "The end date and time applied to the specified billing entities *(in ISO 8601 format)*.",
            "format" : "date-time"
          },
          "applyToChildren" : {
            "type" : "boolean",
            "description" : "A Boolean TRUE/FALSE flag. For Parent Accounts, set to TRUE if you want the specified end-date to be applied to any billing entities associated with Child Accounts. *(Optional)*"
          },
          "billingEntities" : {
            "minItems" : 1,
            "type" : "array",
            "description" : "Defines which billing entities associated with the Account will have the specified end-date applied. For example, if you want the specified end-date to be applied to all Prepayments/Commitments created for the Account use `\"PREPAYMENT\"`.",
            "items" : {
              "$ref" : "#/components/schemas/BillingEntity"
            }
          }
        },
        "description" : ""
      },
      "DataFieldMeasure" : {
        "type" : "object",
        "properties" : {
          "measureName" : {
            "type" : "string",
            "description" : "The name of the Measure"
          },
          "measureUnit" : {
            "type" : "string",
            "description" : "The unit"
          }
        },
        "description" : "A data field (of type Measure) belonging to a Meter."
      },
      "BalanceDrawdown" : {
        "type" : "object",
        "properties" : {
          "balanceId" : {
            "type" : "string",
            "description" : ""
          },
          "units" : {
            "type" : "number",
            "description" : ""
          },
          "balanceAmount" : {
            "type" : "number",
            "description" : ""
          },
          "lineItemAmount" : {
            "type" : "number",
            "description" : ""
          },
          "billAmount" : {
            "type" : "number",
            "description" : ""
          }
        },
        "description" : ""
      },
      "ScheduledEventConfigurationResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithAuditFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "required" : [ "entity", "field", "name", "offset" ],
          "type" : "object",
          "properties" : {
            "name" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The name of the custom Scheduled Event Configuration.",
              "example" : "10 days after bill due date"
            },
            "entity" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The referenced configuration or billing entity for which the desired scheduled Event will trigger.",
              "example" : "Bill"
            },
            "field" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "A DateTime field for which the desired scheduled Event will trigger - this must be a DateTime field on the referenced billing or configuration entity.",
              "example" : "dueDate"
            },
            "offset" : {
              "type" : "integer",
              "description" : "The offset in days from the specified DateTime field on the referenced entity when the scheduled Event will trigger.",
              "format" : "int32",
              "example" : 10
            }
          },
          "description" : "Response containing a ScheduledEventConfiguration entity"
        } ]
      },
      "LookupTableRevisionDataJobResponse" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "UUID of the Lookup Table Revision Data job."
          },
          "version" : {
            "type" : "integer",
            "description" : "Version of the Lookup Table Revision Data job.",
            "format" : "int64"
          },
          "fileName" : {
            "type" : "string",
            "description" : "The file name for a Lookup Table Revision Data UPLOAD or DOWNLOAD job."
          },
          "lookupTableId" : {
            "type" : "string",
            "description" : "UUID of the Lookup Table."
          },
          "lookupTableRevisionId" : {
            "type" : "string",
            "description" : "UUID of the Lookup Table Revision."
          },
          "destinationLookupTableRevisionId" : {
            "type" : "string",
            "description" : "UUID of the destination Lookup Table Revision if the Lookup Table Revision Data job is a COPY job."
          },
          "jobDate" : {
            "type" : "string",
            "description" : "The date when the Lookup Table Revision Data job was created."
          },
          "type" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/JobType"
            } ]
          },
          "status" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/LookupTableDataJobStatus"
            } ]
          },
          "failureReason" : {
            "type" : "string",
            "description" : "The failure reason if the Lookup Table Revision Data job failed."
          },
          "downloadUrl" : {
            "type" : "string",
            "description" : "The download Url if the Lookup Table Revision Data job is a DOWNLOAD job."
          },
          "downloadUrlExpiry" : {
            "type" : "string",
            "description" : "The download Url expiry if the Lookup Table Revision Data job is a DOWNLOAD job."
          }
        },
        "description" : "Response containing the LookupTableRevisionData job details"
      },
      "AccountResponse" : {
        "type" : "object",
        "description" : "Response containing an AccountResponse entity.",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "name" : {
              "type" : "string",
              "description" : "Name of the Account."
            },
            "code" : {
              "type" : "string",
              "description" : "Code of the Account.\nThis is a unique short code used for the Account."
            },
            "address" : {
              "description" : "Contact address for the Account.",
              "allOf" : [ {
                "$ref" : "#/components/schemas/Address"
              }, {
                "type" : "object",
                "description" : "Address of the Account"
              } ]
            },
            "emailAddress" : {
              "type" : "string",
              "description" : "Contact email for the Account."
            },
            "parentAccountId" : {
              "type" : "string",
              "description" : "Parent Account ID, or null if this account does not have a parent."
            },
            "billEpoch" : {
              "type" : "string",
              "description" : "Defines first bill date for Account Bills. For example, if the Plan attached to the Account is set for monthly billing frequency and you set the first bill date to be January 1st, Bills are created every month starting on that date.\n\nOptional attribute - if not defined, then first bill date is determined by the Epoch settings at Organizational level.",
              "format" : "date"
            },
            "purchaseOrderNumber" : {
              "type" : "string",
              "description" : "Purchase Order Number of the Account.\n\nOptional attribute - allows you to set a purchase order number that comes through into invoicing. For example, your financial systems might require this as a reference for clearing payments."
            },
            "currency" : {
              "type" : "string",
              "description" : "Account level billing currency, such as USD or GBP. Optional attribute:\n- If you define an Account currency, this will be used for bills.\n- If you do not define a currency, the billing currency defined at Organizational will be used.\n\n**Note:** If you've attached a Plan to the Account that uses a different currency to the billing currency, then you must add the relevant currency conversion rate at Organization level to ensure the billing process can convert line items calculated using the Plan currency into the selected billing currency. If you don't add these conversion rates, then bills will fail for the Account.",
              "example" : "USD"
            },
            "statementDefinitionId" : {
              "type" : "string",
              "description" : "The UUID of the statement definition used when Bill statements are generated for the Account. If no statement definition is specified for the Account, the statement definition specified at Organizational level is used.\n\nBill statements can be used as informative backing sheets to invoices. Based on the usage breakdown defined in the statement definition, generated statements give a breakdown of usage charges on Account Bills, which helps customers better understand usage charges incurred over the billing period.\n\nSee [Working with Bill Statements](https://docs.m3ter.com/guides/billing-and-usage-data/running-viewing-and-managing-bills/working-with-bill-statements) in the m3ter documentation for more details."
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The DateTime when the Account was created *(in ISO 8601 format)*.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The DateTime when the Account was last modified *(in ISO 8601 format)*.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The ID of the user who created the account."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The ID of the user who last modified the Account."
            },
            "autoGenerateStatementMode" : {
              "description" : "Specify whether to auto-generate statements once Bills are approved or locked.\n\n- **None**. Statements will not be auto-generated.\n- **JSON**. Statements are auto-generated in JSON format.\n- **JSON and CSV**. Statements are auto-generated in both JSON and CSV formats. ",
              "$ref" : "#/components/schemas/StatementAutoGenerateMode"
            },
            "creditApplicationOrder" : {
              "type" : "array",
              "description" : "The order in which any Prepayment or Balance amounts on the Account are to be drawn-down against for billing. Four options:\n- `\"PREPAYMENT\",\"BALANCE\"`. Draw-down against Prepayment credit before Balance credit.\n- `\"BALANCE\",\"PREPAYMENT\"`. Draw-down against Balance credit before Prepayment credit.\n- `\"PREPAYMENT\"`. Only draw-down against Prepayment credit.\n- `\"BALANCE\"`. Only draw-down against Balance credit.",
              "items" : {
                "$ref" : "#/components/schemas/BillCreditType"
              }
            },
            "daysBeforeBillDue" : {
              "type" : "integer",
              "description" : "The number of days after the Bill generation date shown on Bills as the due date.",
              "format" : "int32"
            }
          }
        } ]
      },
      "LookupTableRevisionResponse" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "The name of the Lookup Table Revision."
          },
          "status" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/LookupTableRevisionStatus"
            } ]
          },
          "startDate" : {
            "type" : "string",
            "description" : "The start date of the Lookup Table Revision",
            "format" : "date-time"
          },
          "fields" : {
            "type" : "array",
            "description" : "The list of fields of the Lookup Table Revision.",
            "items" : {
              "$ref" : "#/components/schemas/LookupTableRevisionField"
            }
          },
          "keys" : {
            "type" : "array",
            "description" : "The ordered keys of the Lookup Table Revision",
            "items" : {
              "type" : "string"
            }
          },
          "dtCreated" : {
            "type" : "string",
            "description" : "The DateTime when the Lookup Table Revision was created.",
            "format" : "date-time"
          },
          "dtLastModified" : {
            "type" : "string",
            "description" : "The DateTime when the Lookup Table Revision was last modified.",
            "format" : "date-time"
          },
          "createdBy" : {
            "type" : "string",
            "description" : "The id of the user who created the Lookup Table Revision."
          },
          "lastModifiedBy" : {
            "type" : "string",
            "description" : "The id of the user who last modified the Lookup Table Revision."
          },
          "itemCount" : {
            "type" : "integer",
            "description" : "",
            "format" : "int64"
          },
          "lookupTableId" : {
            "type" : "string",
            "description" : "The lookup table id associated with this revision"
          }
        },
        "description" : "Response containing a LookupTableRevision entity",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        } ]
      },
      "DownloadCsvRequest" : {
        "type" : "object",
        "properties" : {
          "startDate" : {
            "type" : "string",
            "description" : "Specifies the start date of the billing period for downloading Bills. Format should be a valid date in ISO 8601 format. Bills with a start date on or after this date will be included in the download.",
            "format" : "date-time"
          },
          "endDate" : {
            "type" : "string",
            "description" : "Specifies the end date of the billing period for downloading Bills. Format should be a valid date in ISO 8601 format. Bills with an end date on or before this date will be included in the download.",
            "format" : "date-time"
          },
          "externalInvoiceDateStart" : {
            "type" : "string",
            "description" : "*(Optional)*. Specifies the start date in ISO 8601 format for filtering Bills by external invoice date.",
            "format" : "date-time"
          },
          "externalInvoiceDateEnd" : {
            "type" : "string",
            "description" : "*(Optional)*. Specifies the end date in ISO 8601 format for filtering Bills by external invoice date.",
            "format" : "date-time"
          },
          "externalSystem" : {
            "description" : "Use this parameter if you have implemented an integration with your Xero system and want a downloaded CSV file suitable for loading into Xero:\n\n* **STANDARD** - A wider range of data columns is given.\n* **XERO** - A more limited range of data columns is given and compatible with loading into your 3rd-party Xero system.\n",
            "$ref" : "#/components/schemas/ExternalSystem"
          }
        },
        "description" : "",
        "example" : {
          "startDate" : "2019-08-24T14:15:22Z",
          "endDate" : "2019-08-24T14:15:22Z",
          "externalSystem" : "STANDARD"
        }
      },
      "PaginatedWebhookDestinationResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/WebhookDestinationResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "IntegrationRunResponse" : {
        "type" : "object",
        "description" : "Response containing an IntegrationRun entity.",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithAuditFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "required" : [ "destination", "entityId", "entityType", "status" ],
          "type" : "object",
          "properties" : {
            "entityType" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The type of entity the integration run is for. Two options:\n* Bill\n* Notification"
            },
            "entityId" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The unique identifier (UUID) of the entity the integration run is for."
            },
            "dtStarted" : {
              "type" : "string",
              "description" : "The date and time the integration run was started *(in ISO-8601 format)*.",
              "format" : "date-time"
            },
            "dtCompleted" : {
              "type" : "string",
              "description" : "The date and time the integration was completed. *(in ISO-8601 format)*.",
              "format" : "date-time"
            },
            "status" : {
              "description" : "The current status of the integration run.",
              "allOf" : [ {
                "$ref" : "#/components/schemas/RunStatus"
              }, {
                "type" : "object",
                "description" : "Status of the integration"
              } ]
            },
            "destination" : {
              "type" : "string",
              "description" : "The destination system for the integration run."
            },
            "destinationId" : {
              "type" : "string",
              "description" : "Identifier of the destination"
            },
            "error" : {
              "type" : "string",
              "description" : "Describes any errors encountered during the integration run."
            },
            "url" : {
              "type" : "string",
              "description" : "The URL of the entity in the destination system if available."
            },
            "externalId" : {
              "type" : "string",
              "description" : "The external ID in the destination system if available."
            },
            "parentIntegrationRunId" : {
              "type" : "string",
              "description" : "ID of the parent integration run, or null if this is a parent integration run"
            }
          },
          "description" : "Response containing a IntegrationRun entity"
        } ]
      },
      "BillDataResponse" : {
        "type" : "object",
        "properties" : {
          "values" : {
            "type" : "array",
            "description" : "A list of bill line items.",
            "items" : {
              "$ref" : "#/components/schemas/BillData"
            }
          }
        },
        "description" : "Response containing bill line items."
      },
      "DataExplorerTimeGroup" : {
        "required" : [ "frequency" ],
        "type" : "object",
        "description" : "Group by time",
        "allOf" : [ {
          "$ref" : "#/components/schemas/DataExplorerGroup"
        }, {
          "type" : "object",
          "properties" : {
            "groupType" : {
              "description" : "",
              "$ref" : "#/components/schemas/DataExplorerGroupType"
            },
            "frequency" : {
              "description" : "",
              "allOf" : [ {
                "$ref" : "#/components/schemas/DataExplorerUsageDataFrequency"
              } ],
              "x-not-null-message" : "time group frequency cannot be null"
            },
            "DataExplorerTimeGroup" : {
              "description" : "Group by time",
              "allOf" : [ {
                "$ref" : "#/components/schemas/DataExplorerTimeGroup_1"
              }, {
                "discriminator" : {
                  "propertyName" : "groupType",
                  "mapping" : {
                    "ACCOUNT" : "#/components/schemas/DataExplorerAccountGroup",
                    "DIMENSION" : "#/components/schemas/DataExplorerDimensionGroup",
                    "TIME" : "#/components/schemas/DataExplorerTimeGroup"
                  }
                },
                "allOf" : [ {
                  "$ref" : "#/components/schemas/DataExplorerGroup"
                } ]
              } ]
            }
          }
        } ]
      },
      "DataExplorerTimeGroup_1" : {
        "type" : "string",
        "description" : "Type of group",
        "discriminator" : {
          "propertyName" : "groupType",
          "mapping" : {
            "ACCOUNT" : "#/components/schemas/DataExplorerAccountGroup",
            "DIMENSION" : "#/components/schemas/DataExplorerDimensionGroup",
            "TIME" : "#/components/schemas/DataExplorerTimeGroup"
          }
        },
        "enum" : [ "ACCOUNT", "DIMENSION", "TIME" ]
      },
      "error" : {
        "type" : "object",
        "properties" : {
          "message" : {
            "type" : "string"
          }
        }
      },
      "DestinationType" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "WEBHOOK", "NETSUITE", "STRIPE", "STRIPE_TEST", "AWS", "PADDLE", "PADDLE_SANDBOX", "SALESFORCE", "XERO", "CHARGEBEE", "QUICKBOOKS", "QUICKBOOKS_SANDBOX", "M3TER" ]
      },
      "StatementAutoGenerateMode" : {
        "type" : "string",
        "description" : "Specify whether to auto-generate statements once Bills are *approved* or *locked*. It will not auto-generate if a bill is in *pending* state. \n\nThe default value is **None**.\n\n- **None**. Statements will not be auto-generated.\n- **JSON**. Statements are auto-generated in JSON format.\n- **JSON and CSV**. Statements are auto-generated in both JSON and CSV formats.",
        "enum" : [ "NONE", "JSON", "JSON_AND_CSV" ]
      },
      "GenerateDownloadUrlResponse" : {
        "type" : "object",
        "properties" : {
          "url" : {
            "type" : "string",
            "description" : "The presigned download URL"
          }
        },
        "description" : "It contains details for downloading a file"
      },
      "StatementJobRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "billId" ],
          "type" : "object",
          "properties" : {
            "billId" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The unique identifier (UUID) of the bill associated with the StatementJob."
            },
            "includeCsvFormat" : {
              "type" : "boolean",
              "description" : "A Boolean value indicating whether the generated statement includes a CSV format.\n\n* TRUE - includes the statement in CSV format.\n* FALSE - no CSV format statement."
            },
            "filters" : {
              "description" : "",
              "allOf" : [ {
                "$ref" : "#/components/schemas/StatementJobFilters"
              }, {
                "type" : "object",
                "description" : "Optional filters to generate a statement for specific usage only."
              } ]
            }
          }
        } ]
      },
      "PaginatedOrgUserInvitationResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/OrgUserInvitationResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "ResourceGroupItemRequest" : {
        "required" : [ "targetId", "targetType" ],
        "type" : "object",
        "properties" : {
          "version" : {
            "type" : "integer",
            "description" : "The version number of the group.\n",
            "format" : "int64"
          },
          "targetId" : {
            "minLength" : 1,
            "type" : "string",
            "description" : "The id of the item or group you want to:\n- *Add Item* call: add to a Resource Group.\n- *Remove Item* call: remove from the Resource Group."
          },
          "targetType" : {
            "description" : "When adding to or removing from a Resource Group, specify whether a single item or group:\n- `item` \n\t- *Add Item* call: use to add a single meter to a Resource Group\n\t- *Remove Item* call: use to remove a single from a Resource Group.\n- `group`\n\t- *Add Item* call: use to add a Resource Group to another Resource Group and form a nested Resource Group\n\t- *Remove Item* call: use remove a nested Resource Group from a Resource Group.",
            "$ref" : "#/components/schemas/TargetType"
          }
        },
        "description" : "",
        "example" : {
          "targetId" : "06f6b50c-a868-4ca6-XXXX-448e507d5248",
          "targetType" : "item"
        }
      },
      "PaginatedCommitmentResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/CommitmentResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "CreditReasonResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractPickListResponse"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "dtCreated" : {
              "type" : "string",
              "description" : "The DateTime when the credit reason was created *(in ISO-8601 format)*.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The DateTime when the credit reason was last modified *(in ISO-8601 format)*.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The id of the user who created this credit reason."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The id of the user who last modified this credit reason."
            }
          }
        } ]
      },
      "ExportDestinationS3Response" : {
        "title" : "ExportDestinationS3Response",
        "type" : "object",
        "properties" : {
          "bucketName" : {
            "type" : "string",
            "description" : "Name of the S3 bucket for the Export Destination."
          },
          "prefix" : {
            "type" : "string",
            "description" : "Location in specified S3 bucket for the Export Destination. If no `prefix` is specified, then the root of the bucket is used."
          },
          "iamRoleArn" : {
            "type" : "string",
            "description" : "The specified IAM role ARN with PutObject permission for the specified `bucketName`, which allows the service to upload Data Exports to your S3 bucket."
          },
          "partitionOrder" : {
            "description" : "",
            "allOf" : [ {
              "$ref" : "#/components/schemas/PartitionOrder"
            }, {
              "type" : "object",
              "description" : "Output partitioning"
            } ]
          }
        },
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/ExportDestinationBaseResponse"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        } ]
      },
      "ContractRequest" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRequestWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractRequest"
        }, {
          "required" : [ "accountId", "endDate", "name", "startDate" ],
          "type" : "object",
          "properties" : {
            "accountId" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The unique identifier (UUID) of the Account associated with this Contract."
            },
            "name" : {
              "maxLength" : 200,
              "minLength" : 1,
              "type" : "string",
              "description" : "The name of the Contract."
            },
            "code" : {
              "maxLength" : 80,
              "pattern" : "^([^[\\p{Cntrl}\\s]])|([^[\\p{Cntrl}\\s]][[^[\\p{Cntrl}\\s]] ]*[^[\\p{Cntrl}\\s]])$",
              "type" : "string",
              "description" : "The short code of the Contract."
            },
            "description" : {
              "maxLength" : 500,
              "type" : "string",
              "description" : "The description of the Contract, which provides context and information."
            },
            "purchaseOrderNumber" : {
              "maxLength" : 100,
              "type" : "string",
              "description" : "The Purchase Order Number associated with the Contract."
            },
            "applyContractPeriodLimits" : {
              "type" : "boolean",
              "description" : "For Contract billing, a boolean setting for restricting the charges billed to the period defined for the Contract:\n* **TRUE** - Contract billing for the Account will be restricted to charge amounts that fall within the defined Contract period.\n* **FALSE** - The period for amounts billed under the Contract will be determined by the Account Plan attached to the Account and linked to the Contract.(*Default*)"
            },
            "usageFilters" : {
              "type" : "array",
              "description" : "Use `usageFilters` to control Contract billing and charge at billing only for usage where Product Meter dimensions equal specific defined values:\n* Define Usage filters to either *include* or *exclude* charges for usage associated with specific Meter dimensions.\n* The Meter dimensions must be present in the data field schema of the Meter used to submit usage data measurements.",
              "items" : {
                "$ref" : "#/components/schemas/UsageFilter"
              }
            },
            "billGroupingKeyId" : {
              "type" : "string",
              "description" : "The ID of the Bill Grouping Key assigned to the Contract.\n\nIf you are implementing Contract Billing for an Account, use `billGroupingKey` to control how charges linked to Contracts on the Account will be billed:\n* **Independent Contract billing**. Assign an *exclusive* Bill Grouping Key to the Contract - only charges due against the Account and linked to the single Contract will appear on a separate Bill.\n* **Collective Contract billing**. Assign the same *non-exclusive* Bill Grouping Key to multiple Contracts - all charges due against the Account and linked to the multiple Contracts will appear together on a single Bill. "
            },
            "startDate" : {
              "type" : "string",
              "description" : "The start date for the Contract *(in ISO-8601 format)*. This date is inclusive, meaning the Contract is active from this date onward.",
              "format" : "date"
            },
            "endDate" : {
              "type" : "string",
              "description" : "The exclusive end date of the Contract *(in ISO-8601 format)*. This means the Contract is active until midnight on the day ***before*** this date.",
              "format" : "date"
            }
          }
        } ]
      },
      "OrganizationType" : {
        "type" : "string",
        "description" : "",
        "enum" : [ "PRODUCTION", "SANDBOX" ]
      },
      "MeterResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithCustomFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "productId" : {
              "type" : "string",
              "description" : "UUID of the Product the Meter belongs to. *(Optional)* - if blank, the Meter is global."
            },
            "groupId" : {
              "type" : "string",
              "description" : "UUID of the MeterGroup the Meter belongs to. *(Optional)*."
            },
            "name" : {
              "type" : "string",
              "description" : "Descriptive name for the Meter."
            },
            "code" : {
              "type" : "string",
              "description" : "Code of the Meter - unique short code used to identify the Meter."
            },
            "dataFields" : {
              "type" : "array",
              "description" : "Used to submit categorized raw usage data values for ingest into the platform - either numeric quantitative values or non-numeric data values. At least one required per Meter; maximum 15 per Meter.",
              "items" : {
                "$ref" : "#/components/schemas/DataField"
              }
            },
            "derivedFields" : {
              "type" : "array",
              "description" : "Used to submit usage data values for ingest into the platform that are the result of a calculation performed on `dataFields`, `customFields`, or system `Timestamp` fields. Raw usage data is not submitted using `derivedFields`. Maximum 15 per Meter. *(Optional)*.",
              "items" : {
                "$ref" : "#/components/schemas/DerivedField"
              }
            },
            "dtCreated" : {
              "type" : "string",
              "description" : "The DateTime when the meter was created *(in ISO-8601 format)*.",
              "format" : "date-time"
            },
            "dtLastModified" : {
              "type" : "string",
              "description" : "The DateTime when the meter was last modified *(in ISO-8601 format)*.",
              "format" : "date-time"
            },
            "createdBy" : {
              "type" : "string",
              "description" : "The id of the user who created this meter."
            },
            "lastModifiedBy" : {
              "type" : "string",
              "description" : "The id of the user who last modified this meter."
            }
          }
        } ]
      },
      "PaginatedStatementDefinitionResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/StatementDefinitionResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "ExternalMappingResponse" : {
        "type" : "object",
        "description" : "Response containing an External Mapping entity.",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractResponseWithAuditFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "required" : [ "externalId", "externalSystem", "externalTable", "m3terEntity", "m3terId" ],
          "type" : "object",
          "properties" : {
            "m3terEntity" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The name of the m3ter entity that is part of the External Mapping. For example, this could be \"Account\". ",
              "example" : "Account"
            },
            "m3terId" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The unique identifier (UUID) of the m3ter entity.",
              "example" : "00000000-0000-0000-0000-000000000000"
            },
            "externalSystem" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The name of the external system where the entity you are mapping resides. ",
              "example" : "Stripe"
            },
            "externalTable" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The name of the table in the external system where the entity resides. ",
              "example" : "Customer"
            },
            "externalId" : {
              "minLength" : 1,
              "type" : "string",
              "description" : "The unique identifier (UUID) of the entity in the external system.",
              "example" : "cus_00000000000000"
            },
            "integrationConfigId" : {
              "type" : "string",
              "description" : "UUID of the configuration this mapping is for",
              "example" : "00000000-0000-0000-0000-000000000000"
            }
          },
          "description" : "Response containing an ExternalMapping entity"
        } ]
      },
      "PaginatedChargeResponseData" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "description" : "",
            "items" : {
              "$ref" : "#/components/schemas/ChargeResponse"
            }
          },
          "nextToken" : {
            "type" : "string",
            "description" : ""
          }
        },
        "description" : ""
      },
      "DataExplorerGroup_1" : {
        "type" : "string",
        "description" : "Type of group",
        "discriminator" : {
          "propertyName" : "groupType",
          "mapping" : {
            "ACCOUNT" : "#/components/schemas/DataExplorerAccountGroup",
            "DIMENSION" : "#/components/schemas/DataExplorerDimensionGroup",
            "TIME" : "#/components/schemas/DataExplorerTimeGroup"
          }
        },
        "enum" : [ "ACCOUNT", "DIMENSION", "TIME" ]
      },
      "BasePricingResponseWithPricingBands" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/BasePricingResponse"
        }, {
          "$ref" : "#/components/schemas/AbstractResponseWithAuditFields"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "pricingBands" : {
              "type" : "array",
              "description" : "",
              "items" : {
                "$ref" : "#/components/schemas/PricingBand"
              }
            }
          }
        } ]
      },
      "ChildBillingMode" : {
        "type" : "string",
        "description" : "If the Account is either a Parent or a Child Account, this specifies the Account hierarchy billing mode. The mode determines how billing will be handled and shown on bills for charges due on the Parent Account, and charges due on Child Accounts:\n\n* **Parent Breakdown** - a separate bill line item per Account. Default setting.\n\n* **Parent Summary** - single bill line item for all Accounts.\n\n* **Child** - the Child Account is billed.",
        "enum" : [ "PARENT_SUMMARY", "PARENT_BREAKDOWN", "CHILD" ]
      },
      "OrgUserResponse" : {
        "type" : "object",
        "description" : "",
        "allOf" : [ {
          "$ref" : "#/components/schemas/UserResponse"
        }, {
          "$ref" : "#/components/schemas/AbstractResponse"
        }, {
          "type" : "object",
          "properties" : {
            "permissionPolicy" : {
              "type" : "array",
              "description" : "An array of permission statements for the user. Each permission statement defines a specific permission for the user.",
              "items" : {
                "$ref" : "#/components/schemas/PermissionStatement"
              }
            },
            "dtEndAccess" : {
              "type" : "string",
              "description" : "The date and time *(in ISO 8601 format)* when the user's access will end. Used to set or update the date and time a user's access expires.",
              "format" : "date-time"
            }
          }
        } ]
      }
    },
    "responses" : {
      "Error" : {
        "description" : "Error message",
        "content" : {
          "application/json" : {
            "schema" : {
              "type" : "object",
              "properties" : {
                "message" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "securitySchemes" : {
      "OAuth2" : {
        "type" : "oauth2",
        "description" : "m3ter supports machine to machine authentication using the `clientCredentials` OAuth2 flow.\n\nThe `authorizationCode` flow controls access for human users via the m3ter Console application. \n",
        "flows" : {
          "clientCredentials" : {
            "authorizationUrl" : "",
            "tokenUrl" : "/oauth/token",
            "scopes" : {
              "m3ter-resources/m3ter-scope" : "m3ter resources"
            }
          },
          "authorizationCode" : {
            "authorizationUrl" : "https://m3ter.auth.us-east-1.amazoncognito.com/oauth2/authorize",
            "tokenUrl" : "https://m3ter.auth.us-east-1.amazoncognito.com/oauth2/token",
            "scopes" : {
              "m3ter-resources/m3ter-scope" : "m3ter resources",
              "openid" : "OpenID",
              "email" : "email"
            }
          }
        }
      }
    }
  }
}