4.2.11 Retrieve a Single Entity Exposing a Function by Using the Verbose JSON Format

The following example illustrates the exchange of messages that is required for a client to retrieve a Customer entity with EntityKey value equal to "ALFKI" by using the Verbose JSON format. The server indicates that the returned Customer allows a function (TopTenOrders) to be invoked against it. Functions are supported only in the OData 3.0 protocol.

Request:

 GET /service.svc/Customers('ALFKI') HTTP/1.1
 Host: host
 Accept: application/json;odata=verbose
 DataServiceVersion: 1.0
 MaxDataServiceVersion: 3.0

Response:

 HTTP/1.1 200 OK
 Date: Fri, 12 Dec 2008 17:17:11 GMT
 Content-Type: application/json;odata=verbose
 Content-Length: nnn
 ETag: W/"X'000000000000FA01'"
 DataServiceVersion: 3.0
  
 {"d":
  { 
    "__metadata": { 
        "uri": "Customers(\'ALFKI\')",
         "type": "SampleModel.Customer",
        "etag": "W/\"X\'000000000000FA01\'\""
         "properties" : {
            "Orders" : {
               "associationuri" : "Customers(\'ALFKI\')/SampleModel.Customer/$links/Orders",
            }
        },
        "functions" : {
            "SampleEntities.TopTenOrders" : [{
                "title" : "Get Top Ten Orders for this Customer",
                "target" : "Customers(\'ALFKI\')/SampleEntities.TopTenOrders"
            }]
        }
    },  
    "CustomerID": "ALFKI", 
    "CompanyName": " Alfreds Futterkiste", 
    "Address": { "Street": "57 Contoso St", "City": "Seattle",
      "Location": {
        "crs": {
          "type": "name",
          "properties": { "name": "EPSG:4326" }
        },
        "type": "Point", "coordinates": [-127.9324, 49.2345]
      }
    },
    "Version": "AAAAAAAA+gE=",
    "Orders":  { "__deferred": { "uri": "Customers(\'ALFKI\')/SampleModel.Customer/Orders" } }
  }
 }