SIF Message Parameters

Enabling exchanges of service consumer-issued requests and service provider-issued responses, including events, in a secure and robust manner, over a SIF-conformant REST transport layer, is the primary function of any SIF API. Every message exchanged has any of the following elements, provided by the sender that specifies the source of the message and the security, destination and context information. In REST, these element are carried over HTTP(S) and may carry any of the following value:

  • A payload: Typically in XML or JSON format.

  • Fields in an HTTP header (name of HTTP parameter is case-insensitive as per HTTP specification)

  • Matrix parameters in a request URL (located after the last URL path segment only; name of matrix parameter is case-sensitive as per HTTP specification)

Example: https://…/students;zoneId=SchoolABC (will return students of zone ‘SchoolABC’)

  • URL query parameters in a request URL (after the '?'; name of URL query parameter is case-sensitive as per HTTP specification).

Example: https://…/students?changesSinceMarker=xyz

The table below lists all defined HTTP headers, matrix parameters and URL query parameter as defined in the SIF API specification. While the list is extensive, most parameters are optional and/or have a default value. Please refer to the Open API specification of each locale's SIF API for details on which parameter can/must be used for a specific request/response.

Standard HTTP Headers

The HTTP standard defines a rich set of HTTP Headers. The SIF APIs utilises them as intended by the HTTP specification. It is important to note that the table below doesn’t list all these HTTP headers. It may list some of the more common HTTP headers for the purpose of indicating their intended use within the SIF API, especially if they are mandatory (e.g. authorization HTTP header). If a HTTP header defined by the HTTP standard is not listed in the table below, it doesn’t imply it cannot be used. As per SIF specification any HTTP header conveyed in any SIF API is passed to the endpoint provider in case of a HTTP response or the the endpoint consumer in case of a HTTP response.

Parameter Details Summary

The request, response, and event columns use the standard SIF characteristics:

O: Optional
M: Mandatory (required)
C: Conditional (see explanation column for details)

The conveyed column uses the following abbreviations:

H: HTTP Header
Q: URL Query Parameter
M: URL Matrix Parameter

When more than one conveyance is utilized or a conditional is indicated, see the explanation for details of its use.

Parameter Name

Req.

Resp.

Event

Convey

Explanation

Parameter Name

Req.

Resp.

Event

Convey

Explanation

accept

O

 

 

HQ

Used to indicate when the format that is expected in the response (ex: application/json).

If omitted, may also be indicated by including an extension in the URL’s path (ex: “.json”).

Otherwise results will be conveyed using the default, application/xml.

accept-encoding

C

 

C

H

Indicate what payload encoding is accepted in the response. Valid values are: identity (not compressed) or gzip (compressed).

access_token

MC

 

 

Q

The token used to authenticate the sender of the message, authorizing the requested action.

Usually the token/hash value of the Authorization header.

This query parameter is only required when the Authorization header is not set or another authentication standard is leveraged.

applicationId

M

 

 

Q

A unique Id for an application in regards to the Data Privacy Enforcer service. It is important to note that this is different to the ApplicationKey (see below) which is used for authorization.

applicationKey

MC

 

 

HQ

If the Application Key is not contained in the Authorization header, then this header must convey this key together with the authentication.

The consumer may choose to convey this value in either place, so providers must honor it in either place.

authenticatedUser

OC

 

 

H

Set to the users identification (depending on the authentication used) when verified by the middleware.  The receiving Service Provider can trust this field by confirming the middleware’s credentials.

authenticationMethod

MC

 

 

Q

The identifier for the authentication method used.

Note:  Placing basic access authentication information in a URL query parameter is highly unsecure and should not be used in any production systems.

Unless otherwise specified the prefix from the Authorization header is used:  SIF_HMACSHA256/Bearer/Basic

authorization

MC

 

MC

H

Used to authenticate the Consumer and is the basis for determining whether the Consumer has the necessary authorization to issue the Request or publish the Event.

When conveyed in URL Query Parameters, access_token and authenticationMethod are used.

changesSinceMarker

OC

OC

 

HQ

Request: URL Query Parameter. Only required if a changes since request is performed.

Response: HTTP Header. Only required if the request had the changesSinceMarker as a URL query parameter and no paging is used or paging is used, but the first page is requested.

connectionId

MC

 

 

H

Identifies the established connection over which the next message in the Queue is being requested and delivered.  This must be a unique unsigned integer ranging in value from 0 to one less than the current value of maxConcurrentConnections.

Must be included only when the consumer utilizes multiple connections to the same queue.

content-encoding

C

C

C

H

Indicate the payload encoding. Valid values are: identity (not compressed) or gzip (compressed).

