{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/tm-forum/refs/heads/main/json-schema/tmf620-product-catalog-product-offering-schema.json", "title": "ProductOffering", "description": "ProductOffering schema from TM Forum API", "allOf": [ { "$ref": "#/components/schemas/Entity" }, { "type": "object", "description": "Represents entities that are orderable from the provider of the catalog, this resource includes pricing information.", "properties": { "description": { "type": "string", "description": "Description of the productOffering" }, "isBundle": { "type": "boolean", "description": "isBundle determines whether a productOffering represents a single productOffering (false), or a bundle of productOfferings (true)." }, "isSellable": { "type": "boolean", "description": "A flag indicating if this product offer can be sold stand-alone for sale or not. If this flag is false it indicates that the offer can only be sold within a bundle." }, "statusReason": { "type": "string", "description": "A string providing a complementary information on the value of the lifecycle status attribute." }, "validFor": { "$ref": "#/components/schemas/TimePeriod" }, "version": { "type": "string", "description": "ProductOffering version" }, "place": { "type": "array", "items": { "$ref": "#/components/schemas/PlaceRef" }, "description": "Place defines the places where the products are sold or delivered." }, "serviceLevelAgreement": { "$ref": "#/components/schemas/SLARef" }, "channel": { "type": "array", "items": { "$ref": "#/components/schemas/ChannelRef" }, "description": "The channel defines the channel for selling product offerings." }, "serviceCandidate": { "$ref": "#/components/schemas/ServiceCandidateRef" }, "category": { "type": "array", "items": { "$ref": "#/components/schemas/CategoryRef" }, "description": "The category resource is used to group product offerings, service and resource candidates in logical containers. Categories can contain other categories and/or product offerings, resource or service candidates." }, "resourceCandidate": { "$ref": "#/components/schemas/ResourceCandidateRef" }, "productOfferingTerm": { "type": "array", "items": { "$ref": "#/components/schemas/ProductOfferingTerm" }, "description": "A condition under which a ProductOffering is made available to Customers. For instance, a productOffering can be offered with multiple commitment periods." }, "productOfferingPrice": { "type": "array", "items": { "$ref": "#/components/schemas/ProductOfferingPriceRefOrValue" }, "description": "An amount, usually of money, that is asked for or allowed when a ProductOffering is bought, rented, or leased. The price is valid for a defined period of time and may not represent the actual price paid by a customer." }, "agreement": { "type": "array", "items": { "$ref": "#/components/schemas/AgreementRef" }, "description": "An agreement represents a contract or arrangement, either written or verbal and sometimes enforceable by law, such as a service level agreement or a customer price agreement. An agreement involves a number of other business entities, such as products, services, and resources and/or their specifications." }, "bundledProductOffering": { "type": "array", "items": { "$ref": "#/components/schemas/BundledProductOffering" }, "description": "A type of ProductOffering that belongs to a grouping of ProductOfferings made available to the market. It inherits of all attributes of ProductOffering." }, "bundledGroupProductOffering": { "type": "array", "items": { "$ref": "#/components/schemas/BundledGroupProductOffering" }, "description": "A group of ProductOfferings that can be selected for instantiation, e.g. between 2 and 7 from a list of 15 channel packs." }, "attachment": { "type": "array", "items": { "$ref": "#/components/schemas/AttachmentRefOrValue" }, "description": "Complements the description of an element (for instance a product) through video, pictures..." }, "marketSegment": { "type": "array", "items": { "$ref": "#/components/schemas/MarketSegmentRef" }, "description": "provides references to the corresponding market segment as target of product offerings. A market segment is grouping of Parties, GeographicAreas, SalesChannels, and so forth." }, "productOfferingRelationship": { "type": "array", "items": { "$ref": "#/components/schemas/ProductOfferingRelationship" }, "description": "A relationship between this product offering and other product offerings." }, "productOfferingCharacteristic": { "type": "array", "items": { "$ref": "#/components/schemas/CharacteristicSpecification" }, "description": "A characteristic quality or distinctive feature of a ProductOffering. The characteristic can take on a discrete value fixed at design (catalog authoring) time, such as Mobile Plan Rank, and is not generally modifiable at inventory level." }, "prodSpecCharValueUse": { "type": "array", "items": { "$ref": "#/components/schemas/ProductSpecificationCharacteristicValueUse" }, "description": "A use of the ProductSpecificationCharacteristicValue by a ProductOffering to which additional properties (attributes) apply or override the properties of similar properties contained in ProductSpecificationCharacteristicValue. It should be noted that characteristics which their value(s) addressed by this object must exist in corresponding product specification. The available characteristic values for a ProductSpecificationCharacteristic in a Product specification can be modified at the ProductOffering level. For example, a characteristic 'Color' might have values White, Blue, Green, and Red. But, the list of values can be restricted to e.g. White and Blue in an associated product offering. It should be noted that the list of values in 'ProductSpecificationCharacteristicValueUse' is a strict subset of the list of values as defined in the corresponding product specification characteristics." }, "policy": { "type": "array", "items": { "$ref": "#/components/schemas/PolicyRef" }, "description": "The Policy resource represents a policy/rule applied to ProductOffering." }, "allowedAction": { "type": "array", "items": { "$ref": "#/components/schemas/AllowedProductAction" }, "description": "List of actions that can be executed (in context of a product order) on products instantiated from this offering" }, "lastUpdate": { "type": "string", "format": "date-time", "description": "Date and time of the last update" }, "lifecycleStatus": { "type": "string", "description": "Used to indicate the current lifecycle status" }, "name": { "type": "string", "description": "Name of the productOffering" }, "productSpecification": { "$ref": "#/components/schemas/ProductSpecificationRef" }, "externalIdentifier": { "type": "array", "description": "List of external identifieers for the offering, e.g. identifier in source catalog", "items": { "$ref": "#/components/schemas/ExternalIdentifier" } } } } ], "discriminator": { "propertyName": "@type", "mapping": { "ProductOffering": "#/components/schemas/ProductOffering" } } }