diff --git a/extensions/adobe/experience/offer-management/capping-constraint.schema.json b/extensions/adobe/experience/offer-management/capping-constraint.schema.json index e37dd2a5f..e4a19a70f 100644 --- a/extensions/adobe/experience/offer-management/capping-constraint.schema.json +++ b/extensions/adobe/experience/offer-management/capping-constraint.schema.json @@ -7,6 +7,8 @@ ], "$schema": "http://json-schema.org/draft-06/schema#", "$id": "https://ns.adobe.com/experience/offer-management/capping-constraint", + "meta:abstract": false, + "meta:extensible": true, "type": "object", "title": "Capping Constraint", "description": "Offer Capping Constraint", diff --git a/extensions/adobe/experience/offer-management/content/html-content.schema.json b/extensions/adobe/experience/offer-management/content/html-content.schema.json index 22bbe9b23..921d31dea 100644 --- a/extensions/adobe/experience/offer-management/content/html-content.schema.json +++ b/extensions/adobe/experience/offer-management/content/html-content.schema.json @@ -9,12 +9,16 @@ "$id": "https://ns.adobe.com/experience/offer-management/content/html-content", "meta:extends": ["https://ns.adobe.com/experience/offer-management/representation-content"], + "meta:abstract": false, + "meta:extensible": true, "type": "object", - "title": "Content", - "description": "Offer HTML Content", + "title": "HTML Content", + "description": "Image content used in an offer representation", "definitions": { "html-content": { "type": "object", + "title": "HTML Content", + "description": "HTML content used in an offer representation", "properties": { "@type": { "type": "string", diff --git a/extensions/adobe/experience/offer-management/content/image-content.schema.json b/extensions/adobe/experience/offer-management/content/image-content.schema.json index 9b30bd804..fdbcc97d9 100644 --- a/extensions/adobe/experience/offer-management/content/image-content.schema.json +++ b/extensions/adobe/experience/offer-management/content/image-content.schema.json @@ -9,14 +9,16 @@ "$id": "https://ns.adobe.com/experience/offer-management/content/image-content", "meta:extends": ["https://ns.adobe.com/experience/offer-management/representation-content"], + "meta:abstract": false, + "meta:extensible": true, "type": "object", "title": "Image Content", - "description": "Offer Image Content", + "description": "Image content used in an offer representation", "definitions": { "image-content": { "type": "object", - "title": "Image", - "description": "Offer content as an image", + "title": "Image Content", + "description": "Image content used in an offer representation", "properties": { "@type": { "type": "string", @@ -31,7 +33,7 @@ "type": "string", "format": "uri", "title": "Image URL", - "description": "Image representing the offer" + "description": "Image representing the offer. Access to the image may be restricted and clients should not use this URL in to deliver the content publicly." }, "xdm:imageName": { "type": "string", diff --git a/extensions/adobe/experience/offer-management/content/text-content.schema.json b/extensions/adobe/experience/offer-management/content/text-content.schema.json index 59a14411f..7d126a0c2 100644 --- a/extensions/adobe/experience/offer-management/content/text-content.schema.json +++ b/extensions/adobe/experience/offer-management/content/text-content.schema.json @@ -9,12 +9,16 @@ "$id": "https://ns.adobe.com/experience/offer-management/content/text-content", "meta:extends": ["https://ns.adobe.com/experience/offer-management/representation-content"], + "meta:abstract": false, + "meta:extensible": true, "type": "object", "title": "Plain Text Content", - "description": "Offer Representation", + "description": "Plain text content used in an offer representation", "definitions": { "text-content": { "type": "object", + "title": "Plain Text Content", + "description": "Plain text content used in an offer representation", "properties": { "@type": { "type": "string", diff --git a/extensions/adobe/experience/offer-management/eligibility-rule.example.1.json b/extensions/adobe/experience/offer-management/eligibility-rule.example.1.json new file mode 100644 index 000000000..b0495c3f3 --- /dev/null +++ b/extensions/adobe/experience/offer-management/eligibility-rule.example.1.json @@ -0,0 +1,20 @@ +{ + "@id": "rule-0001", + "xdm:name": "Californians with two or more purchases of more than $1000", + "xdm:value": "profile.xdm:homeAddress.xdm:stateOrProvince = \"CA\" AND (SELECT X FROM xEvent WHERE X.xdm:commerce.xdm:order.xdm:priceTotal > 1000 AND X.xdm:commerce.xdm:order.xdm:currencyCode = \"USD\").count() > 1", + "usedProperties" : [ + { + "xdm:modelReference" : "https://ns.adobe.com/xdm/context/profile", + "xdm:modelPropertyPaths" : [ + "xdm:homeAddress.xdm:stateProvince" + ] + }, + { + "xdm:modelReference" : "https://ns.adobe.com/xdm/context/experienceevent", + "xdm:modelPropertyPaths" : [ + "xdm:commerce.xdm:order.xdm:priceTotal", + "xdm:commerce.xdm:order.xdm:currencyCode" + ] + } + ] +} diff --git a/extensions/adobe/experience/offer-management/eligibility-rule.schema.json b/extensions/adobe/experience/offer-management/eligibility-rule.schema.json index 15df50129..40265c821 100644 --- a/extensions/adobe/experience/offer-management/eligibility-rule.schema.json +++ b/extensions/adobe/experience/offer-management/eligibility-rule.schema.json @@ -7,10 +7,11 @@ ], "$schema": "http://json-schema.org/draft-06/schema#", "$id": "https://ns.adobe.com/experience/offer-management/eligibility-rule", - "meta:extensible": "true", + "meta:abstract": false, + "meta:extensible": true, "type": "object", "title": "Eligibility Rule", - "description": "Eligibility rule encapsulates a profile query", + "description": "An EligibilityRule is a named reusable predicate used in the domain of audience segmentation and message personalization. The Profile Query Language forms the foundation of those predicates. The prodicate operates not only over profile fields but also over contextual data objects provided at the time of decisioning.", "definitions": { "eligibility-rule": { "properties": { @@ -18,29 +19,29 @@ "type": "string", "format": "uri", "title": "ID", - "description": "The unique identifier of the filter" + "description": "The unique identifier of the EligibilityRule. This identifier is assigned by clients or services that use the repository and is not generated by the repository itself. This @id must be unquie within a repository container for objects that are not the same, otherwise it is interpreted as referring to the same object. The @id is used in link relationships. For example an Offer's selection constraint object references an EligibilityRule object." }, "xdm:name": { "type": "string", "title": "Name", - "description": "Filter name" + "description": "EligibilityRule name that is used to locate this object in a search operation" }, "xdm:value": { "type": "string", - "title": "Expression", - "description": "Profile Query" + "title": "PQL Expression", + "description": "The string serialization of the predicate expression in pql/json format" }, - "xdm:usedProperties": { + "xdm:modelUsage": { "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } + "title": "Used Properties", + "description": "An list of Model Usage objects, one per model, that lists the fully qualified path to every used property from the model.", + "type": "array", + "items": { + "$ref": "https://ns.adobe.com/experience/offer-management/model-usage" } } }, - "required": ["xdm:name", "xdm:value"] + "required": ["@id", "xdm:name", "xdm:value", "xdm:modelUsage"] } }, "allOf": [ diff --git a/extensions/adobe/experience/offer-management/fallback-offer.schema.json b/extensions/adobe/experience/offer-management/fallback-offer.schema.json index 5f17469a7..2203b72bb 100644 --- a/extensions/adobe/experience/offer-management/fallback-offer.schema.json +++ b/extensions/adobe/experience/offer-management/fallback-offer.schema.json @@ -8,65 +8,14 @@ "$schema": "http://json-schema.org/draft-06/schema#", "$id": "https://ns.adobe.com/experience/offer-management/fallback-offer", "meta:extends": ["https://ns.adobe.com/experience/offer-management/offer"], + "meta:abstract": false, + "meta:extensible": true, "type": "object", "title": "Fallback Offer", - "description": - "Fallback offer is a default offer used when there is no offers satisfying all constraints", + "description": "Fallback offer is a default offer used when there is no personalization offer left that satisfies all constraints", "definitions": { "fallback-offer": { - "type": "object", - "properties": { - "@id": { - "type": "string", - "format": "uri", - "title": "ID", - "description": "The unique identifier of the offer" - }, - "xdm:name": { - "type": "string", - "title": "Name", - "description": "Offer name" - }, - "xdm:status": { - "type": "string", - "title": "Status", - "description": "Offer Status", - "enum": [ - "draft", - "pending", - "rejected", - "approved", - "inUse", - "archived" - ], - "meta:enum": { - "draft": "Draft", - "pending": "Pending", - "rejected": "Rejected", - "approved": "Approved", - "inUse": "In Use", - "archived": "Archived" - } - }, - "xdm:representations": { - "type": "array", - "items": { - "$ref": - "https://ns.adobe.com/experience/offer-management/offer-representation" - }, - "title": "Representations", - "description": "Offer representations for different placements" - }, - "xdm:customMetadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "title": "Custom Properties", - "description": - "Custom metadata allows end-users to attach properties to individual instances" - } - } + "type": "object" } }, "allOf": [ diff --git a/extensions/adobe/experience/offer-management/model-usage.schema.json b/extensions/adobe/experience/offer-management/model-usage.schema.json new file mode 100644 index 000000000..e69f873f9 --- /dev/null +++ b/extensions/adobe/experience/offer-management/model-usage.schema.json @@ -0,0 +1,36 @@ +{ + "meta:license": [ + "Copyright 2018 Adobe Systems Incorporated. All rights reserved.", + "This work is licensed under a Creative Commons Attribution 4.0 International (CC BY 4.0) license", + "you may not use this file except in compliance with the License. You may obtain a copy", + "of the License at https://creativecommons.org/licenses/by/4.0/" + ], + "$schema": "http://json-schema.org/draft-06/schema#", + "$id": "https://ns.adobe.com/experience/offer-management/model-usage", + "meta:abstract": false, + "meta:extensible": true, + "type": "object", + "title": "Used XDM Models and Properties from those models", + "description": "A key-value pair whose key is reference to the model, i.e. its @id property. The value is an array of strings, each string representing a fully qualified path to an XDM field with dots used as the path delimiter.", + "definitions": { + "model-usage": { + "type": "object", + "title": "Model and Used Properties", + "description": "A key-value pair whose key is reference to the model, i.e. its @id property. The value is an array of strings, each string representing a fully qualified path to an XDM field with dots used as the path delimiter.", + "properties": { + "xdm:modelReference": { + "type": "string", + "format": "uri", + "description": "Reference to the model, i.e. its @id property. " + }, + "xdm:modelPropertyPaths": { + "type": "array", + "items": { + "type": "string", + "description": "A fully qualified path to an XDM field with dots used as the path delimite " + } + } + }, + "required": ["xdm:modelReference", "xdm:modelPropertyPaths"] + } +} diff --git a/extensions/adobe/experience/offer-management/offer-activity.schema.json b/extensions/adobe/experience/offer-management/offer-activity.schema.json index 9d156d8ab..c7858efc6 100644 --- a/extensions/adobe/experience/offer-management/offer-activity.schema.json +++ b/extensions/adobe/experience/offer-management/offer-activity.schema.json @@ -7,9 +7,11 @@ ], "$schema": "http://json-schema.org/draft-06/schema#", "$id": "https://ns.adobe.com/experience/offer-management/offer-activity", + "meta:abstract": false, + "meta:extensible": true, "type": "object", "title": "Activity", - "description": "Offer Activity", + "description": "An Offer Activity is used to control the decisioning process. It specifies the filter criteria applied to the total inventory to narrow down by topic/category, the placement to narrow down the inventory to those offers that technically fit into the desired space for the offer and specifies a fall back option should the combined constraints disqualify all available personalization options (offers).", "definitions": { "offer-activity": { "properties": { @@ -17,7 +19,7 @@ "type": "string", "format": "uri", "title": "ID", - "description": "The unique identifier of the activity" + "description": "The unique identifier of the activity. This identifier is assigned by clients or services that use the repository and is not generated by the repository itself. This @id must be unquie within a repository container for objects that are not the same, otherwise it is interpreted as referring to the same object. " }, "xdm:name": { "type": "string", @@ -28,10 +30,9 @@ "type": "string", "title": "Status", "description": "Activity Status", - "enum": ["draft", "pending", "live", "complete", "archived"], + "enum": ["draft", "live", "complete", "archived"], "meta:enum": { "draft": "Draft", - "pending": "Pending", "live": "Live", "complete": "Complete", "archived": "Archived" @@ -51,11 +52,24 @@ }, "xdm:placement": { "type": "string", - "title": "Placement", - "description": "Placement to constrain the offers" + "format": "uri", + "title": "Offer Placement", + "description": "The reference to an offer placement used to restrict to certain offers when a decisioning is made the context of this activity. The value is the URI (@id) of the placement that is referenced." + }, + "xdm:filter": { + "type": "string", + "format": "uri", + "title": "Offer Filter", + "description": "The reference to a filter that is applied to the inventory when a decisioning is made the context of this activity. The value is the URI (@id) of the filter that is referenced." + }, + "xdm:fallback": { + "type": "string", + "format": "uri", + "title": "Fallback Offer", + "description": "The reference to a fallback offer that is used when decisioning in the context of this activity does not qualify any of the offers specified in the offer filter. The value is the URI (@id) of the tag that is referenced." } }, - "required": ["xdm:name", "xdm:status"] + "required": ["@id", "xdm:name", "xdm:status"] } }, "allOf": [ diff --git a/extensions/adobe/experience/offer-management/offer-category.schema.json b/extensions/adobe/experience/offer-management/offer-category.schema.json deleted file mode 100644 index 25fa4d39d..000000000 --- a/extensions/adobe/experience/offer-management/offer-category.schema.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "meta:license": [ - "Copyright 2018 Adobe Systems Incorporated. All rights reserved.", - "This work is licensed under a Creative Commons Attribution 4.0 International (CC BY 4.0) license", - "you may not use this file except in compliance with the License. You may obtain a copy", - "of the License at https://creativecommons.org/licenses/by/4.0/" - ], - "$schema": "http://json-schema.org/draft-06/schema#", - "$id": "https://ns.adobe.com/experience/offer-management/offer-category", - "meta:extends": [ - "https://ns.adobe.com/experience/offer-management/offer-filter-rule" - ], - "type": "object", - "title": "Offer Category Filter", - "description": "Offer Category Filter", - "definitions": { - "offer-category": { - "properties": { - "@id": { - "type": "string", - "format": "uri", - "title": "ID", - "description": "The unique identifier of the category filter" - }, - "xdm:name": { - "type": "string", - "title": "Name", - "description": "Category name" - }, - "xdm:value": { - "type": "string", - "title": "Expression", - "description": "Tag rule" - } - } - } - }, - "allOf": [ - { - "$ref": "#/definitions/offer-category" - }, - { - "$ref": - "https://ns.adobe.com/experience/offer-management/offer-filter-rule" - } - ] -} diff --git a/extensions/adobe/experience/offer-management/offer-filter.schema.json b/extensions/adobe/experience/offer-management/offer-filter.schema.json index 6848ba9a8..d49d96555 100644 --- a/extensions/adobe/experience/offer-management/offer-filter.schema.json +++ b/extensions/adobe/experience/offer-management/offer-filter.schema.json @@ -7,10 +7,11 @@ ], "$schema": "http://json-schema.org/draft-06/schema#", "$id": "https://ns.adobe.com/experience/offer-management/offer-filter", - "meta:extensible": "true", + "meta:abstract": false, + "meta:extensible": true, "type": "object", - "title": "Filter Rule", - "description": "Filters are used to specify criteria for offer selection", + "title": "Filter ", + "description": "Filters are used to specify criteria for offer selection. The most common filter mechanism is by the tags that are associated with an offer. However ", "definitions": { "offer-filter": { "properties": { @@ -18,7 +19,7 @@ "type": "string", "format": "uri", "title": "ID", - "description": "The unique identifier of the filter" + "description": "The unique identifier of the filter. This identifier is assigned by clients or services that use the repository and is not generated by the repository itself. This @id must be unquie within a repository container for objects that are not the same, otherwise it is interpreted as referring to the same object." }, "xdm:name": { "type": "string", @@ -28,10 +29,10 @@ "xdm:value": { "type": "string", "title": "Expression", - "description": "Tag rule" + "description": "Contains the condition that is used to select offers based on a combination of tages or, directly, using the @id of offers" } }, - "required": ["xdm:name", "xdm:value"] + "required": ["@id", "xdm:name", "xdm:value"] } }, "allOf": [ diff --git a/extensions/adobe/experience/offer-management/offer-placement.schema.json b/extensions/adobe/experience/offer-management/offer-placement.schema.json index 6a1d5d90e..f9fb5767f 100644 --- a/extensions/adobe/experience/offer-management/offer-placement.schema.json +++ b/extensions/adobe/experience/offer-management/offer-placement.schema.json @@ -7,9 +7,11 @@ ], "$schema": "http://json-schema.org/draft-06/schema#", "$id": "https://ns.adobe.com/experience/offer-management/offer-placement", + "meta:abstract": false, + "meta:extensible": true, "type": "object", "title": "Placement", - "description": "Offer Placement", + "description": "An Offer Placement describes a location or place in a personalized message. It is used to set technical constraints for content that the personalization offer supplies.", "definitions": { "offer-placement": { "properties": { @@ -17,7 +19,7 @@ "type": "string", "format": "uri", "title": "ID", - "description": "The unique identifier of the placement" + "description": "The unique identifier of the placement. This identifier is assigned by clients or services that use the repository and is not generated by the repository itself. This @id must be unquie within a repository container for objects that are not the same, otherwise it is interpreted as referring to the same object." }, "xdm:name": { "type": "string", @@ -27,22 +29,21 @@ "xdm:description": { "type": "string", "title": "Description", - "description": "Offer placement description" + "description": "Offer placement description. It is used to convery human readable intentions on how the offers are used in the overall message. That a certain space is a \"Banner\" in a web page is often conveyed via the description and not by a formal method." }, "xdm:channel": { "type": "string", "title": "Channel", "description": - "Offer Channel ID. See 'https://ns.adobe.com/xdm/channels/channel'" + "The Channel ID where the offer content is intended to be used. The channel constraint is used to convey not only where the offer will be used but determine the content editor or validator that is used for the Offer's representation. See 'https://ns.adobe.com/xdm/channels/channel'" }, "xdm:contentType": { - "ref": - "https://ns.adobe.com/experience/offer-management/representation-content#/definitions/content-type", + "ref": "https://ns.adobe.com/experience/offer-management/representation-content#/definitions/content-type", "title": "Content Type", - "description": "Content Type: image, html or plain text" + "description": "A contraints for the content of offers that can be shown in the place descibed by this placement. Content Type: image, html or plain text" } }, - "required": ["xdm:name", "xdm:channel", "xdm:contentTypes"] + "required": ["@id", "xdm:name", "xdm:channel", "xdm:contentType"] } }, "allOf": [ diff --git a/extensions/adobe/experience/offer-management/offer-representation.schema.json b/extensions/adobe/experience/offer-management/offer-representation.schema.json index 5343b792d..a56cc2070 100644 --- a/extensions/adobe/experience/offer-management/offer-representation.schema.json +++ b/extensions/adobe/experience/offer-management/offer-representation.schema.json @@ -8,7 +8,8 @@ "$schema": "http://json-schema.org/draft-06/schema#", "$id": "https://ns.adobe.com/experience/offer-management/offer-representation", - "meta:extensible": "true", + "meta:abstract": true, + "meta:extensible": true, "type": "object", "title": "Representation", "description": "Offer Representation", @@ -21,13 +22,13 @@ "xdm:channel": { "type": "string", "title": "Channel", - "description": - "Offer Channel ID. See 'https://ns.adobe.com/xdm/channels/channel'" + "description": "Offer Channel ID. See 'https://ns.adobe.com/xdm/channels/channel'" }, "xdm:placement": { "type": "string", + "format": "uri" "title": "Placement", - "description": "Placement to comply with" + "description": "Placement to comply with. The value is the URI (@id) of the placement that is referenced." } }, "required": [ diff --git a/extensions/adobe/experience/offer-management/offer.schema.json b/extensions/adobe/experience/offer-management/offer.schema.json index d38c409d7..57b32dc88 100644 --- a/extensions/adobe/experience/offer-management/offer.schema.json +++ b/extensions/adobe/experience/offer-management/offer.schema.json @@ -7,10 +7,11 @@ ], "$schema": "http://json-schema.org/draft-06/schema#", "$id": "https://ns.adobe.com/experience/offer-management/offer", - "meta:extensible": "true", + "meta:abstract": true, + "meta:extensible": true, "type": "object", "title": "Offer", - "description": "Adobe Experience Cloud Offer", + "description": "This is the base concept for offers that are used for personalization and those that serve as fallback choices when none of offers for personalization qualify at within the given context.", "definitions": { "offer": { "properties": { @@ -18,23 +19,22 @@ "type": "string", "format": "uri", "title": "ID", - "description": "The unique identifier of the offer" + "description": "The unique identifier of the offer. This identifier is assigned by clients or services that use the repository and is not generated by the repository itself. This @id must be unquie within a repository container for objects that are not the same, otherwise it is interpreted as referring to the same object." }, "xdm:name": { "type": "string", "title": "Name", - "description": "Offer name" + "description": "The Offer name. A human readable string to find one or more offers." }, "xdm:status": { "type": "string", "title": "Status", - "description": "Offer Status", + "description": "Offer Status allows user workflows to be conducted with offers. The status may affect where an offer is visible or considered relevant. Status changes are driven by the clients or services that use offers. The offer repository does not automatically change the status of an offer based on some condition.", "enum": [ "draft", "pending", "rejected", "approved", - "inUse", "archived" ], "meta:enum": { @@ -42,15 +42,23 @@ "pending": "Pending", "rejected": "Rejected", "approved": "Approved", - "inUse": "In Use", "archived": "Archived" } }, + "xdm:tags": { + "type": "array", + "title": "Tags", + "description": "The set of tags associated with this offer. The tags are used in OfferFilter expressions to constrain the overal offer inventory to a topical sub set (category).", + "items": { + "type": "string", + "format": "uri", + "description": "A reference to a Tag object. The value is the URI (@id) of the tag that is referenced." + } + }, "xdm:representations": { "type": "array", "items": { - "$ref": - "https://ns.adobe.com/experience/offer-management/offer-representation" + "$ref": "https://ns.adobe.com/experience/offer-management/offer-representation" }, "title": "Representations", "description": "Offer representations for different placements" @@ -65,7 +73,7 @@ "Custom metadata allows end-users to attach properties to individual instances" } }, - "required": ["xdm:name", "xdm:status"] + "required": ["@id", "xdm:name", "xdm:status"] } }, "allOf": [ diff --git a/extensions/adobe/experience/offer-management/personalized-offer.schema.json b/extensions/adobe/experience/offer-management/personalized-offer.schema.json index 7b54d55e0..f1c60751e 100644 --- a/extensions/adobe/experience/offer-management/personalized-offer.schema.json +++ b/extensions/adobe/experience/offer-management/personalized-offer.schema.json @@ -8,78 +8,28 @@ "$schema": "http://json-schema.org/draft-06/schema#", "$id": "https://ns.adobe.com/experience/offer-management/personalized-offer", "meta:extends": ["https://ns.adobe.com/experience/offer-management/offer"], + "meta:abstract": false, + "meta:extensible": true, "type": "object", "title": "Adobe Experience Cloud Personalized Offer", - "description": "Adobe Experience Cloud Personalized Offer", + "description": "A Personalized Offer is the conceptual entity that is chosen during the decisioning process. The objective for decisioning is to take a large inventory of content items and apply numerous contraint rules to that inventory to first narrow it down and then rank the qualifying options. The outcome modifies the overall experience to accommodate specific individuals, sometimes tied to groups or segments of individuals.", "definitions": { "personalized-offer": { "properties": { - "@id": { - "type": "string", - "format": "uri", - "title": "ID", - "description": "The unique identifier of the offer" - }, - "xdm:name": { - "type": "string", - "title": "Name", - "description": "Offer name" - }, - "xdm:status": { - "type": "string", - "title": "Status", - "description": "Offer Status", - "enum": [ - "draft", - "pending", - "rejected", - "approved", - "inUse", - "archived" - ], - "meta:enum": { - "draft": "Draft", - "pending": "Pending", - "rejected": "Rejected", - "approved": "Approved", - "inUse": "In Use", - "archived": "Archived" - } - }, - "xdm:representations": { - "type": "array", - "items": { - "$ref": - "https://ns.adobe.com/experience/offer-management/offer-representation" - }, - "title": "Representations", - "description": "Offer representations for different placements" - }, - "xdm:customMetadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "title": "Custom Properties", - "description": - "Custom metadata allows end-users to attach properties to individual instances" - }, "xdm:rank": { "$ref": "https://ns.adobe.com/experience/offer-management/rank", "title": "Rank", - "description": "Offer Rank (priority)" - }, - "xdm:cappingConstraint": { - "$ref": - "https://ns.adobe.com/experience/offer-management/capping-constraint", - "title": "Capping", - "description": "Offer capping constraint" + "description": "Offer Rank (priority). Defines what is considered the \"best offer\" given the context of the decision. Among all the Offers that have not been disqualified due other constraints the ranking will decide top or top N Offers to be proposed." }, "xdm:selectionConstraint": { - "$ref": - "https://ns.adobe.com/experience/offer-management/selection-constraint", - "title": "Eligibility Rule", - "description": "Offer eligibility rule" + "$ref": "https://ns.adobe.com/experience/offer-management/selection-constraint", + "title": "Selection Constraints", + "description": "Selection constraints define all rules that decide if an offer disqualifies from the set of eligible offers at this moment, for this context and/or for this profile identity. For example, Offers tyically have a start and end date before and after they are not eligible for consideration anymore" + }, + "xdm:cappingConstraint": { + "$ref": "https://ns.adobe.com/experience/offer-management/capping-constraint", + "title": "Capping Constaints", + "description": "Capping constraint define additional rules based on prior offer proposition, either across all audiences or for a partcular profile identity." } }, "required": ["xdm:rank", "xdm:selectionConstraint"] diff --git a/extensions/adobe/experience/offer-management/rank.schema.json b/extensions/adobe/experience/offer-management/rank.schema.json index 211c5103c..c50f26775 100644 --- a/extensions/adobe/experience/offer-management/rank.schema.json +++ b/extensions/adobe/experience/offer-management/rank.schema.json @@ -7,6 +7,8 @@ ], "$schema": "http://json-schema.org/draft-06/schema#", "$id": "https://ns.adobe.com/experience/offer-management/rank", + "meta:abstract": false, + "meta:extensible": true, "type": "object", "title": "Offer Rank", "description": "Offer rank (priority)", diff --git a/extensions/adobe/experience/offer-management/representation-content.schema.json b/extensions/adobe/experience/offer-management/representation-content.schema.json index bd876639e..d5ed6114e 100644 --- a/extensions/adobe/experience/offer-management/representation-content.schema.json +++ b/extensions/adobe/experience/offer-management/representation-content.schema.json @@ -8,9 +8,11 @@ "$schema": "http://json-schema.org/draft-06/schema#", "$id": "https://ns.adobe.com/experience/offer-management/representation-content", + "meta:abstract": true, + "meta:extensible": true, "type": "object", "title": "Content", - "description": "Offer representation content", + "description": "Content used in an offer representation", "definitions": { "content-type": { "type": "string", diff --git a/extensions/adobe/experience/offer-management/selection-constraint.schema.json b/extensions/adobe/experience/offer-management/selection-constraint.schema.json index 6bc89c6af..6d272be97 100644 --- a/extensions/adobe/experience/offer-management/selection-constraint.schema.json +++ b/extensions/adobe/experience/offer-management/selection-constraint.schema.json @@ -8,9 +8,11 @@ "$schema": "http://json-schema.org/draft-06/schema#", "$id": "https://ns.adobe.com/experience/offer-management/selection-constraint", + "meta:abstract": false, + "meta:extensible": true, "type": "object", "title": "Offer Selection Constraint", - "description": "Offer Selection Constraint", + "description": "Offer Selection Constraint specify conditions that have to be met in order for an offer to be included in weighing the best offer. Those constraints can have many aspects, ranging from date constraints over rules applied to the user profile fields to rules checked against contextual data available at decision time.", "definitions": { "selection-constraint": { "properties": { @@ -18,13 +20,19 @@ "type": "string", "format": "date-time", "title": "Start Date", - "description": "Offer Start Date" + "description": "Offer Start Date. Offers that have not reached their start date are not yet considered eligbile in the decisioning." }, "xdm:endDate": { "type": "string", "format": "date-time", "title": "End Date", - "description": "Offer End Date" + "description": "Offer End Date. Offers that have passed their end date are no longer considered eligbile in the decisioning process." + }, + "xdm:eligibilityRule": { + "type": "object", + "format": "uri", + "title": "Eligibility Rule", + "description": "The reference to an eligbility rule that tests a condition using the profile and/or other contextual XDM instances. The value is the URI (@id) of the elgibility rule that is referenced." } }, "required": ["xdm:startDate", "xdm:endDate"] diff --git a/extensions/adobe/experience/offer-management/tag.schema.json b/extensions/adobe/experience/offer-management/tag.schema.json index d35e8599c..ac6f14820 100644 --- a/extensions/adobe/experience/offer-management/tag.schema.json +++ b/extensions/adobe/experience/offer-management/tag.schema.json @@ -7,9 +7,11 @@ ], "$schema": "http://json-schema.org/draft-06/schema#", "$id": "https://ns.adobe.com/experience/offer-management/tag", + "meta:abstract": false, + "meta:extensible": true, "type": "object", "title": "Tag", - "description": "Tag (label)", + "description": "A Tag is a keyword or term assigned to a piece of information. Tags in this domain are reusable, searchable and identifyable keywords, i.e. their identity gets attached to other objects not simply the string that is used for human consumption. Therefore the same tag could have multiple, human readable representations. Tags can also be classified or arranged in an order that converys additional semantics. This semantics is, however, not specified in this domain.", "definitions": { "tag": { "properties": { @@ -17,7 +19,7 @@ "type": "string", "format": "uri", "title": "ID", - "description": "The unique identifier of the tag" + "description": "The unique identifier of the Tag. This identifier is assigned by clients or services that use the repository and is not generated by the repository itself. This @id must be unquie within a repository container for objects that are not the same, otherwise it is interpreted as referring to the same object." }, "xdm:name": { "type": "object", @@ -28,7 +30,7 @@ } } }, - "required": ["xdm:name"] + "required": ["@id", "xdm:name"] } }, "allOf": [