THE LINUX FOUNDATION PROJECTS
Docs navigation
On this page

    3.1.32 Contract Applied

    Dataset: Cost and Usage
    Column Type: Dimension / Metric
    Feature Level: Conditional
    Data Type: JSON
    Since: 1.3

    Contract Applied is a set of properties that associate a charge with one or more contract commitments, denoted as key-value pairs in a JSON object. Contract Applied allows the practitioner to track the progress of the commitments to which they have agreed with a service provider.

    3.1.32.1 Requirements

    3.1.32.1.1 Column Requirements

    ContractApplied MUST adhere to the following requirements:

    • ContractApplied MUST be of type JSON Object (serialized as a String where necessary).
    • ContractApplied MUST conform to StringHandling requirements.
    • ContractApplied MUST conform to JsonObjectFormat requirements.
    • ContractApplied MUST NOT be null when one or more contract commitments are applied to the charge.
    • ContractApplied MUST conform to ContractAppliedObject requirements when ContractApplied is not null.

    3.1.32.2 Contract Applied Object

    Contract Applied Object consists of a valid JSON object which contains an array of key-value objects describing the one or more contract commitments applied to the charge. Each object consists of FOCUS-defined property keys but can be extended to provide additional details about the contract application.

    The following section details the normative requirements for the ContractAppliedObject and its nested properties. For a logical overview of the expected content, see the Schema Structure and Object Example sections.

    3.1.32.2.1 Object Requirements

    ContractAppliedObject MUST adhere to the following requirements:

    • ContractAppliedObject MUST conform to the ContractAppliedObjectSchema JSON Schema.
    • ContractAppliedObject.Elements[*].ContractId MUST be a unique identifier within the service provider.
    • ContractAppliedObject.Elements[*].ContractId SHOULD be a fully-qualified identifier.
    • ContractAppliedObject.Elements[*].ContractCommitmentId MUST be a unique identifier within the service provider.
    • ContractAppliedObject.Elements[*].ContractCommitmentId SHOULD be a fully-qualified identifier.
    • ContractAppliedObject.Elements[*].ContractCommitmentId MUST have one and only one parent ContractAppliedObject.Elements[*].ContractId.
    • ContractAppliedObject.Elements[*].ContractCommitmentId MUST match ResourceId when ChargeCategory is "Purchase" and the charge represents a purchase of that contract commitment.
    • ContractAppliedObject.Elements[*].ContractCommitmentId MUST match ResourceId when ChargeCategory is "Usage" and the charge represents an unused portion of that contract commitment.
    • ContractAppliedObject.Elements[*].ContractCommitmentId MAY match ContractAppliedObject.Elements[*].ContractId.
    • ContractAppliedObject.Elements[*].ContractCommitmentAppliedCost MUST be denominated in the BillingCurrency.
    • ContractAppliedObject.Elements[*].ContractCommitmentAppliedQuantity MUST be denominated in the ContractAppliedObject.Elements[*].ContractCommitmentAppliedUnit.
    • ContractAppliedObject.Elements[*].ContractCommitmentAppliedUnit SHOULD conform to UnitFormat requirements.

    3.1.32.2.2 Object Schema Structure

    ContractApplied contains a structured JSON object defining the allocation and application of a charge against specific contract commitments.

    Top-Level Properties
    Property Type Required Description
    Elements Array True The parent array containing one or more objects which communicate information about how contract commitments were applied to the charge.
    Elements Object

    The Elements array contains one or more objects, each of which contains the following entries:

    Key Type Required Description
    ContractId String Yes A service-provider-assigned identifier for a contract describing the agreed terms between a service provider and a customer. Contracts can include commitment to a certain amount of spend or usage over an agreed period of time.
    ContractCommitmentId String Yes A service-provider-assigned identifier describing an agreement agreed between a service provider and a customer.
    ContractCommitmentAppliedCost Decimal Conditional The cost of the charge applied to the contract line item. It is associated with the contract line item via Contract Commitment ID, and is commonly used for monitoring progress towards fulfilling contractual commitments that may facilitate discounts for resources or services as agreed between a service provider and a customer.

    Condition: Must be present if Quantity and Unit are not provided.
    ContractCommitmentAppliedQuantity Decimal Conditional The quantity of the charge applied to the contract line item. It is associated with the contract line item via Contract Commitment ID, and is commonly used for monitoring the progress towards fulfilling contractual commitments that may facilitate discounts for resources or services as agreed between a service provider and a customer.

    Condition: Must be present if Cost is not provided.
    ContractCommitmentAppliedUnit String Conditional A service-provider-specified measurement unit for the usage declared in Contract Commitment Applied Quantity. It complements the Contract Commitment Applied Quantity metric.

    Condition: Must be present if Contract Commitment Applied Quantity is provided.

    3.1.32.2.3 Object Implementation Guidance

    Custom Properties

    To facilitate querying data across allocations and across service providers, a data generator may include one or more custom properties. These may be placed at the top level of the object (alongside Elements) or nested within the individual Elements objects. Custom keys must be prefixed with "x_" followed by PascalCase format (e.g., x_MyCustomKey) to make them easy to identify as well as prevent collisions with FOCUS-defined keys.

    3.1.32.2.4 Object Example

    Here is a basic example of the object format.

    • For more detailed examples, please see this column's entry in the JSON Object Examples appendix entry here.
    • For the JSON schema, please see Contract Applied Object Schema.
    {
      "Elements": [
        {
          "ContractId": "12345",
          "ContractCommitmentId": "23456",
          "ContractCommitmentAppliedCost": 500000.00
        },
        {
          "ContractId": "12345",
          "ContractCommitmentId": "34567",
          "ContractCommitmentAppliedQuantity": 10000.00,
          "ContractCommitmentAppliedUnit": "compute_hours"
        }
      ]
    }
    

    3.1.32.2.5 Object ID

    ContractAppliedObject

    3.1.32.2.6 Object Display Name

    Contract Applied Object

    3.1.32.5 Description

    A set of properties that associate a charge with one or more contract commitments.

    Constraints

    Property Value
    Column Type Dimension / Metric
    Feature Level Conditional
    Allows Nulls Yes
    Data Type JSON
    Value Format JSON Object Format