Requests, Responses, and Contexts This part of the reference describes the OpenIG object model. The top-level objects are request, response, and contexts. Attributes — context for arbitrary information Description Provides a map for arbitrary context information. This is one of the contexts described in Contexts(5). Properties "attributes": map Map of arbitrary information where the keys are strings, and the values are objects. This is never null. Javadoc org.forgerock.services.context.AttributesContext Client — HTTP client context information Description Provides information about the client sending the request. This is one of the contexts described in Contexts(5). Properties "certificates": array List of X.509 certificates presented by the client If the client does not present any certificates, OpenIG returns an empty list. This is never null. "isExternal": boolean True if the client connection is external. "isSecure": boolean True if the client connection is secure. "localAddress": string The IP address of the interface that received the request "localPort": number The port of the interface that received the request "remoteAddress": string The IP address of the client (or the last proxy) that sent the request "remotePort": number The source port of the client (or the last proxy) that sent the request "remoteUser": string The login of the user making the request, or null if unknown This is likely to be null unless you have deployed OpenIG with a non-default deployment descriptor that secures the OpenIG web application. "userAgent": string The value of the User-Agent HTTP header in the request if any, otherwise null Javadoc org.forgerock.services.context.ClientContext Contexts — HTTP request contexts Description The root object for request context information. Contexts is a map of available contexts, which implement the Context interface. The contexts map’s keys are strings and the values are context objects. A context holds type-safe information useful for processing requests and responses. The contexts map is populated dynamically when creating bindings for evaluation of expressions and scripts. All context objects have the following properties: "contextName": string Name of the context. "id": string Read-only string uniquely identifying the context object. "rootContext": boolean True if the context object is a RootContext (has no parent). "parent": Context object Parent of this context object. Properties The contexts object provides access to the following contexts: "attributes": AttributesContext object Arbitrary state information. OpenIG can use this to inject arbitrary state information into the context. See also Attributes(5). "client": ClientContext object Information about the client making the request. See also Client(5). "router": UriRouterContext object Routing information associated with the request. See also UriRouterContext(5). "session": SessionContext object Session context associated with the remote client. See also Session(5). Javadoc org.forgerock.services.context.Context Request — HTTP request Description An HTTP request message. Properties "method": string The method to be performed on the resource. Example: "GET". "uri": object The fully-qualified URI of the resource being accessed. Example: "http://www.example.com/resource.txt". See also URI(5). "version": string Protocol version. Example: "HTTP/1.1". "headers": object Exposes message header fields as name-value pairs, where name is header name and value is an array of header values. "cookies": object Exposes incoming request cookies as name-value pairs, where name is cookie name and value is an array of string cookie values. "form": object Exposes query parameters and/or application/x-www-form-urlencoded entity as name-value pairs, where name is the field name and value is an array of string values. "entity": object The message entity body (no accessible properties). Javadoc org.forgerock.http.protocol.Request Response — HTTP response Description An HTTP response message. Properties "cause": Exception object The cause of an error if the status code is in the range 4xx-5xx. Possibly null. "status": Status object The response status. For details, see Status(5). "version": string Protocol version. Example: "HTTP/1.1". "headers": object Exposes message header fields as name-value pairs, where name is header name and value is an array of header values. "entity": object The message entity body (no accessible properties). Javadoc org.forgerock.http.protocol.Response Session — HTTP session context Description Provides access to the HTTP session context. This is one of the contexts described in Contexts(5). Properties "session": map Provides access to the HTTP session, which is a map. Session attributes are name-value pairs, where both keys and value are strings. Javadoc org.forgerock.http.session.SessionContext Status — HTTP response status Description Represents an HTTP response status. For details, see RFC 7231: HTTP/1.1 Semantics and Content. Properties "code": integer Three-digit integer reflecting the HTTP status code. "family": enum Family Enum value representing the class of response that corresponds to the code: Family.INFORMATIONAL Status code reflects a provisional, informational response: 1xx. Family.SUCCESSFUL The server received, understood, accepted and processed the request successfully. Status code: 2xx. Family.REDIRECTION Status code indicates that the client must take additional action to complete the request: 3xx. Family.CLIENT_ERROR Status code reflects a client error: 4xx. Family.SERVER_ERROR Status code indicates a server-side error: 5xx. Family.UNKNOWN Status code does not belong to one of the known families: 600+. "reasonPhrase": string The human-readable reason-phrase corresponding to the status code. For details, see RFC 7231: HTTP/1.1 Semantics and Content. "isClientError": boolean True if Family.CLIENT_ERROR. "isInformational": boolean True if Family.INFORMATIONAL. "isRedirection": boolean True if Family.REDIRECTION. "isServerError": boolean True if Family.SERVER_ERROR. "isSuccessful": boolean True if Family.SUCCESSFUL. Javadoc org.forgerock.http.protocol.Status URI — Uniform Resource Identifier Description Represents a Uniform Resource Identifier (URI) reference. Properties "scheme": string The scheme component of the URI, or null if the scheme is undefined. "authority": string The decoded authority component of the URI, or null if the authority is undefined. Use "rawAuthority" to access the raw (encoded) component. "userInfo": string The decoded user-information component of the URI, or null if the user information is undefined. Use "rawUserInfo" to access the raw (encoded) component. "host": string The host component of the URI, or null if the host is undefined. "port": number The port component of the URI, or null if the port is undefined. "path": string The decoded path component of the URI, or null if the path is undefined. Use "rawPath" to access the raw (encoded) component. "query": string The decoded query component of the URI, or null if the query is undefined. Use "rawQuery" to access the raw (encoded) component. "fragment": string The decoded fragment component of the URI, or null if the fragment is undefined. Use "rawFragment" to access the raw (encoded) component. Javadoc org.forgerock.http.MutableUri Router — HTTP request routing context information Description Provides context information related to HTTP request routing. This is one of the contexts described in Contexts(5). Properties "matchedUri": string The portion of the request URI that matched the URI template. "originalUri": URI The original target URI for the request, as received by the web container. The value of this field is read-only. "remainingUri": string The portion of the request URI that is remaining to be matched. "uriTemplateVariables": map An unmodifiable Map where the keys and values are strings. The map contains the parsed URI template variables keyed on the URI template variable name. Javadoc org.forgerock.http.routing.UriRouterContext Expressions Release Levels and Interface Stability