All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Announced November 2024
Added:
CapacityReservationId
columnCapacityReservationStatus
columnCommitmentDiscountQuantity
columnCommitmentDiscountUnit
columnServiceSubcategory
columnSkuMeter
columnSkuPriceDetails
columnProviderVersion
metadata schema property
Changed:
CommitmentDiscountId
column updates:- Must be globally unique within the provider.
- Should be a fully-qualified identifier.
ConsumedQuantity
column updates:- Must be null when
CommitmentDiscountStatus
is "Unused".
- Must be null when
ConsumedUnit
column updates:- Must be null when
ChargeClass
is not "Correction" andChargeCategory
is not "Usage". - Must be null when
ChargeClass
is not "Correction" andChargeCategory
is "Usage" andCommitmentDiscountStatus
is "Unused". - May be null when
ChargeCategory
is "Usage" andChargeClass
is "Correction".
- Must be null when
EffectiveCost
column updates:- When
CommitmentDiscountStatus
is "Unused", must be the difference between the used commitment discount amount and the portion of the total commitment discount purchase applicable for the charge period.
- When
PricingCategory
column updates:- Must not be "Committed" when the charge is for a commitment discount purchase.
SkuPriceId
column updates:SkuId
can be used if the provider does not have aSkuPriceId
but other requirements must be met.
- Metadata updates:
- Must be provided in the defined metadata schema.
- Must be an object.
- Must not be null.
- Must include a reference to the schema of the data.
- Schema reference must not be in the FOCUS dataset itself.
- Must be an accurate and complete representation of the provided FOCUS dataset.
- Metadata implementation should be publicly documented.
SchemaId
metadata schema property updates:- Recommended to be a globally unique identifier (GUID) instead of a universally unique identifier (UUID) or SemVer version.
Announced June 20, 2024
Added:
String handling
attributeChargeClass
columnCommitmentDiscountStatus
columnContractedCost
columnContractedUnitPrice
columnRegionId
columnRegionName
columnDataGenerator
metadata propertyCreationDate
metadata schema propertyFocusVersion
metadata schema propertySchemaId
metadata schema propertyColumnName
metadata column definition propertyDataType
metadata column definition propertyNumberScale
metadata column definition propertyNumberPrecision
metadata column definition propertyProviderTagPrefix
metadata column definition propertyStringEncoding
metadata column definition propertyStringMaxLength
metadata column definition property
Changed:
Column naming convention
attribute includes the following new provisions:- Column IDs should not exceed 50 characters.
- Attribute renamed to
Column naming and ordering
to denote it also includes rules for column ordering.
ChargeCategory
column updates:- Added "Credit" value for credits and any applicable credit corrections. See added
ChargeClass
column. - Updated "Usage", "Purchase", and "Tax" to include refunds/corrections. See added
ChargeClass
column. - Updated "Adjustment" value to exclude credits and refunds.
- Added "Credit" value for credits and any applicable credit corrections. See added
ChargeFrequency
column updates:- Column is recommended and may not be present.
CommitmentDiscountCategory
column updates:- Column is conditional and only required when the provider supports commitment discounts.
CommitmentDiscountId
column updates:- Column is conditional and only required when the provider supports commitment discounts.
CommitmentDiscountName
column updates:- Column is conditional and only required when the provider supports commitment discounts.
CommitmentDiscountType
column updates:- Column is conditional and only required when the provider supports commitment discounts.
ConsumedQuantity
column updates:- Column renamed from UsageQuantity. It is now limited to ChargeType "Usage" rows.
- Column is conditional and only required when the provider supports the measurement of usage.
- Column must not be null when
ChargeCategory
is "Usage" andChargeClass
is not "Correction".
ConsumedUnit
column updates:- Column renamed from UsageUnit. It is now limited to ChargeType "Usage" rows.
- Column is conditional and only required when the provider supports the measurement of usage.
- Column must not be null when
ChargeCategory
is "Usage" andChargeClass
is not "Correction".
EffectiveCost
column updates:- Clarified that effective cost does not mix or "blend" costs across multiple charges.
- Specified that in the case of a purchase charge paid to cover future eligible charges, the Effective Cost is set to 0.
ListUnitPrice
column updates:- Column is conditional and only required when the provider publishes a price list that excludes discounts.
- Must not be null when
ChargeClass
is not "Correction" andChargeCategory
is "Usage" or "Purchase". - Must be null when
ChargeCategory
is "Tax".
PricingCategory
column updates:- Column is conditional and only required when the provider supports more than one pricing category value.
- Changed "On-Demand" to "Standard".
- Changed "Commitment-Based" to "Committed".
- Must not be null when
ChargeClass
is not "Correction" andChargeCategory
is "Usage" or "Purchase". - Must be null when
ChargeCategory
is "Tax".
PricingQuantity
- Must not be null when
ChargeClass
is not "Correction" andChargeCategory
is "Usage" or "Purchase". - Must be null when
ChargeCategory
is "Tax".
- Must not be null when
PricingUnit
- Must not be null when
ChargeClass
is not "Correction" andChargeCategory
is "Usage" or "Purchase". - Must be null when
ChargeCategory
is "Tax".
- Must not be null when
RegionId
column updates:Region
column was renamed toRegionId
whenRegionName
column was introduced
ResourceId
column updates:- Column is conditional and only required when the provider supports billing based on provisioned resource instances.
ResourceName
column updates:- Column is conditional and only required when the provider supports billing based on provisioned resource instances.
ResourceType
column updates:- Column is conditional and only required when the provider supports billing based on provisioned resource instances and supports multiple "types" of resources.
SkuId
column updates:- Column is conditional and only required when the provider publishes a SKU list.
- Must not be null when
ChargeClass
is not "Correction" andChargeCategory
is "Usage" or "Purchase". - Must be null when
ChargeCategory
is "Tax".
SkuPriceId
column updates:- Column is conditional and only required when the provider publishes a SKU price list.
- Must not be null when
ChargeClass
is not "Correction" andChargeCategory
is "Usage" or "Purchase". - Must be null when
ChargeCategory
is "Tax".
SubAccountId
column updates:- Column is conditional and only required when the provider supports a sub account construct.
SubAccountName
column updates:- Column is conditional and only required when the provider supports a sub account construct.
Tags
column updates:- Column is conditional and only required when the provider supports setting user- or provider-defined tags.
- Tag keys that cannot have a value must use a boolean
true
as the tag value.
Fixed:
CommitmentDiscountType
column constraints were updated to show the column as required to align with the normative text.
Removed:
ChargeSubcategory
column - SeeChargeCategory
andChargeClass
columns
Announced November 15, 2023
Added:
Discount handling
attributeKey/value format
attributeNumeric format
attributeUnit format
attributeChargeDescription
columnChargeFrequency
columnChargeSubcategory
columnCommitmentDiscountCategory
columnCommitmentDiscountId
columnCommitmentDiscountName
columnCommitmentDiscountType
columnListCost
columnListUnitPrice
columnPricingCategory
columnPricingQuantity
columnPricingUnit
columnResourceType
columnSkuId
columnSkuPriceId
columnTags
columnUsageQuantity
columnUsageUnit
column
Changed:
Column naming convention
attribute includes the following new provisions:- Columns with a
Category
suffix must be normalized. - External, custom columns can be added but must be prefixed by
x_
. - FOCUS columns must be listed before custom columns in the dataset.
- Added "SKU" as an exception to the "no acronyms" rule. The display name is "SKU" and column ID is
Sku
.
- Columns with a
AmortizedCost
column renamed toEffectiveCost
ChargeType
column renamed toChargeCategory
Announced June 24, 2023
Added:
Column naming convention
attributeCurrency code format
attributeDate/time format
attributeNull handling
attributeAmortizedCost
columnAvailabilityZone
columnBilledCost
columnBillingAccountId
columnBillingAccountName
columnBillingCurrency
columnBillingPeriodEnd
columnBillingPeriodStart
columnChargePeriodEnd
columnChargePeriodStart
columnChargeType
columnInvoiceIssuerName
columnProviderName
columnPublisherName
columnRegion
columnResourceId
columnResourceName
columnServiceCategory
columnServiceName
columnSubAccountId
columnSubAccountName
column
This table maps the evolution of the specification, showcasing column introductions and updates from its initial version 0.5 to the comprehensive revisions in "1.0-preview", "1.0" and beyond.
Column ID | Revision Introduced | Status |
---|---|---|
AmortizedCost | 0.5 | Renamed to EffectiveCost in v1.0-preview |
AvailabilityZone | 0.5 | |
BilledCost | 0.5 | |
BillingAccountId | 0.5 | |
BillingAccountName | 0.5 | |
BillingCurrency | 0.5 | |
BillingPeriodEnd | 0.5 | |
BillingPeriodStart | 0.5 | |
CapacityReservationId | 1.1 | |
CapacityReservationStatus | 1.1 | |
ChargeType | 0.5 | Renamed to ChargeCategory in v1.0-preview |
ChargeCategory | 1.0-preview | Renamed from ChargeType in v1.0-preview |
ChargeClass | 1.0 | |
ChargeDescription | 1.0-preview | |
ChargeFrequency | 1.0-preview | |
ChargePeriodEnd | 0.5 | |
ChargePeriodStart | 0.5 | |
ChargeSubcategory | 1.0-preview | Removed in v1.0 |
CommitmentDiscountCategory | 1.0-preview | |
CommitmentDiscountId | 1.0-preview | |
CommitmentDiscountName | 1.0-preview | |
CommitmentDiscountStatus | 1.0 | |
CommitmentDiscountType | 1.0-preview | |
CommitmentDiscountQuantity | 1.1 | |
CommitmentDiscountUnit | 1.1 | |
ConsumedQuantity | 1.0 | Renamed from UsageQuantity in v1.0 |
ConsumedUnit | 1.0 | Renamed from UsageUnit in v1.0 |
ContractedCost | 1.0 | |
ContractedUnitPrice | 1.0 | |
EffectiveCost | 1.0-preview | Renamed from AmortizedCost in v1.0-preview |
InvoiceIssuerName | 0.5 | |
ListCost | 1.0-preview | |
ListUnitPrice | 1.0-preview | |
PricingCategory | 1.0-preview | |
PricingQuantity | 1.0-preview | |
PricingUnit | 1.0-preview | |
ProviderName | 0.5 | |
PublisherName | 0.5 | |
Region | 0.5 | Renamed to RegionId in v1.0 |
RegionId | 1.0 | Renamed from Region in v1.0 |
RegionName | 1.0 | |
ResourceId | 0.5 | |
ResourceName | 0.5 | |
ResourceType | 1.0-preview | |
ServiceCategory | 0.5 | |
ServiceName | 0.5 | |
ServiceSubcategory | 1.1 | |
SkuId | 1.0-preview | |
SkuMeter | 1.1 | |
SkuPriceDetails | 1.1 | |
SkuPriceId | 1.0-preview | |
SubAccountId | 0.5 | |
SubAccountName | 0.5 | |
Tags | 1.0-preview | |
UsageQuantity | 1.0-preview | Renamed to ConsumedQuantity in v1.0 |
UsageUnit | 1.0-preview | Renamed to ConsumedUnit in v1.0 |