apg-js-examples
Version:
Examples of using the suite of apg-js applications and libraries.
1,995 lines (1,994 loc) • 166 kB
JSON
{
"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",