The following is the schema for breeze metadata described as a json.schema document ( see http://json-schema.org ).
Immediately after the schema definition is a simple example of a valid json object built according to this schema that describes a small object model. Standalone file versions of each of these can also be found inside the breeze samples zip in the “Metadata” directory.
{
"title": "Breeze Metadata Schema",
"type": "object",
"properties": {
"structuralTypes": {
"description": "Array of entity type/complex type names to their metadata definitions. The key is a structural type name and the value is either an entityType or a complexType",
"type": "array",
"items": {
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/entityType" },
{ "$ref": "#/definitions/complexType" }
]
}
},
"resourceEntityTypeMap": {
"description": "Map of resource names to entity type names.",
"type": "object",
"additionalProperties": {
"description": "Fully qualified Entity type names.",
"$ref": "#/definitions/structuralTypeName"
}
},
"metadataVersion": {
"description": "The serialization version for this document",
"type": "string"
},
"namingConvention": {
"description": "On deserialization, this must match the name of some 'namingConvention' already registered on the breeze client.",
"type": "string"
},
"localQueryComparisonOptions": {
"description": "On deserialization, this must match the name of some 'localQueryComparisonOptions' already registered on the breeze client.",
"type": "string"
},
"dataServices": {
"type": "array",
"items": { "$ref": "#/definitions/dataService" }
}
},
"required": ["structuralTypes"],
"additionalProperties": true,
"definitions": {
"structuralTypeName": {
"description": "A fully qualified entity/complex type name - constructed as 'shortName' + ':#' + 'namespace'",
"type": "string",
"pattern": "\\S+:#\\S*"
},
"entityType": {
"properties": {
"shortName": {
"description": "Together the shortName and the namespace make up a fully qualified name. Within this metadata references to an entityType are all qualified references. See the 'structuralTypeName' definition.instanceof in this document.",
"type": "string"
},
"namespace": {
"type": "string",
"default": ""
},
"autoGeneratedKeyType": {
"description": "Defines the mechanism by which the key for entities of this type are determined on the server. 'None' means that the client sets the key.",
"enum": ["Identity", "None", "KeyGenerator"],
"default": "None"
},
"defaultResourceName": {
"description": "The default name by which entities of this type will be queried. Multipe 'resourceNames' may query for the same entityType, (see the 'resourceEntityTypeMap') but only one is the default.",
"type": "string"
},
"dataProperties": {
"type": "array",
"items": { "$ref": "#/definitions/dataProperty" },
"uniqueItems": true
},
"navigationProperties": {
"type": "array",
"items": { "$ref": "#/definitions/navigationProperty" },
"uniqueItems": true
}
},
"required": ["shortName", "autoGeneratedKeyType", "dataProperties"]
},
"complexType": {
"properties": {
"shortName": {
"description": "Together the shortName and the namespace make up a fully qualified name. Within this metadata references to an entityType are all qualified references. See the 'structuralTypeName' definition.instanceof in this document.",
"type": "string"
},
"namespace": {
"type": "string",
"default": ""
},
"isComplexType": {
"description": "This must be 'true'. This field is what distinguishes an entityType from a complexType. ",
"type": "boolean"
},
"dataProperties": {
"type": "array",
"items": { "$ref": "#/definitions/dataProperty" },
"uniqueItems": true
}
},
"required": ["shortName", "dataProperties", "isComplexType"]
},
"dataProperty": {
"description": "A single data property, at a minimum you must to define either a 'name' or a 'nameOnServer' and either a 'dataType' or a 'complexTypeName'.",
"properties": {
"name": {
"description": "The client side name of this property.",
"type": "string"
},
"nameOnServer": {
"description": "The server side side name of this property. Either name or nameOnServer must be specified and either is sufficient.",
"type": "string"
},
"dataType": {
"description": "If present, the complexType name should be omitted.",
"enum": ["String", "Int16", "Int32", "Int64", "Single", "Double", "Decimal", "DateTime", "DateTimeOffset", "Time", "Boolean", "Guid", "Byte", "Binary", "Undefined"],
"default": "String"
},
"complexTypeName": {
"description": "If present, this must be the fully qualified name of one of the 'complexTypes' defined within this document, and the 'dataType' property may be omitted",
"$ref": "#/definitions/structuralTypeName"
},
"isNullable": {
"description": "Whether a null can be assigned to this property.",
"type": "boolean",
"default": true
},
"defaultValue": {
"description": "The default value for this property if nothing is assigned to it.",
"type": ["string", "number", "boolean", "null"]
},
"isPartOfKey": {
"description": "Whether this property is part of the key for this entity type",
"type": "boolean",
"default": false
},
"concurrencyMode": {
"description": "This determines whether this property is used for concurreny purposes.",
"enum": ["Fixed", "None"],
"default": "None"
},
"maxLength": {
"description": "Only applicable to 'String' properties. This is the maximum string length allowed.",
"type": "number"
},
"validators": {
"description": "A list of the validators (validations) that will be associated with this property",
"type": "array",
"items": { "$ref": "#/definitions/validator" },
"uniqueItems": true
}
}
},
"navigationProperty": {
"description": "A single navigation property, at a minimum you must to define the 'required' properties defined below AS WELL AS either a 'name' or a 'nameOnServer'..",
"properties": {
"name": {
"description": "The client side name of this property.",
"type": "string"
},
"nameOnServer": {
"description": "The server side side name of this property. Either name or nameOnServer must be specified and either is sufficient.",
"type": "string"
},
"entityTypeName": {
"description": "The type of the entity or collection of entities returned by this property.",
"$ref": "#/definitions/structuralTypeName"
},
"isScalar": {
"description": "Whether this property returns a single entity (true) or an array of entities (false).",
"type": "boolean"
},
"associationName": {
"description": "An arbitrary name that is used to link this navigation property to its inverse property. For bidirectional navigations this name will occur twice within this document, otherwise only once.",
"type": "string"
},
"foreignKeyNames": {
"description": "An array of the names of the properties on this type that are the foreign key 'backing' for this navigation property. This may only be set if 'isScalar' is true.",
"type": "array",
"items": { "type": "string"}
},
"foreignKeyNamesOnServer": {
"description": "Same as above, but the names here are server side names as opposed to client side. Only one or the other is needed.",
"type": "array",
"items": { "type": "string" }
},
"validators": {
"description": "A list of the validators (validations) that will be associated with this property",
"type": "array",
"items": { "$ref": "#/definitions/validator" },
"uniqueItems": true
}
},
"required": ["entityTypeName", "isScalar", "associationName"]
},
"dataService": {
"properties": {
"serviceName": {
"type": "string"
},
"adapterName": {
"description": "On deserialization, this must match the name of some 'dataService adapter' already registered on the breeze client.",
"type": "string"
},
"hasServerMetadata": {
"type": "boolean",
"default": true
},
"jsonResultsAdapter": {
"description": "On deserialization, this must match the name of some jsonResultsAdapter registered on the breeze client.",
"type": "string"
}
},
"required": ["serviceName"]
},
"validator": {
"properties": {
"name": {
"description": "On deserialization, this must match the name of some validator already registered on the breeze client.",
"type": "string"
}
},
"additionalProperties": true,
"required": ["name"]
}
}
}
{
"metadataVersion": "1.0.5",
"namingConvention": "camelCase2",
"localQueryComparisonOptions": "caseInsensitiveSQL",
"dataServices": [
{
"serviceName": "breeze/NorthwindIBModel/",
"hasServerMetadata": true,
"jsonResultsAdapter": "webApi_default",
"useJsonp": false
}
],
"structuralTypes": [
{
"shortName": "Location",
"namespace": "Foo",
"isComplexType": true,
"dataProperties": [
{
"name": "address",
"dataType": "String",
"maxLength": 60,
"validators": [
{
"maxLength": 60,
"name": "maxLength"
}
]
},
{
"name": "city",
"dataType": "String",
"maxLength": 15,
"validators": [
{
"maxLength": 15,
"name": "maxLength"
}
]
},
{
"name": "region",
"dataType": "String",
"maxLength": 15,
"validators": [
{
"maxLength": 15,
"name": "maxLength"
}
]
},
{
"name": "postalCode",
"dataType": "String",
"maxLength": 10,
"validators": [
{
"maxLength": 10,
"name": "maxLength"
}
]
},
{
"name": "country",
"dataType": "String",
"maxLength": 15,
"validators": [
{
"maxLength": 15,
"name": "maxLength"
}
]
}
]
},
{
"shortName": "Category",
"namespace": "Foo",
"autoGeneratedKeyType": "Identity",
"defaultResourceName": "Categories",
"dataProperties": [
{
"name": "categoryID",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"isPartOfKey": true,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "categoryName",
"dataType": "String",
"validators": [
{
"name": "string"
}
]
},
{
"name": "description",
"dataType": "String",
"validators": [
{
"name": "string"
}
]
},
{
"name": "picture",
"dataType": "Binary",
"validators": [
{
"name": "none"
}
]
},
{
"name": "rowVersion",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
}
],
"navigationProperties": [
{
"name": "products",
"entityTypeName": "Product:#Foo",
"isScalar": false,
"associationName": "Category_Products",
"invForeignKeyNames": [
"categoryID"
]
}
]
},
{
"shortName": "Product",
"namespace": "Foo",
"autoGeneratedKeyType": "Identity",
"defaultResourceName": "Products",
"dataProperties": [
{
"name": "productID",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"isPartOfKey": true,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "productName",
"dataType": "String",
"maxLength": 40,
"validators": [
{
"maxLength": 40,
"name": "maxLength"
}
]
},
{
"name": "supplierID",
"dataType": "Int32",
"validators": [
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "categoryID",
"dataType": "Int32",
"validators": [
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "quantityPerUnit",
"dataType": "String",
"validators": [
{
"name": "string"
}
]
},
{
"name": "unitPrice",
"dataType": "Decimal",
"validators": [
{
"name": "number"
}
]
},
{
"name": "unitsInStock",
"dataType": "Int16",
"validators": [
{
"min": -32768,
"max": 32767,
"name": "int16"
}
]
},
{
"name": "unitsOnOrder",
"dataType": "Int16",
"validators": [
{
"min": -32768,
"max": 32767,
"name": "int16"
}
]
},
{
"name": "reorderLevel",
"dataType": "Int16",
"validators": [
{
"min": -32768,
"max": 32767,
"name": "int16"
}
]
},
{
"name": "isDiscontinued",
"dataType": "Boolean",
"isNullable": false,
"defaultValue": false,
"validators": [
{
"name": "required"
},
{
"name": "bool"
}
]
},
{
"name": "discontinuedDate",
"dataType": "DateTime",
"validators": [
{
"name": "date"
}
]
},
{
"name": "rowVersion",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
}
],
"navigationProperties": [
{
"name": "category",
"entityTypeName": "Category:#Foo",
"isScalar": true,
"associationName": "Category_Products",
"foreignKeyNames": [
"categoryID"
]
},
{
"name": "supplier",
"entityTypeName": "Supplier:#Foo",
"isScalar": true,
"associationName": "Product_Supplier",
"foreignKeyNames": [
"supplierID"
]
}
]
},
{
"shortName": "Supplier",
"namespace": "Foo",
"autoGeneratedKeyType": "Identity",
"defaultResourceName": "Suppliers",
"dataProperties": [
{
"name": "supplierID",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"isPartOfKey": true,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "companyName",
"dataType": "String",
"isNullable": false,
"defaultValue": "",
"maxLength": 40,
"validators": [
{
"name": "required"
},
{
"maxLength": 40,
"name": "maxLength"
}
]
},
{
"name": "contactName",
"dataType": "String",
"maxLength": 30,
"validators": [
{
"maxLength": 30,
"name": "maxLength"
}
]
},
{
"name": "contactTitle",
"dataType": "String",
"maxLength": 30,
"validators": [
{
"maxLength": 30,
"name": "maxLength"
}
]
},
{
"name": "location",
"complexTypeName": "Location:#Foo",
"isNullable": false,
"validators": [
{
"name": "required"
}
]
},
{
"name": "phone",
"dataType": "String",
"maxLength": 24,
"validators": [
{
"maxLength": 24,
"name": "maxLength"
}
]
},
{
"name": "fax",
"dataType": "String",
"maxLength": 24,
"validators": [
{
"maxLength": 24,
"name": "maxLength"
}
]
},
{
"name": "homePage",
"dataType": "String",
"validators": [
{
"name": "string"
}
]
},
{
"name": "rowVersion",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
}
],
"navigationProperties": [
{
"name": "products",
"entityTypeName": "Product:#Foo",
"isScalar": false,
"associationName": "Product_Supplier",
"invForeignKeyNames": [
"supplierID"
]
}
]
},
{
"shortName": "Comment",
"namespace": "Foo",
"autoGeneratedKeyType": "None",
"defaultResourceName": "Comments",
"dataProperties": [
{
"name": "createdOn",
"dataType": "DateTime",
"isNullable": false,
"defaultValue": "1900-01-01T08:00:00.000Z",
"isPartOfKey": true,
"validators": [
{
"name": "required"
},
{
"name": "date"
}
]
},
{
"name": "seqNum",
"dataType": "Byte",
"isNullable": false,
"defaultValue": 0,
"isPartOfKey": true,
"validators": [
{
"name": "required"
},
{
"min": 0,
"max": 255,
"name": "byte"
}
]
},
{
"name": "comment1",
"dataType": "String",
"validators": [
{
"name": "string"
}
]
}
]
},
{
"shortName": "Customer",
"namespace": "Foo",
"autoGeneratedKeyType": "Identity",
"defaultResourceName": "Customers",
"dataProperties": [
{
"name": "customerID",
"dataType": "Guid",
"isNullable": false,
"defaultValue": "00000000-0000-0000-0000-000000000000",
"isPartOfKey": true,
"validators": [
{
"name": "required"
},
{
"name": "guid"
}
]
},
{
"name": "customerID_OLD",
"dataType": "String",
"maxLength": 5,
"validators": [
{
"maxLength": 5,
"name": "maxLength"
}
]
},
{
"name": "companyName",
"dataType": "String",
"isNullable": false,
"defaultValue": "",
"maxLength": 40,
"validators": [
{
"name": "required"
},
{
"maxLength": 40,
"name": "maxLength"
}
]
},
{
"name": "contactName",
"dataType": "String",
"maxLength": 30,
"validators": [
{
"maxLength": 30,
"name": "maxLength"
}
]
},
{
"name": "contactTitle",
"dataType": "String",
"maxLength": 30,
"validators": [
{
"maxLength": 30,
"name": "maxLength"
}
]
},
{
"name": "address",
"dataType": "String",
"maxLength": 60,
"validators": [
{
"maxLength": 60,
"name": "maxLength"
}
]
},
{
"name": "city",
"dataType": "String",
"maxLength": 15,
"validators": [
{
"maxLength": 15,
"name": "maxLength"
}
]
},
{
"name": "region",
"dataType": "String",
"maxLength": 15,
"validators": [
{
"maxLength": 15,
"name": "maxLength"
}
]
},
{
"name": "postalCode",
"dataType": "String",
"maxLength": 10,
"validators": [
{
"maxLength": 10,
"name": "maxLength"
}
]
},
{
"name": "country",
"dataType": "String",
"maxLength": 15,
"validators": [
{
"maxLength": 15,
"name": "maxLength"
}
]
},
{
"name": "phone",
"dataType": "String",
"maxLength": 24,
"validators": [
{
"maxLength": 24,
"name": "maxLength"
}
]
},
{
"name": "fax",
"dataType": "String",
"maxLength": 24,
"validators": [
{
"maxLength": 24,
"name": "maxLength"
}
]
},
{
"name": "rowVersion",
"dataType": "Int32",
"concurrencyMode": "Fixed",
"validators": [
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
}
],
"navigationProperties": [
{
"name": "orders",
"entityTypeName": "Order:#Foo",
"isScalar": false,
"associationName": "Customer_Orders",
"invForeignKeyNames": [
"customerID"
]
}
]
},
{
"shortName": "Order",
"namespace": "Foo",
"autoGeneratedKeyType": "Identity",
"defaultResourceName": "Orders",
"dataProperties": [
{
"name": "orderID",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"isPartOfKey": true,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "customerID",
"dataType": "Guid",
"validators": [
{
"name": "guid"
}
]
},
{
"name": "employeeID",
"dataType": "Int32",
"validators": [
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "orderDate",
"dataType": "DateTime",
"validators": [
{
"name": "date"
}
]
},
{
"name": "requiredDate",
"dataType": "DateTime",
"validators": [
{
"name": "date"
}
]
},
{
"name": "shippedDate",
"dataType": "DateTime",
"validators": [
{
"name": "date"
}
]
},
{
"name": "freight",
"dataType": "Decimal",
"validators": [
{
"name": "number"
}
]
},
{
"name": "shipName",
"dataType": "String",
"maxLength": 40,
"validators": [
{
"maxLength": 40,
"name": "maxLength"
}
]
},
{
"name": "shipAddress",
"dataType": "String",
"maxLength": 60,
"validators": [
{
"maxLength": 60,
"name": "maxLength"
}
]
},
{
"name": "shipCity",
"dataType": "String",
"maxLength": 15,
"validators": [
{
"maxLength": 15,
"name": "maxLength"
}
]
},
{
"name": "shipRegion",
"dataType": "String",
"maxLength": 15,
"validators": [
{
"maxLength": 15,
"name": "maxLength"
}
]
},
{
"name": "shipPostalCode",
"dataType": "String",
"maxLength": 10,
"validators": [
{
"maxLength": 10,
"name": "maxLength"
}
]
},
{
"name": "shipCountry",
"dataType": "String",
"maxLength": 15,
"validators": [
{
"maxLength": 15,
"name": "maxLength"
}
]
},
{
"name": "rowVersion",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
}
],
"navigationProperties": [
{
"name": "customer",
"entityTypeName": "Customer:#Foo",
"isScalar": true,
"associationName": "Customer_Orders",
"foreignKeyNames": [
"customerID"
]
},
{
"name": "employee",
"entityTypeName": "Employee:#Foo",
"isScalar": true,
"associationName": "Employee_Orders",
"foreignKeyNames": [
"employeeID"
]
},
{
"name": "internationalOrder",
"entityTypeName": "InternationalOrder:#Foo",
"isScalar": true,
"associationName": "Order_InternationalOrder",
"invForeignKeyNames": [
"orderID"
]
},
{
"name": "orderDetails",
"entityTypeName": "OrderDetail:#Foo",
"isScalar": false,
"associationName": "OrderDetail_Order",
"invForeignKeyNames": [
"orderID"
]
}
]
},
{
"shortName": "Employee",
"namespace": "Foo",
"autoGeneratedKeyType": "Identity",
"defaultResourceName": "Employees",
"dataProperties": [
{
"name": "employeeID",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"isPartOfKey": true,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "lastName",
"dataType": "String",
"isNullable": false,
"defaultValue": "",
"maxLength": 30,
"validators": [
{
"name": "required"
},
{
"maxLength": 30,
"name": "maxLength"
}
]
},
{
"name": "firstName",
"dataType": "String",
"isNullable": false,
"defaultValue": "",
"maxLength": 30,
"validators": [
{
"name": "required"
},
{
"maxLength": 30,
"name": "maxLength"
}
]
},
{
"name": "title",
"dataType": "String",
"maxLength": 30,
"validators": [
{
"maxLength": 30,
"name": "maxLength"
}
]
},
{
"name": "titleOfCourtesy",
"dataType": "String",
"maxLength": 25,
"validators": [
{
"maxLength": 25,
"name": "maxLength"
}
]
},
{
"name": "birthDate",
"dataType": "DateTime",
"validators": [
{
"name": "date"
}
]
},
{
"name": "hireDate",
"dataType": "DateTime",
"validators": [
{
"name": "date"
}
]
},
{
"name": "address",
"dataType": "String",
"maxLength": 60,
"validators": [
{
"maxLength": 60,
"name": "maxLength"
}
]
},
{
"name": "city",
"dataType": "String",
"maxLength": 15,
"validators": [
{
"maxLength": 15,
"name": "maxLength"
}
]
},
{
"name": "region",
"dataType": "String",
"maxLength": 15,
"validators": [
{
"maxLength": 15,
"name": "maxLength"
}
]
},
{
"name": "postalCode",
"dataType": "String",
"maxLength": 10,
"validators": [
{
"maxLength": 10,
"name": "maxLength"
}
]
},
{
"name": "country",
"dataType": "String",
"maxLength": 15,
"validators": [
{
"maxLength": 15,
"name": "maxLength"
}
]
},
{
"name": "homePhone",
"dataType": "String",
"maxLength": 24,
"validators": [
{
"maxLength": 24,
"name": "maxLength"
}
]
},
{
"name": "extension",
"dataType": "String",
"maxLength": 4,
"validators": [
{
"maxLength": 4,
"name": "maxLength"
}
]
},
{
"name": "photo",
"dataType": "Binary",
"validators": [
{
"name": "none"
}
]
},
{
"name": "notes",
"dataType": "String",
"validators": [
{
"name": "string"
}
]
},
{
"name": "photoPath",
"dataType": "String",
"maxLength": 255,
"validators": [
{
"maxLength": 255,
"name": "maxLength"
}
]
},
{
"name": "reportsToEmployeeID",
"dataType": "Int32",
"validators": [
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "rowVersion",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "fullName",
"dataType": "String",
"validators": [
{
"name": "string"
}
]
}
],
"navigationProperties": [
{
"name": "directReports",
"entityTypeName": "Employee:#Foo",
"isScalar": false,
"associationName": "Employee_DirectReports",
"invForeignKeyNames": [
"reportsToEmployeeID"
]
},
{
"name": "employeeTerritories",
"entityTypeName": "EmployeeTerritory:#Foo",
"isScalar": false,
"associationName": "Employee_EmployeeTerritories",
"invForeignKeyNames": [
"employeeID"
]
},
{
"name": "manager",
"entityTypeName": "Employee:#Foo",
"isScalar": true,
"associationName": "Employee_DirectReports",
"foreignKeyNames": [
"reportsToEmployeeID"
]
},
{
"name": "orders",
"entityTypeName": "Order:#Foo",
"isScalar": false,
"associationName": "Employee_Orders",
"invForeignKeyNames": [
"employeeID"
]
}
]
},
{
"shortName": "EmployeeTerritory",
"namespace": "Foo",
"autoGeneratedKeyType": "Identity",
"defaultResourceName": "EmployeeTerritories",
"dataProperties": [
{
"name": "iD",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"isPartOfKey": true,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "employeeID",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "territoryID",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "rowVersion",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
}
],
"navigationProperties": [
{
"name": "employee",
"entityTypeName": "Employee:#Foo",
"isScalar": true,
"associationName": "Employee_EmployeeTerritories",
"foreignKeyNames": [
"employeeID"
]
},
{
"name": "territory",
"entityTypeName": "Territory:#Foo",
"isScalar": true,
"associationName": "EmployeeTerritory_Territory",
"foreignKeyNames": [
"territoryID"
]
}
]
},
{
"shortName": "Territory",
"namespace": "Foo",
"autoGeneratedKeyType": "None",
"defaultResourceName": "Territories",
"dataProperties": [
{
"name": "territoryID",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"isPartOfKey": true,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "territoryDescription",
"dataType": "String",
"isNullable": false,
"defaultValue": "",
"maxLength": 50,
"validators": [
{
"name": "required"
},
{
"maxLength": 50,
"name": "maxLength"
}
]
},
{
"name": "regionID",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "rowVersion",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
}
],
"navigationProperties": [
{
"name": "employeeTerritories",
"entityTypeName": "EmployeeTerritory:#Foo",
"isScalar": false,
"associationName": "EmployeeTerritory_Territory",
"invForeignKeyNames": [
"territoryID"
]
},
{
"name": "region",
"entityTypeName": "Region:#Foo",
"isScalar": true,
"associationName": "Region_Territories",
"foreignKeyNames": [
"regionID"
]
}
]
},
{
"shortName": "Region",
"namespace": "Foo",
"autoGeneratedKeyType": "None",
"defaultResourceName": "Regions",
"dataProperties": [
{
"name": "regionID",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"isPartOfKey": true,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "regionDescription",
"dataType": "String",
"isNullable": false,
"defaultValue": "",
"maxLength": 50,
"validators": [
{
"name": "required"
},
{
"maxLength": 50,
"name": "maxLength"
}
]
},
{
"name": "rowVersion",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
}
],
"navigationProperties": [
{
"name": "territories",
"entityTypeName": "Territory:#Foo",
"isScalar": false,
"associationName": "Region_Territories",
"invForeignKeyNames": [
"regionID"
]
}
]
},
{
"shortName": "InternationalOrder",
"namespace": "Foo",
"autoGeneratedKeyType": "None",
"defaultResourceName": "InternationalOrders",
"dataProperties": [
{
"name": "orderID",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"isPartOfKey": true,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "customsDescription",
"dataType": "String",
"maxLength": 100,
"validators": [
{
"maxLength": 100,
"name": "maxLength"
}
]
},
{
"name": "exciseTax",
"dataType": "Decimal",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"name": "number"
}
]
},
{
"name": "rowVersion",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
}
],
"navigationProperties": [
{
"name": "order",
"entityTypeName": "Order:#Foo",
"isScalar": true,
"associationName": "Order_InternationalOrder",
"foreignKeyNames": [
"orderID"
]
}
]
},
{
"shortName": "OrderDetail",
"namespace": "Foo",
"autoGeneratedKeyType": "None",
"defaultResourceName": "OrderDetails",
"dataProperties": [
{
"name": "orderID",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"isPartOfKey": true,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "productID",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"isPartOfKey": true,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "unitPrice",
"dataType": "Decimal",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"name": "number"
}
]
},
{
"name": "quantity",
"dataType": "Int16",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"min": -32768,
"max": 32767,
"name": "int16"
}
]
},
{
"name": "discount",
"dataType": "Single",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"name": "number"
}
]
},
{
"name": "rowVersion",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
}
],
"navigationProperties": [
{
"name": "order",
"entityTypeName": "Order:#Foo",
"isScalar": true,
"associationName": "OrderDetail_Order",
"foreignKeyNames": [
"orderID"
]
},
{
"name": "product",
"entityTypeName": "Product:#Foo",
"isScalar": true,
"associationName": "OrderDetail_Product",
"foreignKeyNames": [
"productID"
]
}
]
},
{
"shortName": "Geospatial",
"namespace": "Foo",
"autoGeneratedKeyType": "Identity",
"defaultResourceName": "Geospatials",
"dataProperties": [
{
"name": "id",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"isPartOfKey": true,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "geometry1",
"dataType": "Undefined",
"validators": [
{
"name": "none"
}
],
"rawTypeName": "Edm.Geometry"
},
{
"name": "geography1",
"dataType": "Undefined",
"validators": [
{
"name": "none"
}
],
"rawTypeName": "Edm.Geography"
}
]
},
{
"shortName": "PreviousEmployee",
"namespace": "Foo",
"autoGeneratedKeyType": "None",
"defaultResourceName": "PreviousEmployees",
"dataProperties": [
{
"name": "employeeID",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"isPartOfKey": true,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "lastName",
"dataType": "String",
"isNullable": false,
"defaultValue": "",
"maxLength": 20,
"validators": [
{
"name": "required"
},
{
"maxLength": 20,
"name": "maxLength"
}
]
},
{
"name": "firstName",
"dataType": "String",
"isNullable": false,
"defaultValue": "",
"maxLength": 10,
"validators": [
{
"name": "required"
},
{
"maxLength": 10,
"name": "maxLength"
}
]
},
{
"name": "title",
"dataType": "String",
"maxLength": 30,
"validators": [
{
"maxLength": 30,
"name": "maxLength"
}
]
},
{
"name": "titleOfCourtesy",
"dataType": "String",
"maxLength": 25,
"validators": [
{
"maxLength": 25,
"name": "maxLength"
}
]
},
{
"name": "birthDate",
"dataType": "DateTime",
"validators": [
{
"name": "date"
}
]
},
{
"name": "hireDate",
"dataType": "DateTime",
"validators": [
{
"name": "date"
}
]
},
{
"name": "address",
"dataType": "String",
"validators": [
{
"name": "string"
}
]
},
{
"name": "city",
"dataType": "String",
"maxLength": 15,
"validators": [
{
"maxLength": 15,
"name": "maxLength"
}
]
},
{
"name": "region",
"dataType": "String",
"maxLength": 15,
"validators": [
{
"maxLength": 15,
"name": "maxLength"
}
]
},
{
"name": "postalCode",
"dataType": "String",
"maxLength": 10,
"validators": [
{
"maxLength": 10,
"name": "maxLength"
}
]
},
{
"name": "country",
"dataType": "String",
"maxLength": 15,
"validators": [
{
"maxLength": 15,
"name": "maxLength"
}
]
},
{
"name": "homePhone",
"dataType": "String",
"maxLength": 24,
"validators": [
{
"maxLength": 24,
"name": "maxLength"
}
]
},
{
"name": "extension",
"dataType": "String",
"maxLength": 4,
"validators": [
{
"maxLength": 4,
"name": "maxLength"
}
]
},
{
"name": "photo",
"dataType": "Binary",
"validators": [
{
"name": "none"
}
]
},
{
"name": "notes",
"dataType": "String",
"validators": [
{
"name": "string"
}
]
},
{
"name": "photoPath",
"dataType": "String",
"maxLength": 255,
"validators": [
{
"maxLength": 255,
"name": "maxLength"
}
]
},
{
"name": "rowVersion",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
}
]
},
{
"shortName": "Role",
"namespace": "Foo",
"autoGeneratedKeyType": "Identity",
"defaultResourceName": "Roles",
"dataProperties": [
{
"name": "id",
"dataType": "Int64",
"isNullable": false,
"defaultValue": 0,
"isPartOfKey": true,
"validators": [
{
"name": "required"
},
{
"name": "integer"
}
]
},
{
"name": "name",
"dataType": "String",
"isNullable": false,
"defaultValue": "",
"maxLength": 50,
"validators": [
{
"name": "required"
},
{
"maxLength": 50,
"name": "maxLength"
}
]
},
{
"name": "description",
"dataType": "String",
"maxLength": 2000,
"validators": [
{
"maxLength": 2000,
"name": "maxLength"
}
]
},
{
"name": "ts",
"dataType": "Binary",
"isNullable": false,
"defaultValue": "AAAAAAAAJ3U=",
"concurrencyMode": "Fixed",
"maxLength": 8,
"validators": [
{
"name": "required"
},
{
"name": "none"
}
]
},
{
"name": "roleType",
"dataType": "String",
"validators": [
{
"name": "string"
}
],
"enumType": "Edm.Self.RoleType"
}
],
"navigationProperties": [
{
"name": "userRoles",
"entityTypeName": "UserRole:#Foo",
"isScalar": false,
"associationName": "Role_UserRoles",
"invForeignKeyNames": [
"roleId"
]
}
]
},
{
"shortName": "UserRole",
"namespace": "Foo",
"autoGeneratedKeyType": "Identity",
"defaultResourceName": "UserRoles",
"dataProperties": [
{
"name": "iD",
"dataType": "Int64",
"isNullable": false,
"defaultValue": 0,
"isPartOfKey": true,
"validators": [
{
"name": "required"
},
{
"name": "integer"
}
]
},
{
"name": "userId",
"dataType": "Int64",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"name": "integer"
}
]
},
{
"name": "roleId",
"dataType": "Int64",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"name": "integer"
}
]
}
],
"navigationProperties": [
{
"name": "role",
"entityTypeName": "Role:#Foo",
"isScalar": true,
"associationName": "Role_UserRoles",
"foreignKeyNames": [
"roleId"
]
},
{
"name": "user",
"entityTypeName": "User:#Foo",
"isScalar": true,
"associationName": "UserRole_User",
"foreignKeyNames": [
"userId"
]
}
]
},
{
"shortName": "User",
"namespace": "Foo",
"autoGeneratedKeyType": "Identity",
"defaultResourceName": "Users",
"dataProperties": [
{
"name": "id",
"dataType": "Int64",
"isNullable": false,
"defaultValue": 0,
"isPartOfKey": true,
"validators": [
{
"name": "required"
},
{
"name": "integer"
}
]
},
{
"name": "userName",
"dataType": "String",
"maxLength": 100,
"validators": [
{
"maxLength": 100,
"name": "maxLength"
}
]
},
{
"name": "userPassword",
"dataType": "String",
"maxLength": 200,
"validators": [
{
"maxLength": 200,
"name": "maxLength"
}
]
},
{
"name": "firstName",
"dataType": "String",
"maxLength": 100,
"validators": [
{
"maxLength": 100,
"name": "maxLength"
}
]
},
{
"name": "lastName",
"dataType": "String",
"maxLength": 100,
"validators": [
{
"maxLength": 100,
"name": "maxLength"
}
]
},
{
"name": "email",
"dataType": "String",
"maxLength": 100,
"validators": [
{
"maxLength": 100,
"name": "maxLength"
}
]
},
{
"name": "rowVersion",
"dataType": "Decimal",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"name": "number"
}
]
},
{
"name": "createdBy",
"dataType": "String",
"maxLength": 100,
"validators": [
{
"maxLength": 100,
"name": "maxLength"
}
]
},
{
"name": "createdByUserId",
"dataType": "Int64",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"name": "integer"
}
]
},
{
"name": "createdDate",
"dataType": "DateTime",
"isNullable": false,
"defaultValue": "1900-01-01T08:00:00.000Z",
"validators": [
{
"name": "required"
},
{
"name": "date"
}
]
},
{
"name": "modifiedBy",
"dataType": "String",
"maxLength": 100,
"validators": [
{
"maxLength": 100,
"name": "maxLength"
}
]
},
{
"name": "modifiedByUserId",
"dataType": "Int64",
"isNullable": false,
"defaultValue": 0,
"validators": [
{
"name": "required"
},
{
"name": "integer"
}
]
},
{
"name": "modifiedDate",
"dataType": "DateTime",
"isNullable": false,
"defaultValue": "1900-01-01T08:00:00.000Z",
"concurrencyMode": "Fixed",
"validators": [
{
"name": "required"
},
{
"name": "date"
}
]
}
],
"navigationProperties": [
{
"name": "userRoles",
"entityTypeName": "UserRole:#Foo",
"isScalar": false,
"associationName": "UserRole_User",
"invForeignKeyNames": [
"userId"
]
}
]
},
{
"shortName": "TimeGroup",
"namespace": "Foo",
"autoGeneratedKeyType": "Identity",
"defaultResourceName": "TimeGroups",
"dataProperties": [
{
"name": "id",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"isPartOfKey": true,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "comment",
"dataType": "String",
"validators": [
{
"name": "string"
}
]
}
],
"navigationProperties": [
{
"name": "timeLimits",
"entityTypeName": "TimeLimit:#Foo",
"isScalar": false,
"associationName": "TimeGroup_TimeLimits",
"invForeignKeyNames": [
"timeGroupId"
]
}
]
},
{
"shortName": "TimeLimit",
"namespace": "Foo",
"autoGeneratedKeyType": "Identity",
"defaultResourceName": "TimeLimits",
"dataProperties": [
{
"name": "id",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"isPartOfKey": true,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "maxTime",
"dataType": "Time",
"isNullable": false,
"defaultValue": "PT0S",
"validators": [
{
"name": "required"
},
{
"name": "duration"
}
]
},
{
"name": "minTime",
"dataType": "Time",
"validators": [
{
"name": "duration"
}
]
},
{
"name": "timeGroupId",
"dataType": "Int32",
"validators": [
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
}
],
"navigationProperties": [
{
"name": "timeGroup",
"entityTypeName": "TimeGroup:#Foo",
"isScalar": true,
"associationName": "TimeGroup_TimeLimits",
"foreignKeyNames": [
"timeGroupId"
]
}
]
},
{
"shortName": "UnusualDate",
"namespace": "Foo",
"autoGeneratedKeyType": "Identity",
"defaultResourceName": "UnusualDates",
"dataProperties": [
{
"name": "id",
"dataType": "Int32",
"isNullable": false,
"defaultValue": 0,
"isPartOfKey": true,
"validators": [
{
"name": "required"
},
{
"min": -2147483648,
"max": 2147483647,
"name": "int32"
}
]
},
{
"name": "creationDate",
"dataType": "DateTimeOffset",
"isNullable": false,
"defaultValue": "1900-01-01T08:00:00.000Z",
"validators": [
{
"name": "required"
},
{
"name": "date"
}
]
},
{
"name": "modificationDate",
"dataType": "DateTime",
"isNullable": false,
"defaultValue": "1900-01-01T08:00:00.000Z",
"validators": [
{
"name": "required"
},
{
"name": "date"
}
]
},
{
"name": "creationDate2",
"dataType": "DateTimeOffset",
"validators": [
{
"name": "date"
}
]
},
{
"name": "modificationDate2",
"dataType": "DateTime",
"validators": [
{
"name": "date"
}
]
}
]
}
],
"resourceEntityTypeMap": {
"Categories": "Category:#Foo",
"Products": "Product:#Foo",
"Suppliers": "Supplier:#Foo",
"Comments": "Comment:#Foo",
"Customers": "Customer:#Foo",
"Orders": "Order:#Foo",
"Employees": "Employee:#Foo",
"EmployeeTerritories": "EmployeeTerritory:#Foo",
"Territories": "Territory:#Foo",
"Regions": "Region:#Foo",
"InternationalOrders": "InternationalOrder:#Foo",
"OrderDetails": "OrderDetail:#Foo",
"Geospatials": "Geospatial:#Foo",
"PreviousEmployees": "PreviousEmployee:#Foo",
"Roles": "Role:#Foo",
"UserRoles": "UserRole:#Foo",
"Users": "User:#Foo",
"TimeGroups": "TimeGroup:#Foo",
"TimeLimits": "TimeLimit:#Foo",
"UnusualDates": "UnusualDate:#Foo"
}
}