All Downloads are FREE. Search and download functionalities are using the official Maven repository.

.commondatamodel.objectmodel.1.7.2.source-code.schema.1.5.0.cdm.json Maven / Gradle / Ivy

{
    "$id": "http://microsoft.com/cdm/schema.cdm.json",
    "$schema": "http://json-schema.org/draft-06/schema#",
    "$version": "1.5.0",
    "type": "object",
    "definitions": {
        "import": {
            "type": "object",
            "description": "Used to bring referenced entity definitions into scope of this document.",
            "properties": {
                "corpusPath": {
                    "type": "string",
                    "description": "The relative or absolute (from the root of the corpus folder hierarchy) location of a document file and object."
                },
                "uri": {
                    "type": "string",
                    "description": "Deprecated, replaced by corpusPath."
                },
                "moniker": {
                    "type": "string",
                    "description": "A prefix that can be added to disambiguate different imported objects that may share a name. References to object defined in this imported document (or in the documents it further imports) must start with the moniker name such as myMoniker/MyEntity."
                }
            },
            "additionalProperties": false,
            "oneOf": [
                {
                    "required": [
                        "corpusPath"
                    ]
                },
                {
                    "required": [
                        "uri"
                    ]
                }
            ]
        },
        "traitOrTraitGroupClassReference": {
            "oneOf": [
                {
                    "$ref": "#/definitions/traitClassReference"
                },
                {
                    "$ref": "#/definitions/traitGroupClassReference"
                }
            ]
        },
        "constant": {
            "oneOf": [
                {
                    "type": "string"
                },
                {
                    "$ref": "#/definitions/purposeClassReference"
                },
                {
                    "$ref": "#/definitions/traitOrTraitGroupClassReference"
                },
                {
                    "$ref": "#/definitions/dataTypeClassReference"
                },
                {
                    "$ref": "#/definitions/attributeGroupClassReference"
                },
                {
                    "$ref": "#/definitions/entityClassReference"
                },
                {
                    "$ref": "#/definitions/entityAttribute"
                },
                {
                    "$ref": "#/definitions/typeAttribute"
                }
            ]
        },
        "traitArgument": {
            "type": "object",
            "description": "",
            "properties": {
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the 'argument' within the context of this entity definition system."
                },
                "name": {
                    "type": "string"
                },
                "value": {
                    "$ref": "#/definitions/constant"
                }
            },
            "additionalProperties": false,
            "required": [
                "value"
            ]
        },
        "traitReference": {
            "oneOf": [
                {
                    "type": "string"
                },
                {
                    "$ref": "#/definitions/trait"
                }
            ]
        },
        "traitGroupReference": {
            "oneOf": [
                {
                    "type": "string"
                },
                {
                    "$ref": "#/definitions/traitGroup"
                }
            ]
        },
        "traitClassReference": {
            "type": "object",
            "description": "",
            "properties": {
                "traitReference": {
                    "$ref": "#/definitions/traitReference"
                },
                "arguments": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/traitArgument"
                            },
                            {
                                "$ref": "#/definitions/constant"
                            }
                        ]
                    }
                },
                "optional": {
                    "type": "boolean"
                },
                "appliedTraits": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/traitOrTraitGroupClassReference"
                            },
                            {
                                "type": "string"
                            }
                        ]
                    }
                },
                "verb": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/traitClassReference"
                        },
                        {
                            "type": "string"
                        }
                    ]
                }
            },
            "additionalProperties": false,
            "required": [
                "traitReference"
            ]
        },
        "traitGroupClassReference": {
            "type": "object",
            "description": "A reference to a Trait Group definition",
            "properties": {
                "traitGroupReference": {
                    "$ref": "#/definitions/traitGroupReference"
                },
                "optional": {
                    "type": "boolean"
                }
            },
            "additionalProperties": false,
            "required": [
                "traitGroupReference"
            ]
        },
        "purposeReference": {
            "oneOf": [
                {
                    "type": "string"
                },
                {
                    "$ref": "#/definitions/purpose"
                }
            ]
        },
        "purposeClassReference": {
            "type": "object",
            "description": "",
            "properties": {
                "purposeReference": {
                    "$ref": "#/definitions/purposeReference"
                },
                "appliedTraits": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/traitOrTraitGroupClassReference"
                            },
                            {
                                "type": "string"
                            }
                        ]
                    }
                },
                "optional": {
                    "type": "boolean"
                }
            },
            "additionalProperties": false,
            "required": [
                "purposeReference"
            ]
        },
        "dataTypeReference": {
            "oneOf": [
                {
                    "type": "string"
                },
                {
                    "$ref": "#/definitions/dataType"
                }
            ]
        },
        "dataTypeClassReference": {
            "type": "object",
            "description": "",
            "properties": {
                "dataTypeReference": {
                    "$ref": "#/definitions/dataTypeReference"
                },
                "appliedTraits": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/traitOrTraitGroupClassReference"
                            },
                            {
                                "type": "string"
                            }
                        ]
                    }
                },
                "optional": {
                    "type": "boolean"
                }
            },
            "additionalProperties": false,
            "required": [
                "dataTypeReference"
            ]
        },
        "attributeGroupReference": {
            "oneOf": [
                {
                    "type": "string"
                },
                {
                    "$ref": "#/definitions/attributeGroup"
                }
            ]
        },
        "attributeGroupClassReference": {
            "type": "object",
            "description": "",
            "properties": {
                "attributeGroupReference": {
                    "$ref": "#/definitions/attributeGroupReference"
                },                
                "appliedTraits": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/traitOrTraitGroupClassReference"
                            },
                            {
                                "type": "string"
                            }
                        ]
                    }
                },
                "optional": {
                    "type": "boolean"
                }
            },
            "additionalProperties": false,
            "required": [
                "attributeGroupReference"
            ]
        },
        "entityReference": {
            "oneOf": [
                {
                    "type": "string"
                },
                {
                    "$ref": "#/definitions/entity"
                },
                {
                    "$ref": "#/definitions/constantEntity"
                }
            ]
        },
        "entityClassReference": {
            "type": "object",
            "description": "",
            "properties": {
                "entityReference": {
                    "$ref": "#/definitions/entityReference"
                },
                "appliedTraits": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/traitOrTraitGroupClassReference"
                            },
                            {
                                "type": "string"
                            }
                        ]
                    }
                },
                "optional": {
                    "type": "boolean"
                }
            },
            "additionalProperties": false,
            "required": [
                "entityReference"
            ]
        },
        "purpose": {
            "type": "object",
            "description": "",
            "properties": {
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the 'purpose' within the context of this entity definition system."
                },
                "purposeName": {
                    "type": "string"
                },
                "extendsPurpose": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/purposeClassReference"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "exhibitsTraits": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/traitOrTraitGroupClassReference"
                            },
                            {
                                "type": "string"
                            }
                        ]
                    }
                }
            },
            "additionalProperties": false,
            "required": [
                "purposeName"
            ]
        },
        "dataType": {
            "type": "object",
            "description": "",
            "properties": {
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the 'dataType' within the context of this entity definition system."
                },
                "dataTypeName": {
                    "type": "string"
                },
                "extendsDataType": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/dataTypeClassReference"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "exhibitsTraits": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/traitOrTraitGroupClassReference"
                            },
                            {
                                "type": "string"
                            }
                        ]
                    }
                }
            },
            "additionalProperties": false,
            "required": [
                "dataTypeName"
            ]
        },
        "resolutionGuidance": {
            "type": "object",
            "description": "Parameters that describe how an attribute should be resolved.",
            "properties": {
                "removeAttribute": {
                    "type": "boolean",
                    "description": "If true, this attribute definition will be removed from the final resolved attribute list of an entity.",
                    "default": false
                },
                "imposedDirectives": {
                    "type": "array",
                    "description": "A list of strings, one for each 'directive' that should be always imposed at this attribute definition.",
                    "items": {
                        "type": "string"
                    }
                },
                "removedDirectives": {
                    "type": "array",
                    "description": "A list of strings, one for each 'directive' that should be removed if previously imposed.",
                    "items": {
                        "type": "string"
                    }
                },
                "addSupportingAttribute": {
                    "description": "The supplied attribute definition will be added to the Entity after this attribute definition with a trait indicating its supporting role on this.",
                    "oneOf": [
                        {
                            "$ref": "#/definitions/attributeGroupClassReference"
                        },
                        {
                            "$ref": "#/definitions/typeAttribute"
                        },
                        {
                            "$ref": "#/definitions/entityAttribute"
                        }
                    ]
                },
                "cardinality": {
                    "description": "If 'one' then there is a single instance of the attribute or entity used. 'many' indicates multiple instances and the 'expansion' properties will describe array enumeration to use when needed.",
                    "enum": [
                        "one",
                        "many"
                    ],
                    "default": "one"
                },
                "renameFormat": {
                    "type": "string",
                    "description": "Format specifier for generated attribute names. May contain a single occurrence of ('{a} or 'A'), ('{m}' or '{M}') and '{o}' for the base (a/A)ttribute name, any (m/M)ember attributes from entities and array (o)rdinal. examples: '{a}{o}.{m}' could produce 'address2.city', '{a}{o}' gives 'city1'. Using '{A}' or '{M}' will uppercase the first letter of the name portions.",
                    "default": "{a}{o}{M}"
                },
                "expansion": {
                    "type": "object",
                    "description": "Parameters that control array expansion if inline repeating of attributes is needed.",
                    "properties": {
                        "startingOrdinal": {
                            "type": "integer",
                            "default": 0
                        },
                        "maximumExpansion": {
                            "explanation": "The greatest number of time that the attribute pattern should be repeated.",
                            "type": "integer",
                            "default": 5
                        },
                        "countAttribute": {
                            "description": "The supplied attribute definition will be added to the Entity to represent the total number of instances found in the data.",
                            "oneOf": [
                                {
                                    "$ref": "#/definitions/entityAttribute"
                                },
                                {
                                    "$ref": "#/definitions/attributeGroupClassReference"
                                },
                                {
                                    "$ref": "#/definitions/typeAttribute"
                                }
                            ]
                        }
                    },
                    "additionalProperties": false,
                    "required": []
                },
                "entityByReference": {
                    "allowReference": true,
                    "type": "object",
                    "description": "Parameters that control the use of foreign keys to reference entity instances instead of imbedding the entity in a nested way.",
                    "properties": {
                        "allowReference": {
                            "type": "boolean",
                            "default": true,
                            "description": "If true, a foreign key attribute may be used in replace of the entity when needed or requested."
                        },
                        "alwaysIncludeForeignKey": {
                            "type": "boolean",
                            "default": false,
                            "description": "If true, a foreign key attribute will be added to the entity even when the entity attribute is imbedded in a nested way."
                        },
                        "referenceOnlyAfterDepth": {
                            "type": "integer",
                            "description": "After a given depth of non-reference nesting using entity attributes, the 'referenceOnly' directive will be imposed.",
                            "default": 2
                        },
                        "foreignKeyAttribute": {
                            "description": "The supplied attribute definition will be added to the Entity to hold a foreign key value for the referenced entity.",
                            "oneOf": [
                                {
                                    "$ref": "#/definitions/attributeGroupClassReference"
                                },
                                {
                                    "$ref": "#/definitions/typeAttribute"
                                },
                                {
                                    "$ref": "#/definitions/entityAttribute"
                                }
                            ]
                        }
                    },
                    "additionalProperties": false,
                    "required": []
                },
                "selectsSubAttribute": {
                    "type": "object",
                    "description": "Used to select either 'one' or 'all' of the attributes from an entity when it is being used as an attribute of another entity. If the 'structured' directive is set, this trait causes resolved attributes to end up in groups rather than a flattened list.",
                    "properties": {
                        "selects": {
                            "enum": [
                                "one",
                                "some",
                                "all"
                            ],
                            "default": "all"
                        },
                        "selectedTypeAttribute": {
                            "description": "The supplied attribute definition will be added to the Entity to hold a description of the single attribute that was selected from the sub-entity.",
                            "oneOf": [
                                {
                                    "$ref": "#/definitions/attributeGroupClassReference"
                                },
                                {
                                    "$ref": "#/definitions/typeAttribute"
                                },
                                {
                                    "$ref": "#/definitions/entityAttribute"
                                }
                            ]
                        },
                        "selectsSomeTakeNames": {
                            "type": "array",
                            "description": "When selects='some', an ordered list of strings, one for each attribute name to take from the source entity in the order desired.",
                            "items": {
                                "type": "string"
                            }
                        },
                        "selectsSomeAvoidNames": {
                            "type": "array",
                            "description": "When selects='some', a list of strings, one for each attribute name to not take from the source entity in the order desired.",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    "additionalProperties": false,
                    "required": []
                }
            },
            "additionalProperties": false,
            "required": []
        },
        "cardinalitySettings": {
            "type": "object",
            "description": "If '0' then the attribute is nullable, if '1' it is not nullable and '*' is multiple instances and will be used by the operationArrayExpansion.",
            "properties": {
                "minimum": {
                    "type": "string"
                },
                "maximum": {
                    "type": "string"
                }
            },
            "additionalProperties": false,
            "required": [
                "minimum",
                "maximum"
            ]
        },
        "typeAttribute": {
            "type": "object",
            "description": "",
            "properties": {
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the 'typed attribute' within the context of this entity definition system."
                },
                "purpose": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/purposeClassReference"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "projection": {
                    "type": "object",
                    "$ref": "#/definitions/projection"
                },
                "name": {
                    "type": "string"
                },
                "dataType": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/dataTypeClassReference"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "cardinality": {
                    "type": "object",
                    "$ref": "#/definitions/cardinalitySettings"
                },
                "appliedTraits": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/traitOrTraitGroupClassReference"
                            },
                            {
                                "type": "string"
                            }
                        ]
                    }
                },
                "resolutionGuidance": {
                    "type": "object",
                    "$ref": "#/definitions/resolutionGuidance"
                },
                "attributeContext": {
                    "type": "string"
                },
                "dataFormat": {
                    "type": "string"
                },
                "displayName": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "sourceName": {
                    "type": "string"
                },
                "sourceOrdering": {
                    "type": "number"
                },
                "isPrimaryKey": {
                    "type": "boolean"
                },
                "isReadOnly": {
                    "type": "boolean"
                },
                "isNullable": {
                    "type": "boolean"
                },
                "defaultValue": {
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "array",
                            "items": {
                                "type": "object"
                            }
                        },
                        {
                            "type": "object"
                        }
                    ]
                },
                "maximumValue": {
                    "type": "string"
                },
                "minimumValue": {
                    "type": "string"
                },
                "maximumLength": {
                    "type": "number"
                },
                "valueConstrainedToList": {
                    "type": "boolean"
                }
            },
            "additionalProperties": false,
            "required": [
                "name"
            ]
        },
        "entityAttribute": {
            "type": "object",
            "description": "",
            "properties": {
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the 'entity attribute' within the context of this entity definition system."
                },
                "name": {
                    "type": "string"
                },
                "purpose": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/purposeClassReference"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "cardinality": {
                    "type": "object",
                    "$ref": "#/definitions/cardinalitySettings"
                },
                "displayName": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "isPolymorphicSource": {
                    "type": "boolean",
                    "default": false,
                    "description": "If set to true, indicates to a projection that the source is a polymorphic source."
                },
                "resolutionGuidance": {
                    "type": "object",
                    "$ref": "#/definitions/resolutionGuidance"
                },
                "entity": {
                    "description": "The id of an entity, a structured entity reference or an array of either of those two.",
                    "oneOf": [
                        {
                            "$ref": "#/definitions/entityClassReference"
                        },
                        {
                            "type": "string"
                        },
                        {
                            "$ref": "#/definitions/projection"
                        }
                    ]
                },
                "appliedTraits": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/traitOrTraitGroupClassReference"
                            },
                            {
                                "type": "string"
                            }
                        ]
                    }
                }
            },
            "additionalProperties": false,
            "required": [
                "entity",
                "name"
            ]
        },
        "attributeGroup": {
            "type": "object",
            "description": "",
            "properties": {
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the 'attribute group' within the context of this entity definition system."
                },
                "attributeGroupName": {
                    "type": "string"
                },
                "members": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "$ref": "#/definitions/attributeGroupClassReference"
                            },
                            {
                                "$ref": "#/definitions/typeAttribute"
                            },
                            {
                                "$ref": "#/definitions/entityAttribute"
                            }
                        ]
                    }
                },
                "exhibitsTraits": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/traitOrTraitGroupClassReference"
                            },
                            {
                                "type": "string"
                            }
                        ]
                    }
                }
            },
            "additionalProperties": false,
            "required": [
                "attributeGroupName",
                "members"
            ]
        },
        "traitParameter": {
            "type": "object",
            "description": "",
            "properties": {
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the 'trait parameter' within the context of this entity definition system."
                },
                "name": {
                    "type": "string"
                },
                "defaultValue": {
                    "$ref": "#/definitions/constant"
                },
                "required": {
                    "type": "boolean",
                    "default": false
                },
                "dataType": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/dataTypeClassReference"
                        },
                        {
                            "type": "string"
                        }
                    ],
                    "default": "string"
                },
                "direction": {
                    "enum": [
                        "in",
                        "out",
                        "both"
                    ],
                    "default": "in"
                }
            },
            "additionalProperties": false,
            "required": [
                "name"
            ]
        },
        "trait": {
            "type": "object",
            "description": "",
            "properties": {
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the 'trait' within the context of this entity definition system."
                },
                "traitName": {
                    "type": "string"
                },
                "extendsTrait": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/traitClassReference"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "hasParameters": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/traitParameter"
                            },
                            {
                                "type": "string"
                            }
                        ]
                    }
                },
                "elevated": {
                    "type": "boolean",
                    "description": "Elevated traits that are applied to attributes will be inherited by the containing entity."
                },
                "modifiesAttributes": {
                    "type": "boolean",
                    "description": "If true, the trait might add, change or remove attributes from an entity."
                },
                "ugly": {
                    "type": "boolean",
                    "description": "Ugly traits are usually internal or structural and shouldn't be shown in UI."
                },
                "associatedProperties": {
                    "type": "array",
                    "description": "The list of Entity or Attribute properties that this trait informs and reflects.",
                    "items": {
                        "type": "string"
                    }
                },
                "defaultVerb": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/traitClassReference"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },

                "exhibitsTraits": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/traitOrTraitGroupClassReference"
                            },
                            {
                                "type": "string"
                            }
                        ]
                    }
                }
            },
            "additionalProperties": false,
            "required": [
                "traitName"
            ]
        },
        "traitGroup": {
            "type": "object",
            "description": "A Trait group represents a collection (grouping) of one or more traits.",
            "properties": {
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the 'trait group' within the context of this entity definition system."
                },
                "traitGroupName": {
                    "type": "string"
                },
                "exhibitsTraits": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/traitOrTraitGroupClassReference"
                            },
                            {
                                "type": "string"
                            }
                        ]
                    }
                }
            },
            "additionalProperties": false,
            "required": [
                "traitGroupName"
            ]
        },
        "attributeContext": {
            "type": "object",
            "description": "A container representing shared lineage, ownership and context in a hierarchy describing the relationships among an entities attributes.",
            "properties": {
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the 'entity' within the context of this entity definition system."
                },
                "type": {
                    "enum": [
                        "entity",
                        "extendedEntity",
                        "attributeGroup",
                        "entityAsAttribute"
                    ]
                },
                "name": {
                    "type": "string"
                },
                "parent": {
                    "type": "string"
                },
                "definition": {
                    "type": "string"
                },
                "appliedTraits": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/traitOrTraitGroupClassReference"
                            },
                            {
                                "type": "string"
                            }
                        ]
                    }
                },
                "contents": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/attributeContext"
                            },
                            {
                                "type": "string"
                            }
                        ]
                    }
                },
                "lineage": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "additionalProperties": false,
            "required": [
                "type",
                "name"
            ]
        },
        "entity": {
            "type": "object",
            "description": "",
            "properties": {
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the 'entity' within the context of this entity definition system."
                },
                "entityName": {
                    "type": "string"
                },
                "extendsEntity": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/entityClassReference"
                        },
                        {
                            "type": "string"
                        },
                        {
                            "$ref": "#/definitions/projection"
                        }
                    ]
                },
                "extendsEntityResolutionGuidance": {
                    "type": "object",
                    "$ref": "#/definitions/resolutionGuidance"
                },
                "exhibitsTraits": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/traitOrTraitGroupClassReference"
                            },
                            {
                                "type": "string"
                            }
                        ]
                    }
                },
                "attributeContext": {
                    "$ref": "#/definitions/attributeContext"
                },
                "hasAttributes": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/typeAttribute"
                            },
                            {
                                "$ref": "#/definitions/entityAttribute"
                            },
                            {
                                "$ref": "#/definitions/attributeGroupClassReference"
                            },
                            {
                                "type": "string"
                            }
                        ]
                    }
                },
                "version": {
                    "type": "string"
                },
                "sourceName": {
                    "type": "string"
                },
                "displayName": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "cdmSchemas": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "additionalProperties": false,
            "required": [
                "entityName"
            ]
        },
        "constantEntity": {
            "type": "object",
            "description": "Used to structure and describe a set of related constant values that may be used as trait arguments.",
            "properties": {
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the 'entity' within the context of this entity definition system."
                },
                "constantEntityName": {
                    "type": "string"
                },
                "entityShape": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/entityClassReference"
                        },
                        {
                            "type": "string"
                        }
                    ]
                },
                "constantValues": {
                    "type": "array",
                    "items": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                }
            },
            "additionalProperties": false,
            "required": [
                "entityShape",
                "constantValues"
            ]
        },
        "operationAddAttributeGroup": {
            "type": "object",
            "description": "An operation to create attribute groups.",
            "properties": {
                "$type": {
                    "type": "string",
                    "description": "An operation to help add an attribute group in a projection."
                },
                "condition": {
                    "type": "string",
                    "description": "A string condition expression where projection should evaluate."
                },
                "sourceInput": {
                    "type": "boolean",
                    "description": "Property of an operation that defines if the operation receives the input from previous operation or from source entity."
                },
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the operation."
                },
                "attributeGroupName": {
                    "type": "string",
                    "description": "The name used to create the attribute group."
                }
            },
            "additionalProperties": false,
            "required": [
                "$type",
                "attributeGroupName"
            ]
        },
        "operationAddCountAttribute": {
            "type": "object",
            "description": "",
            "properties": {
                "$type": {
                    "type": "string",
                    "description": "An operation to help add a count attribute specifically targeted for array expansions."
                },
                "condition": {
                    "type": "string",
                    "description": "A string condition expression where projection should evaluate."
                },
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the operation."
                },
                "sourceInput": {
                    "type": "boolean",
                    "description": "Property of an operation that defines if the operation receives the input from previous operation or from source entity."
                },
                "countAttribute": {
                    "$ref": "#/definitions/typeAttribute"
                }
            },
            "additionalProperties": false,
            "required": [
                "$type",
                "countAttribute"
            ]
        },
        "operationAddSupportingAttribute": {
            "type": "object",
            "description": "",
            "properties": {
                "$type": {
                    "type": "string",
                    "description": "An operation to help add a supporting attribute to another attribute."
                },
                "condition": {
                    "type": "string",
                    "description": "A string condition expression where projection should evaluate."
                },
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the operation."
                },
                "sourceInput": {
                    "type": "boolean",
                    "description": "Property of an operation that defines if the operation receives the input from previous operation or from source entity."
                },
                "supportingAttribute": {
                    "$ref": "#/definitions/typeAttribute"
                }
            },
            "additionalProperties": false,
            "required": [
                "$type",
                "supportingAttribute"
            ]
        },
        "operationAddTypeAttribute": {
            "type": "object",
            "description": "",
            "properties": {
                "$type": {
                    "type": "string",
                    "description": "An operation to help add a type attribute specifically targeted for polymorphic combination of attributes."
                },
                "condition": {
                    "type": "string",
                    "description": "A string condition expression where projection should evaluate."
                },
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the operation."
                },
                "sourceInput": {
                    "type": "boolean",
                    "description": "Property of an operation that defines if the operation receives the input from previous operation or from source entity."
                },
                "typeAttribute": {
                    "$ref": "#/definitions/typeAttribute"
                }
            },
            "additionalProperties": false,
            "required": [
                "$type",
                "typeAttribute"
            ]
        },
        "operationExcludeAttributes": {
            "type": "object",
            "description": "",
            "properties": {
                "$type": {
                    "type": "string",
                    "description": "An operation to help exclude some attributes in the selection process."
                },
                "condition": {
                    "type": "string",
                    "description": "A string condition expression where projection should evaluate."
                },
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the operation."
                },
                "sourceInput": {
                    "type": "boolean",
                    "description": "Property of an operation that defines if the operation receives the input from previous operation or from source entity."
                },
                "excludeAttributes": {
                    "type": "array",
                    "description": "A list of attributes to avoid.",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "additionalProperties": false,
            "required": [
                "$type",
                "excludeAttributes"
            ]
        },
        "operationArrayExpansion": {
            "type": "object",
            "description": "",
            "properties": {
                "$type": {
                    "type": "string",
                    "description": "An operation to help expand an array of attributes."
                },
                "condition": {
                    "type": "string",
                    "description": "A string condition expression where projection should evaluate."
                },
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the operation."
                },
                "sourceInput": {
                    "type": "boolean",
                    "description": "Property of an operation that defines if the operation receives the input from previous operation or from source entity."
                },
                "startOrdinal": {
                    "type": "integer",
                    "description": "Smaller ordinal.",
                    "default": 1
                },
                "endOrdinal": {
                    "type": "integer",
                    "description": "Larger ordinal.",
                    "default": 3
                }
            },
            "additionalProperties": false,
            "required": [
                "$type",
                "startOrdinal",
                "endOrdinal"
            ]
        },
        "operationCombineAttributes": {
            "type": "object",
            "description": "",
            "properties": {
                "$type": {
                    "type": "string",
                    "description": "An operation to combine multiple attributes into one."
                },
                "condition": {
                    "type": "string",
                    "description": "A string condition expression where projection should evaluate."
                },
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the operation."
                },
                "sourceInput": {
                    "type": "boolean",
                    "description": "Property of an operation that defines if the operation receives the input from previous operation or from source entity."
                },
                "select": {
                    "type": "array",
                    "description": "A list of attribute names to be replaced with the mergeInto attribute.",
                    "items": {
                        "type": "string"
                    }
                },
                "mergeInto": {
                    "$ref": "#/definitions/typeAttribute"
                }
            },
            "additionalProperties": false,
            "required": [
                "$type",
                "select",
                "mergeInto"
            ]
        },
        "operationRenameAttributes": {
            "type": "object",
            "description": "",
            "properties": {
                "$type": {
                    "type": "string",
                    "description": "An operation to help rename an attribute."
                },
                "condition": {
                    "type": "string",
                    "description": "A string condition expression where projection should evaluate."
                },
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the operation."
                },
                "sourceInput": {
                    "type": "boolean",
                    "description": "Property of an operation that defines if the operation receives the input from previous operation or from source entity."
                },
                "renameFormat": {
                    "type": "string",
                    "description": "Format specifier for generated attribute names. May contain a single occurrence of ('{a} or 'A'), ('{m}' or '{M}'), ('{mo}' or '{Mo}'), and '{o}' for the (a/A)ttribute name of the projection owner, the resolved name of any (m/M)ember attribute from entities, the original name of any member attribute from entities, and array (o)rdinal. examples: '{a}{o}.{m}' could produce 'address2.city', '{a}{o}' gives 'city1'. Using '{A}', '{Mo}' or '{M}' will uppercase the first letter of the name portions.",
                    "default": "{a}{o}{M}"
                },
                "applyTo": {
                    "description": "A list of attributes from the input attributes set that will renamed following the patterns specified on RenameFormat.If not specified, renames all the attributes.",
                    "oneOf": [
                        {
                            "type": "string",
                            "description": "A single attribute to apply the rename on. This is an optional."
                        },
                        {
                            "type": "array",
                            "description": "The attribute set to apply the rename on. This is an optional.",
                            "items": {
                                "type": "string"
                            }
                        }
                    ]
                }
            },
            "additionalProperties": false,
            "required": [
                "$type",
                "renameFormat"
            ]
        },
        "operationReplaceAsForeignKey": {
            "type": "object",
            "description": "",
            "properties": {
                "$type": {
                    "type": "string",
                    "description": "An operation to help create a foreign key based on the referenced key."
                },
                "condition": {
                    "type": "string",
                    "description": "A string condition expression where projection should evaluate."
                },
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the operation."
                },
                "sourceInput": {
                    "type": "boolean",
                    "description": "Property of an operation that defines if the operation receives the input from previous operation or from source entity."
                },
                "reference": {
                    "type": "string",
                    "description": "An attribute name from the referenced entity."
                },
                "replaceWith": {
                    "$ref": "#/definitions/typeAttribute"
                }
            },
            "additionalProperties": false,
            "required": [
                "$type",
                "reference",
                "replaceWith"
            ]
        },
        "operationIncludeAttributes": {
            "type": "object",
            "description": "",
            "properties": {
                "$type": {
                    "type": "string",
                    "description": "An operation to help select a set of attributes from the source."
                },
                "condition": {
                    "type": "string",
                    "description": "A string condition expression where projection should evaluate."
                },
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the operation."
                },
                "sourceInput": {
                    "type": "boolean",
                    "description": "Property of an operation that defines if the operation receives the input from previous operation or from source entity."
                },
                "includeAttributes": {
                    "type": "array",
                    "description": "A list of attributes to take.",
                    "items": {
                        "type": "string"
                    }
                }
            },
            "additionalProperties": false,
            "required": [
                "$type",
                "includeAttributes"
            ]
        },
         "operationAlterTraits": {
            "type": "object",
            "description": "",
            "properties": {
                "$type": {
                    "type": "string",
                    "description": "An operation to help alter traits in attributes from the source."
                },
                "condition": {
                    "type": "string",
                    "description": "A string condition expression where projection should evaluate."
                },
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the operation."
                },
                "sourceInput": {
                    "type": "boolean",
                    "description": "Property of an operation that defines if the operation receives the input from previous operation or from source entity."
                },
                "traitsToAdd": {
                    "description": "A list of traits or trait groups that will be applied on the input",
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/traitOrTraitGroupClassReference"
                            },
                            {
                                "type": "string"
                            }
                        ]
                    }
                },
                "traitsToRemove": {
                    "description": "A list of traits or trait groups that will be removed (if found) on the input.",
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/traitOrTraitGroupClassReference"
                            },
                            {
                                "type": "string"
                            }
                        ]
                    }
                },
                "argumentsContainWildcards": {
                    "type": "boolean",
                    "description": "If true, checks all arguments from all traits and performs replacement. May contain a single occurrence of ('{a} or 'A'), ('{m}' or '{M}'), ('{mo}' or '{Mo}'), and '{o}' for the (a/A)ttribute name of the projection owner, the resolved name of any (m/M)ember attribute from entities, the original name of any member attribute from entities, and array (o)rdinal. examples: '{a}{o}.{m}' could produce 'address2.city', '{a}{o}' gives 'city1'. Using '{A}', '{Mo}' or '{M}' will uppercase the first letter of the name portions."
                },
                "applyTo": {
                    "description": "A list of attributes from the input attributes set to which traits defined in traitsToAdd property will be added (or arguments updated) and/or removed as indicated in traitsToRemove property. If not specified, traits in all attributes from the source will be targeted.",
                    "oneOf": [
                        {
                            "type": "string",
                            "description": "A single attribute to apply the trait changes on. This is an optional."
                        },
                        {
                            "type": "array",
                            "description": "The attribute set to apply the trait changes on. This is an optional.",
                            "items": {
                                "type": "string"
                            }
                        }
                    ]
                },
                "applyToTraits": {
                    "description": "A list of trait names to find on the input attribute set to which traits defined in traitsToAdd property will be added (or arguments updated) and/or removed as indicated in traitsToRemove property. If specified, traits are modified on these traits and NOT modified on the source attributes. names can be trait names, extended names or 'classifiedAs' names",
                    "oneOf": [
                        {
                            "type": "string",
                            "description": "A single trait to apply the trait changes on. This is an optional."
                        },
                        {
                            "type": "array",
                            "description": "The trait set to apply the trait changes on. This is an optional.",
                            "items": {
                                "type": "string"
                            }
                        }
                    ]
                }

            },
            "additionalProperties": false,
            "oneOf": [
                {
                    "required": [
                        "$type",
                        "traitsToAdd"
                    ]
                },
                {
                    "required": [
                        "$type",
                        "traitsToRemove"
                    ]
                }
            ]
        },
        "operationAddArtifactAttribute": {
            "type": "object",
            "description": "",
            "properties": {
                "$type": {
                    "type": "string",
                    "description": "An operation to help add an artifact attribute to the input attribute list."
                },
                "condition": {
                    "type": "string",
                    "description": "A string condition expression where projection should evaluate."
                },
                "explanation": {
                    "type": "string",
                    "description": "Used to document the usage or meaning of the operation."
                },
                "sourceInput": {
                    "type": "boolean",
                    "description": "Property of an operation that defines if the operation receives the input from previous operation or from source entity."
                },
                "newAttribute": {
                    "description": "The new attribute that will be added to the input attributes list.",
                    "oneOf": [
                        {
                            "type": "string"
                        },
                        {
                            "$ref": "#/definitions/typeAttribute"
                        }
                    ]
                },
                "insertAtTop": {
                    "type": "boolean",
                    "description": "If true, the new attribute will be added at the top of the input attribute list. Otherwise, it is added at the bottom of the input attribute list."
                }
            },
            "additionalProperties": false,
            "required": [
                "$type",
                "newAttribute"
            ]
        },
        "projection": {
            "type": "object",
            "description": "Blocks of operation that get evaluated based on a source and conditions.",
            "properties": {
                "condition": {
                    "description": "A string condition expression where projection should evaluate.",
                    "type": "string"
                },
                "operations": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/operationAddAttributeGroup"
                        },
                        {
                            "$ref": "#/definitions/operationIncludeAttributes"
                        },
                        {
                            "$ref": "#/definitions/operationExcludeAttributes"
                        },
                        {
                            "$ref": "#/definitions/operationRenameAttributes"
                        },
                        {
                            "$ref": "#/definitions/operationArrayExpansion"
                        },
                        {
                            "$ref": "#/definitions/operationAddCountAttribute"
                        },
                        {
                            "$ref": "#/definitions/operationReplaceAsForeignKey"
                        },
                        {
                            "$ref": "#/definitions/operationAddSupportingAttribute"
                        },
                        {
                            "$ref": "#/definitions/operationCombineAttributes"
                        },
                        {
                            "$ref": "#/definitions/operationAddTypeAttribute"
                        },
                        {
                            "$ref": "#/definitions/operationAddArtifactAttribute"
                        },
                        {
                            "$ref": "#/definitions/operationAlterTraits"
                        },
                        {
                            "type": "array",
                            "items": {
                                "oneOf": [
                                    {
                                        "$ref": "#/definitions/operationAddAttributeGroup"
                                    },
                                    {
                                        "$ref": "#/definitions/operationIncludeAttributes"
                                    },
                                    {
                                        "$ref": "#/definitions/operationExcludeAttributes"
                                    },
                                    {
                                        "$ref": "#/definitions/operationRenameAttributes"
                                    },
                                    {
                                        "$ref": "#/definitions/operationArrayExpansion"
                                    },
                                    {
                                        "$ref": "#/definitions/operationAddCountAttribute"
                                    },
                                    {
                                        "$ref": "#/definitions/operationReplaceAsForeignKey"
                                    },
                                    {
                                        "$ref": "#/definitions/operationAddSupportingAttribute"
                                    },
                                    {
                                        "$ref": "#/definitions/operationCombineAttributes"
                                    },
                                    {
                                        "$ref": "#/definitions/operationAddTypeAttribute"
                                    },
                                    {
                                        "$ref": "#/definitions/operationAddArtifactAttribute"
                                    },
                                    {
                                        "$ref": "#/definitions/operationAlterTraits"
                                    }
                                ]
                            }
                        }
                    ]
                },
                "runSequentially": {
                    "type": "boolean",
                    "description": "If true, runs the operations sequentially so each operation receives the result of the previous one."
                },
                "source": {
                    "oneOf": [
                        {
                            "$ref": "#/definitions/entityClassReference"
                        },
                        {
                            "type": "string"
                        },
                        {
                            "$ref": "#/definitions/projection"
                        }
                    ]
                }
            },
            "additionalProperties": false
        }
    },
    "properties": {
        "$schema": {
            "type": "string",
            "examples": [
                "../schema.cdm.json"
            ]
        },
        "jsonSchemaSemanticVersion": {
            "type": "string",
            "description": "The semantic version (major.minor.patch) number of the $schema document dictating the shape of the json document describing the entity shapes.",
            "examples": [
                "0.3.0"
            ]
        },
        "documentVersion": {
            "type": "string",
            "description": "The version of the document. Should be the same as the version of the file or the latest version if the file is not versioned.",
            "examples": [
                "0.0.1"
            ]
        },
        "imports": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/import"
            }
        },
        "definitions": {
            "type": "array",
            "items": {
                "oneOf": [
                    {
                        "$ref": "#/definitions/purpose"
                    },
                    {
                        "$ref": "#/definitions/trait"
                    },
                    {
                        "$ref": "#/definitions/traitGroup"
                    },
                    {
                        "$ref": "#/definitions/dataType"
                    },
                    {
                        "$ref": "#/definitions/attributeGroup"
                    },
                    {
                        "$ref": "#/definitions/entity"
                    },
                    {
                        "$ref": "#/definitions/constantEntity"
                    }
                ]
            }
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy