2.2.7.2.3 RetrieveComplexType Request
The purpose of the RetrieveComplexType request is to enable the value of a ComplexType property on an EntityType instance to be retrieved by a client. AtomPub, as specified in [RFC5023], does not define operations on subcomponents of an entry resource. As such, this request type is not based on an AtomPub-defined [RFC5023] request.
A RetrieveComplexType request MUST use the HTTP GET method and the URI specified in the HTTP request line MUST be a valid data service URI that identifies a ComplexType property on an EntityType instance, as specified in URI Format: Resource Addressing Rules (section 2.2.3).
If the RetrieveComplexType request was successful, the response MUST have a 200 status code as specified in [RFC2616]. The payload of such a response MUST be formatted using XML, JSON, or Verbose JSON, according to the rules defined in Complex Type (section 2.2.6.5.1), Complex Value ([ODataJSON4.0] section 7.2), and Complex Type (section 2.2.6.3.4), respectively.
If the RetrieveComplexType request is not successful (for example, an error occurred while processing the request), the response MUST be formatted according to Error Response (section 2.2.8.1).
The syntax of a RetrieveComplexType request is defined as follows:
-
retrieveCT-Req = retrieveCT-ReqLine retrieveCT-ReqHeaders CRLF retrieveCT-ReqLine = "GET" SP entityTypeInstanceCTPropertyUri retrieveCT-QueryOps SP HTTP-Version CRLF retrieveCT-ReqHeaders = [DataServiceVersion] ; see section 2.2.5.3 [MaxDataServiceVersion] ; see section 2.2.5.7 [If-None-Match] ; see section 2.2.5.6 [Accept] ; see section 2.2.5.1 *(HTTP-Header-Types) entityTypeInstanceCTPropertyUri = <Any Resource Path identifying a ComplexType property on an Entity Type instance> ; see section 2.2.3 and section 2.2.3.5 -- URI3 retrieveCT-QueryOps = ["?" (customQueryOption / formatQueryOp) *("&" customQueryOption)] ; see section 2.2.3.1 & section 2.2.3.6.1.5
The syntax of a response to a successful RetrieveComplexType request is defined as follows:
-
retrieveCT-Resp = Status-Line ; see [RFC2616] section 6.1.1 retrieveCT-RespHeaders CRLF retrieveCT-RespBody retrieveCT-RespHeaders = DataServiceVersion ; see section 2.2.5.3 [ETag] ; see section 2.2.5.4 *(HTTP-Header-Types) retrieveCT-RespBody = <Complex value formatted by using JSON as per [ODataJSON4.0] section 7.2> / <ComplexType property value formatted by using XML as per section 2.2.6.5.1> /(begin-object quotation-mark "d" quotation-mark name-seperator (entityCTInVJson end-object) ; see section 2.2.6.3.4