UNPKG

apg-js-examples

Version:

Examples of using the suite of apg-js applications and libraries.

1,995 lines (1,994 loc) 166 kB
{ "constraints": [ { "rule": "keyPropertyAlias", "ruleId": 12, "match": [ "KeyAlias" ] }, { "rule": "keyPathLiteral", "ruleId": 14, "match": [ "1", "2001", "A1245", "O'Neil", "O%27Neil", "Smartphone%2FTablet" ] }, { "rule": "parameterName", "ruleId": 49, "match": [ "categoryId", "color", "colors", "customer", "Customers", "complex", "Ingredients", "Kind", "Location", "ManagerID", "Number", "Rank", "Size", "Word", "Word1", "Word2" ] }, { "rule": "parameterAlias", "ruleId": 50, "match": [ "@a", "@bar", "@c", "@cat", "@categoryId", "@color", "@expression", "@foo", "@i", "@key", "@ManagerID", "@m", "@p1", "@ref", "@title", "@word" ] }, { "rule": "customName", "ruleId": 109, "match": [ "!deltatoken", "!special", "find" ] }, { "rule": "complexAnnotationInQuery", "ruleId": 111, "match": [ "@Core.Messages", "@Namespace.SomeTerm" ] }, { "rule": "primitiveAnnotationInQuery", "ruleId": 113, "match": [ "@Measures.Currency" ] }, { "rule": "primitiveColAnnotationInQuery", "ruleId": 114, "match": [ "@Core.MayImplement" ] }, { "rule": "entityAnnotationInFragment", "ruleId": 127, "match": [ "@Namespace.EntityTerm" ] }, { "rule": "lambdaVariableExpr", "ruleId": 141, "match": [ "lambda", "m" ] }, { "rule": "namespacePart", "ruleId": 241, "match": [ "Core", "Measures", "Model", "Namespace", "odata", "SaM", "Sales", "Special" ] }, { "rule": "entitySetName", "ruleId": 242, "match": [ "Categories", "Countries", "Customers", "Employees", "LeaveRequests", "Orders", "OrderItems", "People", "Products", "Sales", "SalesOrganizations", "Suppliers" ] }, { "rule": "singletonEntity", "ruleId": 243, "match": [ "BestProductEverCreated", "MainSupplier", "SingletonEntity" ] }, { "rule": "entityTypeName", "ruleId": 244, "match": [ "Customer", "Employee", "Manager", "BestSellingProduct", "PreferredSupplier", "VipCustomer" ] }, { "rule": "complexTypeName", "ruleId": 245, "match": [ "Address", "AddressWithLocation" ] }, { "rule": "typeDefinitionName", "ruleId": 246, "match": [ "MonetaryAmount" ] }, { "rule": "enumerationTypeName", "ruleId": 247, "match": [ "NameKind", "Pattern" ] }, { "rule": "enumerationMember", "ruleId": 248, "match": [ "Solid", "Yellow" ] }, { "rule": "termName", "ruleId": 249, "match": [ "AnotherTerm", "Currency", "EntityTerm", "id", "MayImplement", "Messages", "SomeTerm", "type" ] }, { "rule": "primitiveKeyProperty", "ruleId": 257, "match": [ "Code", "Date", "ID", "ItemID", "OrderID", "Size" ] }, { "rule": "primitiveNonKeyProperty", "ruleId": 258, "match": [ "AccountRepresentative", "Age", "Amount", "BirthDate", "City", "code", "CompanyName", "ContactName", "Completed", "Cost", "CountryCode", "eyeColor", "FirstName", "LastName", "LifeTime", "Line", "Location", "message", "Month", "Name", "Population", "Price", "Quantity", "Rating", "ReleaseDate", "Revenue", "SalesArea", "severity", "Shipped", "Spokesperson", "State", "Status", "Street", "style", "SumAmount", "TaxRate", "Title", "X", "ZipCode" ] }, { "rule": "primitiveColProperty", "ruleId": 259, "match": [ "EmailAddresses", "Names", "Sizes" ] }, { "rule": "complexProperty", "ruleId": 260, "match": [ "Address" ] }, { "rule": "complexColProperty", "ruleId": 261, "match": [ "Addresses", "_at_Core_dot_Messages" ] }, { "rule": "streamProperty", "ruleId": 262, "match": [ "Thumbnail" ] }, { "rule": "entityNavigationProperty", "ruleId": 264, "match": [ "Category", "Continent", "Country", "Countries", "CountrySet", "Currency", "Customer", "Customers", "Manager", "Product", "ProductGroup", "Supplier", "Time" ] }, { "rule": "entityColNavigationProperty", "ruleId": 265, "match": [ "DirectReports", "Items", "Orders", "Products", "Sales" ] }, { "rule": "action", "ruleId": 266, "match": [ "ActionName", "Cluster", "Discount", "Rejection" ] }, { "rule": "actionImport", "ruleId": 267, "match": [ "Activation" ] }, { "rule": "entityFunction", "ruleId": 269, "match": [ "BestProduct", "MostExpensive" ] }, { "rule": "entityColFunction", "ruleId": 270, "match": [ "AllOrders", "ProductsByColor", "WithIngredients" ] }, { "rule": "complexFunction", "ruleId": 271, "match": [ "MostPopularAddress" ] }, { "rule": "complexColFunction", "ruleId": 272, "match": [ "MostPopularAddresses" ] }, { "rule": "primitiveFunction", "ruleId": 273, "match": [ "Available", "MostPopularCategory", "MostPopularName", "PhoneticallySimilar", "GeoLocation" ] }, { "rule": "primitiveColFunction", "ruleId": 274, "match": [ "MostPopularNames" ] }, { "rule": "entityFunctionImport", "ruleId": 275, "match": [ "TheBestProduct" ] }, { "rule": "entityColFunctionImport", "ruleId": 276, "match": [ "AllProductsByColor", "AllProductsByCategoryId", "EmployeesByManager", "ProductsByCategoryId", "ProductsByColor", "ProductsByComplex", "ProductsByCustomer", "ProductsOrderedBy" ] }, { "rule": "complexFunctionImport", "ruleId": 277, "match": [ "TheMostPopularAddress" ] }, { "rule": "complexColFunctionImport", "ruleId": 278, "match": [ "TheMostPopularAddresses" ] }, { "rule": "primitiveFunctionImport", "ruleId": 279, "match": [ "TheMostPopularName" ] }, { "rule": "primitiveColFunctionImport", "ruleId": 280, "match": [ "TheMostPopularNames" ] }, { "rule": "enumMemberValue", "ruleId": 321, "match": [ "32" ] } ], "valid": [ { "ID": 0, "name": "Just to test the dummy start rule", "rule": "dummyStartRule", "ruleId": 0, "input": "http://services.odata.org/" }, { "ID": 1, "name": "URI with IPv4 address, path and trailing slash", "rule": "odataUri", "ruleId": 1, "input": "http://127.0.0.1:8080/MyService/" }, { "ID": 2, "name": "URI with IPv6 address, path and trailing slash", "rule": "odataUri", "ruleId": 1, "input": "https://[2001:db8:85a3:8d3:1319:8a2e:370:7348]:8080/MyService/" }, { "ID": 3, "name": "URI with IPvFuture address, path and trailing slash", "rule": "odataUri", "ruleId": 1, "input": "https://[v7.0]/MyService/" }, { "ID": 6, "name": "Binary - empty", "rule": "binary", "ruleId": 284, "input": "binary''" }, { "ID": 7, "name": "Binary - f", "rule": "binary", "ruleId": 284, "input": "binary'Zg=='" }, { "ID": 8, "name": "Binary - f (pad character is optional)", "rule": "binary", "ruleId": 284, "input": "binary'Zg'" }, { "ID": 9, "name": "Binary - fo", "rule": "binary", "ruleId": 284, "input": "binary'Zm8='" }, { "ID": 10, "name": "Binary - fo (pad character is optional)", "rule": "binary", "ruleId": 284, "input": "binary'Zm8='" }, { "ID": 11, "name": "Binary - foo", "rule": "binary", "ruleId": 284, "input": "binary'Zm9v'" }, { "ID": 12, "name": "Binary - foob", "rule": "binary", "ruleId": 284, "input": "binary'Zm9vYg=='" }, { "ID": 13, "name": "Binary - fooba", "rule": "binary", "ruleId": 284, "input": "binary'Zm9vYmE='" }, { "ID": 14, "name": "Binary - foobar", "rule": "binary", "ruleId": 284, "input": "binary'Zm9vYmFy'" }, { "ID": 15, "name": "Boolean - true", "rule": "booleanValue", "ruleId": 289, "input": "true" }, { "ID": 16, "name": "Boolean - false", "rule": "booleanValue", "ruleId": 289, "input": "false" }, { "ID": 17, "name": "Boolean - literals are case-insensitive", "rule": "booleanValue", "ruleId": 289, "input": "tRUe" }, { "ID": 18, "name": "Date in URL or body", "rule": "dateValue", "ruleId": 302, "input": "2012-09-03" }, { "ID": 19, "name": "Date", "rule": "dateValue", "ruleId": 302, "input": "2012-09-10" }, { "ID": 20, "name": "Date", "rule": "dateValue", "ruleId": 302, "input": "2012-09-20" }, { "ID": 21, "name": "Date", "rule": "dateValue", "ruleId": 302, "input": "2012-09-03" }, { "ID": 22, "name": "Date: year zero", "rule": "dateValue", "ruleId": 302, "input": "0000-01-01" }, { "ID": 23, "name": "Date: negative", "rule": "dateValue", "ruleId": 302, "input": "-10000-04-01" }, { "ID": 26, "name": "DateTimeOffset: no seconds", "rule": "dateTimeOffsetValue", "ruleId": 303, "input": "2012-09-03T13:52Z" }, { "ID": 27, "name": "DateTimeOffset: seconds", "rule": "dateTimeOffsetValue", "ruleId": 303, "input": "2012-09-03T22:09:02Z" }, { "ID": 28, "name": "DateTimeOffset: leap second", "rule": "dateTimeOffsetValue", "ruleId": 303, "input": "1972-06-30T23:59:60Z" }, { "ID": 29, "name": "DateTimeOffset: subseconds", "rule": "dateTimeOffsetValue", "ruleId": 303, "input": "2012-08-31T18:19:22.1Z" }, { "ID": 30, "name": "DateTimeOffset: year zero", "rule": "dateTimeOffsetValue", "ruleId": 303, "input": "0000-01-01T00:00Z" }, { "ID": 31, "name": "DateTimeOffset: negative", "rule": "dateTimeOffsetValue", "ruleId": 303, "input": "-10000-04-01T00:00Z" }, { "ID": 34, "name": "DateTimeOffset: CEST", "rule": "dateTimeOffsetValue", "ruleId": 303, "input": "2012-09-03T14:53+02:00" }, { "ID": 35, "name": "DateTimeOffset: UTC", "rule": "dateTimeOffsetValue", "ruleId": 303, "input": "2012-09-03T12:53Z" }, { "ID": 41, "name": "DateTimeOffset: with percent-encoding", "rule": "dateTimeOffsetValueInUrl", "ruleId": 304, "input": "2012-09-03T23%3A59+01%3A00" }, { "ID": 42, "name": "Decimal", "rule": "decimalValue", "ruleId": 290, "input": "3.14" }, { "ID": 43, "name": "Decimal - exponential notation", "rule": "decimalValue", "ruleId": 290, "input": "-1.234567e3" }, { "ID": 44, "name": "Decimal - exponential notation", "rule": "decimalValue", "ruleId": 290, "input": "1e-101" }, { "ID": 45, "name": "Decimal - negative infinitiy", "rule": "decimalValue", "ruleId": 290, "input": "-INF" }, { "ID": 46, "name": "Decimal - positive infinitiy", "rule": "decimalValue", "ruleId": 290, "input": "INF" }, { "ID": 47, "name": "Decimal - not a number", "rule": "decimalValue", "ruleId": 290, "input": "NaN" }, { "ID": 48, "name": "Duration in body", "rule": "durationValue", "ruleId": 306, "input": "P6DT23H59M59.9999S" }, { "ID": 51, "name": "Duration in URL", "rule": "duration", "ruleId": 305, "input": "duration'P6DT23H59M59.9999S'" }, { "ID": 52, "name": "Duration in URL without prefix", "rule": "duration", "ruleId": 305, "input": "'P6DT23H59M59.9999S'" }, { "ID": 53, "name": "Decimal: integer", "rule": "decimalValue", "ruleId": 290, "input": "-2" }, { "ID": 56, "name": "Decimal in URL", "rule": "decimalValue", "ruleId": 290, "input": "3.14" }, { "ID": 57, "name": "Double", "rule": "doubleValue", "ruleId": 291, "input": "3.14" }, { "ID": 58, "name": "Double with exponent", "rule": "doubleValue", "ruleId": 291, "input": "-0.314e1" }, { "ID": 60, "name": "Negative infinity", "rule": "doubleValue", "ruleId": 291, "input": "-INF" }, { "ID": 61, "name": "Positive infinity", "rule": "doubleValue", "ruleId": 291, "input": "INF" }, { "ID": 62, "name": "Not a Number", "rule": "doubleValue", "ruleId": 291, "input": "NaN" }, { "ID": 63, "name": "Double in URL", "rule": "doubleValue", "ruleId": 291, "input": "-0.314e1" }, { "ID": 64, "name": "Single in URL", "rule": "singleValue", "ruleId": 292, "input": "-0.314e1" }, { "ID": 65, "name": "Byte", "rule": "byteValue", "ruleId": 295, "input": "255" }, { "ID": 66, "name": "SByte", "rule": "sbyteValue", "ruleId": 296, "input": "-128" }, { "ID": 67, "name": "Int16", "rule": "int16Value", "ruleId": 297, "input": "+32000" }, { "ID": 68, "name": "Int32", "rule": "int32Value", "ruleId": 298, "input": "-2000000000" }, { "ID": 69, "name": "Int64", "rule": "int64Value", "ruleId": 299, "input": "1234567890123456789" }, { "ID": 70, "name": "Null: unqualified", "rule": "nullValue", "ruleId": 283, "input": "null" }, { "ID": 71, "name": "String", "rule": "string", "ruleId": 300, "input": "'ABCDEFGHIHJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~!$&('')*+,;=:@'" }, { "ID": 72, "name": "String", "rule": "string", "ruleId": 300, "input": "'O''Neil'" }, { "ID": 73, "name": "String", "rule": "string", "ruleId": 300, "input": "%27O'%27Neil'" }, { "ID": 76, "name": "String", "rule": "string", "ruleId": 300, "input": "'%26%28'" }, { "ID": 77, "name": "primitive value in request body - enumeration member", "rule": "primitiveValue", "ruleId": 282, "input": "Yellow" }, { "ID": 78, "name": "primitive value in request body - geo point", "rule": "primitiveValue", "ruleId": 282, "input": "SRID=0;Point(142.1 64.1)" }, { "ID": 79, "name": "primitive value in request body - integer", "rule": "primitiveValue", "ruleId": 282, "input": "0123456789" }, { "ID": 80, "name": "primitive value in request body - guid", "rule": "primitiveValue", "ruleId": 282, "input": "01234567-89ab-cdef-0123-456789abcdef" }, { "ID": 81, "name": "primitive value in request body - binary", "rule": "primitiveValue", "ruleId": 282, "input": "a123456789abcdefABA=" }, { "ID": 83, "name": "Resource Path - Entity Set", "rule": "resourcePath", "ruleId": 4, "input": "Categories" }, { "ID": 84, "name": "Resource Path - Entity", "rule": "resourcePath", "ruleId": 4, "input": "Categories(11)" }, { "ID": 85, "name": "Resource Path - Entity", "rule": "resourcePath", "ruleId": 4, "input": "Categories(ID=1)" }, { "ID": 86, "name": "Key", "rule": "string", "ruleId": 300, "input": "'Hugo''s%20Tavern'" }, { "ID": 87, "name": "Resource Path - Entity", "rule": "resourcePath", "ruleId": 4, "input": "Categories(ID=1,Size=5)" }, { "ID": 88, "name": "Correct Guid", "rule": "guidValue", "ruleId": 294, "input": "01234567-89ab-cdef-0123-456789abcdef" }, { "ID": 91, "name": "TimeOfDay", "rule": "timeOfDayValue", "ruleId": 307, "input": "11:22:33" }, { "ID": 92, "name": "TimeOfDay - percent-encoded colon", "rule": "timeOfDayValueInUrl", "ruleId": 308, "input": "11%3A22%3a33" }, { "ID": 94, "name": "TimeOfDay: no seconds", "rule": "timeOfDayValue", "ruleId": 307, "input": "11:22" }, { "ID": 95, "name": "TimeOfDay: fractional seconds", "rule": "timeOfDayValue", "ruleId": 307, "input": "11:22:33.4444444" }, { "ID": 97, "name": "Identifier", "rule": "odataIdentifier", "ruleId": 250, "input": "TheQuickBrownFoxSays42" }, { "ID": 98, "name": "Identifier with leading underscores", "rule": "odataIdentifier", "ruleId": 250, "input": "__ID" }, { "ID": 101, "name": "Entity Set", "rule": "resourcePath", "ruleId": 4, "input": "Products" }, { "ID": 102, "name": "Inline Parameter Syntax", "rule": "odataUri", "ruleId": 1, "input": "http://host/service/EmployeesByManager(ManagerID=3)" }, { "ID": 103, "name": "Inline Parameter Syntax", "rule": "odataUri", "ruleId": 1, "input": "http://host/service/EmployeesByManager(ManagerID=@p1)?@p1=3" }, { "ID": 104, "name": "Inline Parameter Syntax", "rule": "odataUri", "ruleId": 1, "input": "http://host/service/EmployeesByManager?ManagerID=3" }, { "ID": 105, "name": "Inline Parameter Syntax", "rule": "odataUri", "ruleId": 1, "input": "http://host/service/EmployeesByManager?@ManagerID=3" }, { "ID": 106, "name": "2 URL Components - service root URL", "rule": "odataUri", "ruleId": 1, "input": "http://services.odata.org/OData/OData.svc/" }, { "ID": 107, "name": "2 URL Components - service root directly at server root", "rule": "odataUri", "ruleId": 1, "input": "http://My.Org:80/" }, { "ID": 108, "name": "2 URL Components - resource path", "rule": "resourcePath", "ruleId": 4, "input": "Categories(1)/Products" }, { "ID": 109, "name": "2 URL Components - resource path", "rule": "resourcePath", "ruleId": 4, "input": "Categories(1)/Products" }, { "ID": 110, "name": "2 URL Components - key with key property alias", "rule": "resourcePath", "ruleId": 4, "input": "Categories(KeyAlias=1)" }, { "ID": 111, "name": "2 URL Components - key with parameter alias - short form", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(@key)?@key=1" }, { "ID": 112, "name": "2 URL Components - key with parameter alias - long form", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(ID=@key)?@key=1" }, { "ID": 113, "name": "2 URL Components - query options", "rule": "queryOptions", "ruleId": 52, "input": "$top=2&$orderby=Name" }, { "ID": 114, "name": "2 URL Components - resource path and query options", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(1)/Products?$top=2&$orderby=Name" }, { "ID": 115, "name": "2 URL Components - single quotes", "rule": "odataRelativeUri", "ruleId": 3, "input": "Customers('O''Neil')" }, { "ID": 116, "name": "2 URL Components - single quotes", "rule": "odataRelativeUri", "ruleId": 3, "input": "Customers(%27O%27%27Neil%27)" }, { "ID": 118, "name": "2 URL Components - parentheses", "rule": "odataRelativeUri", "ruleId": 3, "input": "Customers%28%27O%27%27Neil%27%29" }, { "ID": 119, "name": "2 URL Components - encoded forward slash", "rule": "odataUri", "ruleId": 1, "input": "http://host/service/Categories('Smartphone%2FTablet')" }, { "ID": 121, "name": "4.1 - Metadata URL", "rule": "odataUri", "ruleId": 1, "input": "http://services.odata.org/OData/OData.svc/$metadata" }, { "ID": 122, "name": "4.1 - Metadata URL - CSDL JSON", "rule": "odataUri", "ruleId": 1, "input": "http://services.odata.org/OData/OData.svc/$metadata?$format=json" }, { "ID": 123, "name": "4.1 - Metadata URL - CSDL XML", "rule": "odataUri", "ruleId": 1, "input": "http://services.odata.org/OData/OData.svc/$metadata?$format=xml" }, { "ID": 124, "name": "4.1 - Metadata URL - allowed", "rule": "odataUri", "ruleId": 1, "input": "http://services.odata.org/OData/OData.svc/$metadata?$format=text/html" }, { "ID": 125, "name": "4.1 - Metadata URL - allowed", "rule": "odataUri", "ruleId": 1, "input": "http://services.odata.org/OData/OData.svc/$metadata?$format=text/html&!special" }, { "ID": 126, "name": "4.2 - Batch URL", "rule": "odataUri", "ruleId": 1, "input": "http://services.odata.org/OData/OData.svc/$batch" }, { "ID": 127, "name": "4.2 - Batch URL - JSON batch response", "rule": "odataUri", "ruleId": 1, "input": "http://services.odata.org/OData/OData.svc/$batch?$format=json" }, { "ID": 128, "name": "4.2 - Batch URL - multipart batch response", "rule": "odataUri", "ruleId": 1, "input": "http://services.odata.org/OData/OData.svc/$batch?$format=multipart/mixed" }, { "ID": 129, "name": "4.2 - Batch URL - allowed", "rule": "odataUri", "ruleId": 1, "input": "http://services.odata.org/OData/OData.svc/$batch?!special" }, { "ID": 130, "name": "4.3 Addressing entities - entity set", "rule": "entitySetName", "ruleId": 242, "input": "Products" }, { "ID": 131, "name": "4.3 Addressing entities - entity set", "rule": "odataRelativeUri", "ruleId": 3, "input": "Products" }, { "ID": 134, "name": "4.3 Addressing entities - function call", "rule": "odataRelativeUri", "ruleId": 3, "input": "ProductsByCategoryId(categoryId=2)" }, { "ID": 135, "name": "4.3 Addressing entities - function call with subsequent key segment", "rule": "odataRelativeUri", "ruleId": 3, "input": "ProductsByCategoryId(categoryId=2)(2)" }, { "ID": 136, "name": "4.3 Addressing entities - function call with alias", "rule": "odataRelativeUri", "ruleId": 3, "input": "ProductsByCategoryId(categoryId=@cat)?@cat=2" }, { "ID": 137, "name": "4.3 Addressing entities - function call with alias for expression", "rule": "odataRelativeUri", "ruleId": 3, "input": "ProductsByCategoryId(categoryId=@cat)?@cat=Model.MostPopularCategory(Rank=2)" }, { "ID": 138, "name": "4.3 Addressing entities - function call with query parameter", "rule": "odataRelativeUri", "ruleId": 3, "input": "ProductsByCategoryId(categoryId=2)" }, { "ID": 139, "name": "4.3 Addressing entities - function call with query parameter", "rule": "odataRelativeUri", "ruleId": 3, "input": "ProductsByCategoryId?@categoryId=2" }, { "ID": 140, "name": "4.3 Addressing entities - function parameter", "rule": "functionParameter", "ruleId": 48, "input": "color='red'" }, { "ID": 141, "name": "4.3 Addressing entities - top-level function call", "rule": "odataRelativeUri", "ruleId": 3, "input": "ProductsByColor(color='red')" }, { "ID": 142, "name": "4.3 Addressing entities - bound function call", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(1)/Model.ProductsByColor(color='red')" }, { "ID": 143, "name": "4.3 Addressing entities - bound function call with implicit parameter aliases", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(1)/Model.ProductsByColor?@color='red'" }, { "ID": 144, "name": "4.3 Addressing entities - single entity (short)", "rule": "resourcePath", "ruleId": 4, "input": "Categories(1)" }, { "ID": 145, "name": "4.3 Addressing entities - single entity (short)", "rule": "odataRelativeUri", "ruleId": 3, "input": "Customers(1)" }, { "ID": 146, "name": "4.3 Addressing entities - single entity (long)", "rule": "resourcePath", "ruleId": 4, "input": "Categories(ID=1)" }, { "ID": 147, "name": "4.3 Addressing entities - single entity (string)", "rule": "resourcePath", "ruleId": 4, "input": "Categories('Tablet')" }, { "ID": 148, "name": "4.3 Addressing entities - single entity (string)", "rule": "resourcePath", "ruleId": 4, "input": "Categories('7''''%20Tablet')" }, { "ID": 149, "name": "4.3 Addressing entities - single entity (string)", "rule": "resourcePath", "ruleId": 4, "input": "Categories%28%27Tablet%27%29" }, { "ID": 150, "name": "4.3 Addressing entities - single entity (string)", "rule": "resourcePath", "ruleId": 4, "input": "Categories('Tablet%2FSlate')" }, { "ID": 152, "name": "4.3 Addressing entities - single entity (string)", "rule": "resourcePath", "ruleId": 4, "input": "Categories('Tablet%20%28small%29')" }, { "ID": 153, "name": "4.3 Addressing entities - single entity (string)", "rule": "resourcePath", "ruleId": 4, "input": "Categories('Tablet%20(small)')" }, { "ID": 154, "name": "4.3 Addressing entities - single entity (string)", "rule": "resourcePath", "ruleId": 4, "input": "Categories('Tablet%20)small(')" }, { "ID": 155, "name": "4.3 Addressing entities - single entity (timestamp)", "rule": "resourcePath", "ruleId": 4, "input": "Categories(2018-02-13T23:59:59Z)" }, { "ID": 156, "name": "4.3 Addressing entities - single entity (timestamp, percent-encoded colon)", "rule": "resourcePath", "ruleId": 4, "input": "Categories(2018-02-13T23%3A59%3A59Z)" }, { "ID": 157, "name": "4.3 Addressing entities - single entity (time)", "rule": "resourcePath", "ruleId": 4, "input": "Categories(23:59:59)" }, { "ID": 158, "name": "4.3 Addressing entities - single entity (time, percent-encoded colon)", "rule": "resourcePath", "ruleId": 4, "input": "Categories(23%3A59%3A59)" }, { "ID": 160, "name": "4.3 Addressing entities - single entity (multi-part key)", "rule": "resourcePath", "ruleId": 4, "input": "OrderItems(OrderID=1,ItemID='a')" }, { "ID": 162, "name": "4.3 Addressing entities - bound operation on entity set", "rule": "resourcePath", "ruleId": 4, "input": "Products/Model.MostExpensive()" }, { "ID": 163, "name": "4.3 Addressing entities - follow navigation property", "rule": "resourcePath", "ruleId": 4, "input": "Products(1)/Supplier" }, { "ID": 164, "name": "4.3 Addressing entities - follow navigation property and call function", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(1)/Products/Model.AllOrders()" }, { "ID": 165, "name": "4.3 Addressing entities - follow navigation property and call function, then count results", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(1)/Products/Model.AllOrders()/$count" }, { "ID": 166, "name": "4.3 Addressing entities - follow navigation property and call function - no parens", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(1)/Products/Model.AllOrders" }, { "ID": 167, "name": "4.3 Addressing entities - follow navigation property and call function - no namespace", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(1)/Products/AllOrders" }, { "ID": 168, "name": "4.3 Addressing entities - follow navigation property and call function", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(1)/Products/Model.MostExpensive()" }, { "ID": 169, "name": "4.3 Addressing entities - singleton entities", "rule": "resourcePath", "ruleId": 4, "input": "SingletonEntity" }, { "ID": 170, "name": "4.3 Addressing entities - single navigation property in complex type", "rule": "resourcePath", "ruleId": 4, "input": "Customers(1)/Address/Country" }, { "ID": 171, "name": "4.3 Addressing entities - collection navigation property in complex type", "rule": "resourcePath", "ruleId": 4, "input": "Customers(1)/Address/Products" }, { "ID": 172, "name": "4.3.1 Canonical URL", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(1)/Products(1)" }, { "ID": 173, "name": "4.3.4 $entity with OData URL", "rule": "odataRelativeUri", "ruleId": 3, "input": "$entity?$id=http://host/path" }, { "ID": 174, "name": "4.3.4 $entity with URN", "rule": "odataRelativeUri", "ruleId": 3, "input": "$entity?$id=urn:some:id" }, { "ID": 175, "name": "4.3.4 $entity with URN, id without $ prefix", "rule": "odataRelativeUri", "ruleId": 3, "input": "$entity?id=urn:some:id" }, { "ID": 177, "name": "4.3.4 $entity with OData URL, $select and $expand", "rule": "odataRelativeUri", "ruleId": 3, "input": "$entity/Model.Customer?$id=http://myservice/Customers('ALFKI')&$select=CompanyName,ContactName&$expand=Orders" }, { "ID": 179, "name": "4.3.6 Key-as-Segment - single entity (numeric single-part key)", "rule": "odataRelativeUri", "ruleId": 3, "input": "Customers/1" }, { "ID": 180, "name": "4.3.6 Key-as-Segment - single entity (string single-part key)", "rule": "resourcePath", "ruleId": 4, "input": "Employees/A1245" }, { "ID": 181, "name": "4.3.6 Key-as-Segment - single entity (string single-part key)", "rule": "resourcePath", "ruleId": 4, "input": "People/O'Neil" }, { "ID": 182, "name": "4.3.6 Key-as-Segment - single entity (string single-part key)", "rule": "resourcePath", "ruleId": 4, "input": "People/O%27Neil" }, { "ID": 183, "name": "4.3.6 Key-as-Segment - single entity (string single-part key)", "rule": "resourcePath", "ruleId": 4, "input": "Categories/Smartphone%2FTablet" }, { "ID": 184, "name": "4.3.6 Key-as-Segment - single entity (multi-part key)", "rule": "resourcePath", "ruleId": 4, "input": "OrderItems/2001/1" }, { "ID": 185, "name": "4.3.6 Key-as-Segment - navigation (segment)", "rule": "resourcePath", "ruleId": 4, "input": "Orders/1/Items" }, { "ID": 186, "name": "4.3.6 Key-as-Segment - navigation (segment)", "rule": "resourcePath", "ruleId": 4, "input": "Orders/1/Items/1" }, { "ID": 187, "name": "4.4 Addressing Links between Entities", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(1)/Products/$ref" }, { "ID": 188, "name": "4.4 Addressing Links between Entities", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(1)/Products/$ref?$id=Products(0)" }, { "ID": 189, "name": "4.4 Addressing Links between Entities", "rule": "odataRelativeUri", "ruleId": 3, "input": "Products(1)/Category/$ref" }, { "ID": 191, "name": "4.4 Addressing Links between Entities", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(1)/Products(2)/$ref" }, { "ID": 193, "name": "4.4 edge case: entity set as references", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories/$ref" }, { "ID": 194, "name": "4.4 edge case: top-level entity as reference", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(1)/$ref" }, { "ID": 195, "name": "4.5.1 Call unbound action via action import", "rule": "odataRelativeUri", "ruleId": 3, "input": "Activation" }, { "ID": 196, "name": "4.5.1 Call bound action", "rule": "odataRelativeUri", "ruleId": 3, "input": "LeaveRequests(4)/Model.Rejection" }, { "ID": 198, "name": "4.5.2 Call function import", "rule": "odataRelativeUri", "ruleId": 3, "input": "TheBestProduct()" }, { "ID": 199, "name": "4.5.2 Call function import - no parentheses", "rule": "odataRelativeUri", "ruleId": 3, "input": "TheBestProduct" }, { "ID": 200, "name": "4.5.2 Call function import - inline parameter", "rule": "odataRelativeUri", "ruleId": 3, "input": "TheBestProduct(Size=3)" }, { "ID": 202, "name": "4.5.2 Call complex function import", "rule": "odataRelativeUri", "ruleId": 3, "input": "TheMostPopularAddress()" }, { "ID": 203, "name": "4.5.2 Call complex collection function import", "rule": "odataRelativeUri", "ruleId": 3, "input": "TheMostPopularAddresses()" }, { "ID": 204, "name": "4.5.2 Call primitive function import", "rule": "odataRelativeUri", "ruleId": 3, "input": "TheMostPopularName()" }, { "ID": 205, "name": "4.5.2 Call primitive function import", "rule": "odataRelativeUri", "ruleId": 3, "input": "TheMostPopularName()/$value" }, { "ID": 206, "name": "4.5.2 Call primitive collection function import", "rule": "odataRelativeUri", "ruleId": 3, "input": "TheMostPopularNames()" }, { "ID": 207, "name": "4.5.2 Call bound complex function", "rule": "odataRelativeUri", "ruleId": 3, "input": "Customers/Model.MostPopularAddress()" }, { "ID": 208, "name": "4.5.2 Call bound complex collection function", "rule": "odataRelativeUri", "ruleId": 3, "input": "Customers/Model.MostPopularAddresses()" }, { "ID": 209, "name": "4.5.2 Call bound complex collection function", "rule": "odataRelativeUri", "ruleId": 3, "input": "Customers/Model.MostPopularAddresses()/$count" }, { "ID": 210, "name": "4.5.2 Call bound complex collection function with cast", "rule": "odataRelativeUri", "ruleId": 3, "input": "Customers/Model.MostPopularAddresses()/Model.AddressWithLocation" }, { "ID": 211, "name": "4.5.2 Call bound complex collection function with cast", "rule": "odataRelativeUri", "ruleId": 3, "input": "Customers/Model.MostPopularAddresses()/Model.AddressWithLocation/$count" }, { "ID": 212, "name": "4.5.2 Call bound complex collection function with cast, no namespace", "rule": "odataRelativeUri", "ruleId": 3, "input": "Customers/MostPopularAddresses()/AddressWithLocation/$count" }, { "ID": 213, "name": "4.5.2 Call bound complex collection function - multiple", "rule": "odataRelativeUri", "ruleId": 3, "input": "Customers/Model.MostPopularAddresses()/Model.MostPopularNames()" }, { "ID": 214, "name": "4.5.2 Call bound complex collection function - multiple, no namespace", "rule": "odataRelativeUri", "ruleId": 3, "input": "Customers/MostPopularAddresses()/MostPopularNames()" }, { "ID": 215, "name": "4.5.2 Call bound primitive function", "rule": "odataRelativeUri", "ruleId": 3, "input": "Customers/Model.MostPopularName()" }, { "ID": 216, "name": "4.5.2 Call bound primitive function", "rule": "odataRelativeUri", "ruleId": 3, "input": "Customers/Model.MostPopularName()/$value" }, { "ID": 217, "name": "4.5.2 Call bound primitive collection function", "rule": "odataRelativeUri", "ruleId": 3, "input": "Customers/Model.MostPopularNames()" }, { "ID": 218, "name": "4.5.2 Call bound primitive collection function", "rule": "odataRelativeUri", "ruleId": 3, "input": "Customers/Model.MostPopularNames()/$count" }, { "ID": 219, "name": "4.6 Addressing a Property - primitive", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(1)/ID" }, { "ID": 220, "name": "4.6 Addressing a Property - complex", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(1)/Address" }, { "ID": 221, "name": "4.6 Addressing a Property - complex path", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(1)/Address/Street" }, { "ID": 222, "name": "4.6 Addressing a Property - complex path with type cast", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(1)/Address/Model.AddressWithLocation/Location" }, { "ID": 223, "name": "4.6 Addressing a Property - stream", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(1)/Thumbnail" }, { "ID": 224, "name": "4.6 Addressing a Property - collection of primitive", "rule": "odataRelativeUri", "ruleId": 3, "input": "Suppliers(1)/EmailAddresses" }, { "ID": 225, "name": "4.6 Addressing a Property - collection of complex", "rule": "odataRelativeUri", "ruleId": 3, "input": "Suppliers(1)/Addresses" }, { "ID": 226, "name": "4.7 Addressing a Property Value", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(1)/ID/$value" }, { "ID": 227, "name": "4.7 Addressing a Property Value - with $format", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(1)/ID/$value?$format=json" }, { "ID": 230, "name": "4.7 Addressing a Property Value - property of complex", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories(1)/Address/Street/$value" }, { "ID": 232, "name": "4.8 Addressing entities - entity set with $count", "rule": "odataRelativeUri", "ruleId": 3, "input": "Products/$count" }, { "ID": 233, "name": "4.8 Addressing entities - entity set with $count", "rule": "odataRelativeUri", "ruleId": 3, "input": "Products/$count?$filter=Price gt 5.00" }, { "ID": 235, "name": "4.8 Addressing entities - entity set navigation with $count", "rule": "odataRelativeUri", "ruleId": 3, "input": "Products(1)/Items/$count" }, { "ID": 236, "name": "4.8 Addressing entities - collection property with $count", "rule": "odataRelativeUri", "ruleId": 3, "input": "Products(1)/Addresses/$count" }, { "ID": 237, "name": "4.8 Addressing entities - collection property with $count", "rule": "odataRelativeUri", "ruleId": 3, "input": "Products(1)/Sizes/$count" }, { "ID": 238, "name": "4.8 Addressing the Count - in $filter with navigation", "rule": "filter", "ruleId": 74, "input": "$filter=Products/$count gt 0" }, { "ID": 239, "name": "4.8 Addressing the Count - in $filter with complex collection", "rule": "filter", "ruleId": 74, "input": "$filter=Addresses/$count gt 0" }, { "ID": 240, "name": "4.8 Addressing the Count - in $filter with primitive collection", "rule": "filter", "ruleId": 74, "input": "$filter=Sizes/$count gt 0" }, { "ID": 241, "name": "4.8 Addressing the Count - in $filter with filtered collection", "rule": "filter", "ruleId": 74, "input": "$filter=Products/$count($filter=Price gt 5.00) gt 2" }, { "ID": 242, "name": "4.8 Addressing the Count - collection navigation property with $count in $orderby", "rule": "orderby", "ruleId": 75, "input": "$orderby=Products/$count" }, { "ID": 243, "name": "4.8 Addressing the Count - collection property with $count in $orderby", "rule": "orderby", "ruleId": 75, "input": "$orderby=Addresses/$count" }, { "ID": 244, "name": "4.8 Addressing the Count - collection property with $count in $orderby", "rule": "orderby", "ruleId": 75, "input": "$orderby=Sizes/$count" }, { "ID": 245, "name": "4.10 Addressing a Member of an Ordered Primitive Collection", "rule": "odataRelativeUri", "ruleId": 3, "input": "Suppliers(1)/EmailAddresses/1" }, { "ID": 246, "name": "4.10 Addressing a Member of an Ordered Complex Collection", "rule": "odataRelativeUri", "ruleId": 3, "input": "MainSupplier/Addresses/0" }, { "ID": 247, "name": "4.10 Addressing a Member of an Ordered Complex Collection with type-cast", "rule": "odataRelativeUri", "ruleId": 3, "input": "Suppliers(1)/Addresses/Model.AddressWithLocation/-1" }, { "ID": 248, "name": "4.11 Inheritance - set of subtypes", "rule": "odataRelativeUri", "ruleId": 3, "input": "Products/Model.BestSellingProduct" }, { "ID": 249, "name": "4.11 Inheritance - set of subtypes, then key access", "rule": "odataRelativeUri", "ruleId": 3, "input": "Products/Model.BestSellingProduct(1)" }, { "ID": 250, "name": "4.11 Inheritance - key access, then cast to subtype", "rule": "odataRelativeUri", "ruleId": 3, "input": "Products(1)/Model.BestSellingProduct" }, { "ID": 252, "name": "4.11 Inheritance - complex type", "rule": "odataRelativeUri", "ruleId": 3, "input": "Products(1)/Address/Model.AddressWithLocation" }, { "ID": 253, "name": "4.11 Inheritance - complex type with property", "rule": "odataRelativeUri", "ruleId": 3, "input": "Products(1)/Address/Model.AddressWithLocation/Street" }, { "ID": 254, "name": "4.11 Inheritance - complex type with property, no namespace", "rule": "odataRelativeUri", "ruleId": 3, "input": "Products(1)/Address/AddressWithLocation/Street" }, { "ID": 255, "name": "4.11 Inheritance - collection of complex type", "rule": "odataRelativeUri", "ruleId": 3, "input": "Products(1)/Addresses/Model.AddressWithLocation" }, { "ID": 256, "name": "4.11 Inheritance - expressions: complex type", "rule": "propertyPathExpr", "ruleId": 134, "input": "Address/Model.AddressWithLocation" }, { "ID": 257, "name": "4.11 Inheritance - expressions: complex type with path", "rule": "propertyPathExpr", "ruleId": 134, "input": "Address/Model.AddressWithLocation/Street" }, { "ID": 258, "name": "4.11 Inheritance - expressions: complex type with path, no namespace", "rule": "propertyPathExpr", "ruleId": 134, "input": "Address/AddressWithLocation/Street" }, { "ID": 259, "name": "4.11 Inheritance - expressions: collection of complex type", "rule": "propertyPathExpr", "ruleId": 134, "input": "Addresses/Model.AddressWithLocation" }, { "ID": 260, "name": "4.11 Inheritance - $expand", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories?$expand=Products/Model.BestSellingProduct" }, { "ID": 261, "name": "4.11 Inheritance - $expand, no namespace", "rule": "odataRelativeUri", "ruleId": 3, "input": "Categories?$expand=Products/BestSellingProduct" }, { "ID": 262, "name": "4.11 Inheritance - $expand", "rule": "odataRelativeUri", "ruleId": 3, "input": "Products?$expand=Model.BestSellingProduct/Sales" }, { "ID": 263, "name": "4.11 Inheritance - $expand, no namespace",