CompoundAggregation

Create Compound Aggregation

Changed on

Create a new Compound Aggregation.

This 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.

post/organizations/{orgId}/compoundaggregations

Request

Path parameters

orgIdstring required

The unique identifier (UUID) for your Organization. The Organization represents your company as a direct customer of our service.

Request body

versioninteger
customFieldsobject

User defined fields enabling you to attach custom data. The value for a custom field can be either a string or a number.

If 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.

See Working with Custom Fields in the m3ter documentation for more information.

namestring required

Descriptive name for the Aggregation.

rounding'UP' | 'DOWN' | 'NEAREST' | 'NONE' required

Specifies how you want to deal with non-integer, fractional number Aggregation values.

NOTES:

  • "NEAREST" rounds to the nearest half: 5.1 is rounded to 5, and 3.5 is rounded to 4.
  • 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.
quantityPerUnitnumber required

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.

Note: If quantityPerUnit is set to a value other than one, rounding is typically set to "UP".

unitstring required

User defined label for units shown for Bill line items, indicating to your customers what they are being charged for.

codestring

Code of the new Aggregation. A unique short code to identify the Aggregation.

accountingProductIdstring

Optional Product ID this Aggregation should be attributed to for accounting purposes.

productIdstring

Unique identifier (UUID) of the Product the Compound Aggregation belongs to.

Note: Omit this parameter if you want to create a Global Compound Aggregation.

calculationstring required

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.

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.

evaluateNullAggregationsboolean

Boolean True / False flag:

  • 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.
  • FALSE Default.

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.

Example request

{
  "code": "example_code"
}

Response

Returns the created Compound Aggregation

idstring required

The UUID of the entity.

versioninteger

The version number:

  • Create: On initial Create to insert a new entity, the version is set at 1 in the response.
  • Update: On successful Update, the version is incremented by 1 in the response.
customFieldsobject

User defined fields enabling you to attach custom data. The value for a custom field can be either a string or a number.

If 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.

See Working with Custom Fields in the m3ter documentation for more information.

namestring

Descriptive name for the Aggregation.

rounding'UP' | 'DOWN' | 'NEAREST' | 'NONE'

Specifies how you want to deal with non-integer, fractional number Aggregation values.

NOTES:

  • "NEAREST" rounds to the nearest half: 5.1 is rounded to 5, and 3.5 is rounded to 4.
  • 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.
quantityPerUnitnumber

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.

If quantityPerUnit is set to a value other than one, rounding is typically set to UP.

unitstring

User defined or following the Unified Code for Units of Measure (UCUM).

Used as the label for billing, indicating to your customers what they are being charged for.

codestring

Code of the Aggregation. A unique short code to identify the Aggregation.

segmentsobject[]

(Optional). Used when creating a segmented Aggregation, which segments the usage data collected by a single Meter. Works together with segmentedFields.

Contains the values that are to be used as the segments, read from the fields in the meter pointed at by segmentedFields.

accountingProductIdstring

Optional Product ID this Aggregation should be attributed to for accounting purposes.

calculationstring

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.

productIdstring

This field represents the unique identifier (UUID) of the Product that is associated with the Compound Aggregation.

evaluateNullAggregationsboolean

This is a boolean True / False flag.

If set to TRUE, the calculation will be evaluated even if the referenced aggregation has no usage data.

dtCreatedstring date-time

The date and time (in ISO-8601 format) when the Compound Aggregation was created.

dtLastModifiedstring date-time

The date and time (in ISO-8601 format) when the Compound Aggregation was last modified.

createdBystring

The unique identifier (UUID) of the user who created this Compound Aggregation.

lastModifiedBystring

The unique identifier (UUID) of the user who last modified this Compound Aggregation.

Changes

    • breaking

      added subschema #1 subschema #2 to the ///////// request property allOf list

    • breaking

      added subschema #1 subschema #2 to the ///// request property allOf list

    • breaking

      the //////// request property type changed from no type to object

    • breaking

      the //// request property type changed from no type to object

    • breaking

      the //// request property type changed from no type to object

    • breaking

      the request property type changed from no type to object

    • breaking

      the //////// response's property type changed from no type to object for status

    • breaking

      the //// response's property type changed from no type to object for status

    • breaking

      the //// response's property type changed from no type to object for status

    • breaking

      the response's property type changed from no type to object for status

    • warning

      removed the optional property / from the response with the status

    • warning

      removed the optional property / from the response with the status

    • warning

      removed the optional property / from the response with the status

    • warning

      removed the optional property / from the response with the status

    • warning

      removed the optional property / from the response with the status

    • warning

      removed the optional property / from the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property / to the response with the status

    • warning

      added the new CUSTOM_SQL enum value to the / response property for the response status