See also:  accept-encoding

content-Type

MC

M

M

HQ

Tells the receiver how to parse the body of the message.

Supported generally, however SIF data models are generally conveyed with types  application/json or application/xml (default).

Must be conveyed whenever a body is present.

May be omitted in a request. In that case the mime type is either:

  • The mime type indicated on the URL (i.e. .json)

  • XML if not defined on the URL or the HTTP Header

See also:  Accept

contextId

O

 

O

HM

The “context” of the service provided.  The range of possible Context token values for a given Object or Functional type Service is defined by either or both the Data Model which the Environment is supporting, and the administrators of the Zone.

If not provided, it will default to DEFAULT.

This is carried as a matrix URL parameter in Requests, but is conveyed as an HTTP Header field on Events

See also:  relativeServicePath

contractId

O

 

 

Q

Used in conjunction with the Data Privacy Enforcer Service. It allows to specify a specific contract that is in place between two parties and what exact filer rules apply.

dataPrivacyMarker

OC

 

OC

H

If privacy services are in place and enforced then of the respective adapter must include this HTTP header in each request or event.

deleteMessageId

OC

 

 

M

The ID of the last message received and processed by the Queue Owner.

Only used when making Query Requests to the Queue Service Instance when deleting a previously retrieved message from the queue.

environmentURI

 

OC

 

H

May be returned by the environment provider where the environment is pre-provisioned.

eventAction

 

 

M

H

The specific type of Event being reported:  CREATE/UPDATE/DELETE

fingerprint

MC

 

MC

H

Unique environment identifier that can be safely shared with others.  In order not to compromise security it MUST NOT match the environment’s refId, sessionToken, userToken, or applicationKey.

Further details about usage if the fingerprint can be found on the Functional Service & API page.

generatorId

O

 

O

H

The optional identification token of the “generator” of this request or event (ex: the administrative clerk who entered in the data that was responsible for generating a Create request).

messageId

O

M

M

H

UUID that uniquely identifies the message that carries it.

messageType

O

M

M

H

One of: EVENT/REQUEST/RESPONSE/ERROR

If not provided, it will default to REQUEST.

methodOverride

MC

 

 

H

HTTP PUT:

Included in an HTTP PUT message when it is conveying a multiple delete request, since an HTTP DELETE is not allowed to have a payload.  Valid values are DELETE or UPDATE.

HTTP POST:

Included in an HTTP POST message when it is conveying a QBE request because the HTTP GET is not allowed to have a payload.  Valid values are GET (QBE) or POST (Create).

mustUseAdvisory

O

 

 

HQ

Informs the Service Provider that if the "suggested" RefId in the Request cannot be assigned to the new object, the Request should be rejected. Valid values are true and false. Used in Create requests to Object Services.

navigationCount

 

O

 

H

The total number of objects in the set of results generated by the initial Paged Query that is associated with the returned navigationId.

navigationId

MC

O

 

H

Identifies state maintained in the Service Provider for the Consumer issuing the Paged Query Request. If returned, the Consumer must supply the navigationId value when requesting subsequent Pages of that object type from that Service Provider.

This should not happen when queryIntention is set to NO-CACHING or ONE-OFF.

navigationLastPage

 

O

 

H

Included as an aid for the Consumer in detecting when to stop issuing Paged Query Requests.

navigationPage

O

MC

 

HQ

The number of the Page to be returned. If it is outside the range of results (which does not constitute an error) an HTTP Response with a code of 204 (No Content) will be returned. The first page is indicated with the value 1 (i.e. navigationPage=1).

navigationPageSize

MC

MC

 

HQ

This is included in every Paged Query Request, and indicates the number of Objects to be returned in the corresponding Response Page. If the Page Size specified is too large for the Service or Environments Provider to supply, an Error with code 413 (Response too large) will be returned.

When contained in the Response, it indicates the actual number of objects on the returned Page.

Order

O

 

 

Q

Orders the result set by one or more specified elements and directions. For example, [name/nameOfRecord/familyName=ascending;name/nameOfRecord/givenName=descending]. See discussion in Section 5.8.

partyId

M

 

 

Q

A unique Id for an party in regards to the Data Privacy Enforcer service. Aparty can be an organisation, district, state, jurisdiction etc.

podId

O

 

 

H

The unique ID (UUID) of the POD that was applied to a payload. The Data Privacy Enforcer service may set this HTTP header.

podVersion

OC

 

 

H

The POD version of the POD that was applied to a payload. The Data Privacy Enforcer service may set this HTTP header. If this HTTP header is provided it is expected that the podId HTTP header is also set.

queryIntention

O

 

 

H

If the Consumer intends to follow up with further Paged Queries after this one, this field must be included in the Paged Query Request.

Valid values are:  ALL/ONE-OFF/NO-CACHING

ALL:  The Consumer intends to come back for the remaining pages of data. It is expected that the provider would return a navigationId HTTP Header in this case.

ONE-OFF:  The Consumer intends to make only this query, however the results may come from a cached source.

NO-CACHING:  The Consumer needs the data returned as it currently exists in the provider’s data store.

It is a “hint” to the Service Provider that maintaining Consumer state (and supplying a navigationId) would be advantageous.

When not provided the default value is ONE-OFF.

queueId

MC

 C

 

H

Contains the identity of one of the Consumer’s assigned Queues to which the delayed Response or Job Object Events from the Service Provider related to this request must be routed. If a service provider is in true delayed mode then the consumer’s queueuId must be provided in each response to the response connector.

See also:  requestType, jobId

role

O

 

 

Q

A role name in regards to the Data Privacy Enforcer service. It is expected that this is used inconjunction with the applicationId (see further up) to further tie down privacy rules to a particular application role (e.g. teacher, student). Depending on the role different privacy rules may apply.

relativeServicePath

 

MC

 

H

Replicates all information contained in the segments of the Request URL following the Request Connector.  This could include the Service name, eXtended Query Template name or Service Path defining the payload format, and any accompanying URL matrix parameters (Context and Zone).

URL Query parameters are included.

The Environment Provider places it into all delayed Responses (and would therefore not be supplied by a Service Provider in a Brokered Architecture), as an aid to stateless Consumers.

 It is optional for immediate Responses.

Example: /StudentPersonals

replacement

 

 

O

H

Set to FULL (current values of all object elements) or PARTIAL (only elements whose values have changed)

If not set, it is defaulted to PARTIAL.

requestId

MC

MC

 

H

Only required for delayed Requests.

A Consumer specified “token” that uniquely identifies every delayed Request issued by the Consumer.  It could be as simple as a monotonically increasing integer.   Used to correlate the delayed (asynchronous) Response with the original Request.   It could be as simple as a monotonically increasing integer.

requestAction

O

 

 

H

Indicates what the request is trying to do.

Defaults:

  • POST:  CREATE

  • PUT:  UPDATE

  • DELETE:  DELETE

  • GET:  QUERY

  • HEAD:  HEAD

requestType

O

 

 

H

One of IMMEDIATE or DELAYED.  If not set, it defaults to IMMEDIATE.

responseAction

 

M

 

H

This must exactly match the requestAction value contained in the HTTP header of the Request being responded to. 

Valid values are:  CREATE/UPDATE/DELETE/QUERY/HEAD

serviceName

 

 

M

H

The name of the data object collection being conveyed in the event.

serviceType

O

O

O

H

One of:  UTILITY/OBJECT/FUNCTIONAL/SERVICEPATH/XQUERYTEMPLATE/SERVICE.

If not provided, it will default to OBJECT

serviceSubType

O

O

O

H

If a service is for an admin directive rather than the actual base service then this HTTP header must be set to ‘adminDirective’.

If not provided it must be assumed that the request, response or event is intended for the base service.

sourceName

MC

 

 

H

The applicationKey is added by Brokered Architecture to all Requests before forwarding to the Service Provider.

Used by the Service Provider in Brokered Architectures when issuing an Alert concerning an erroneous Request.

timestamp

MC

M

M

HQ

Date / Time of Event creation (in ISO-8601 format which is also used as the basis of xs:dateTime)

If not need for authentication, may be omitted in the request.

If needed, only for requests this value may be provided as a URL query parameter instead of a header.

vary

 

O

 

H

This standard HTTP Header can be set by the provider to indicate that it supports compression. It would only be set if the consumer or broker calls the provider with uncompressed payloads where the provide could deal with compression. In such a case the HTTP header vary would take the following value:

Vary: Accept-Encoding

Where

O

 

 

Q

A restricted XPATH expression that qualifies which among the set of all objects supplied by the Provider will satisfy the query and be returned.

zoneId

MC

 

M

HM

Indicates the Zone the Request should be routed to.  It is a token that must have a value which:

  • Is unique from any other Zone ID

  • Identifies an entry in the Zone Registry if that Registry Service is present.

If not specified in the Consumer’s Request, the Request Connector will insert the Consumer’s “Default” Zone ID (assigned to the Consumer when it initially created its Environment).   

This is normally carried as a matrix URL parameter in Requests, but conveyed as an HTTP Header field on Events.

[name matches eXtended Query Template parameter]

MC

 

 

Q

Supplies value to a parameter of the eXtended Query template whose token is in the last URL segment of the Query Request.