# RESTful Application Development Guide

# WAP Push

## Operation

The RESTful WAP Push interface allows an application to send a WAP Push message. The content of the message is coded as a PAP message. The message payload must adhere to the following:

- WAP Service Indication Specification, as specified in Service Indication Version 31-July-2001, Wireless Application Protocol WAP-167-ServiceInd-20010731-a.
- WAP Service Loading Specification, as specified in Service Loading Version 31-Jul-2001, Wireless Application Protocol WAP-168-ServiceLoad-20010731-a.
- WAP Cache Operation Specification, as specified in Cache Operation Version 31-Jul-2001, Wireless Application Protocol WAP-175-CacheOp-20010731-a.

See http://www.openmobilealliance.org/tech/affiliates/wap/wapindex.html for links to the specifications.

Note: | The actual message is sent as an HTTP attachment. See Attachments for more information.

In the listing below, bold indicates a required attribute, <> a descriptive comment.

Note: | An HTML version of this information is at `http://host:port/rest/push_message/index.html` where host and port depend on the Oracle Communications Services Gatekeeper installation.

### Send Push Message

Sends a WAP Push message.

#### Request

##### URI

`http://host:port/rest/push_message/messages`

##### Request Content-Type

multipart/form-data

##### Message Part Name

messagePart

##### Message Part Content-Type

application/json

##### Message Part Content

`{`

`` `"destinationAddresses"``: ["String"],`<An array of terminal addresses. The addresses should be formatted according to the Push Proxy Gateway Service Specification (WAP-249-PPGService-20010713-a)>

`` `"pushId"``: "String",`<A unique id provided by the application. Supported types are PLMN and USER>

`` `"replaceMethod"``: "all|pending-only",`<Defines how to replace a previously sent message. Used in conjunction with the `replacePushId` parameter. Ignored if `replacePushId` is NULL.>

`` `"requesterID"``: "String",`<The application ID as given by the operator>

`` `"serviceCode"``: "String",`<A code for charging purposes>

`"additionalProperties": [{`<Name-value pairs. Used to add additional properties. Supported types include pap.priority, pap.delivery-method, pap.network, pap.network-required, pap.bearer, pap.bearer-required.>

`` `"name"``: "String",`<The property’s name>

`` `"value"``: "String"`<The value associated with the property>

`}],`

`"deliverAfterTimestamp": "Calendar",`<Specifies the date and time in ISO 8601 extended format after which the content should be delivered to the wireless device. If the network node does not support this parameter, the message is be rejected.>

`"deliverBeforeTimestamp": "Calendar",`<Defines the date and time in ISO 8601 extended format by which the content must be delivered to the end-user terminal .If the network node does not support this parameter, the message is rejected.>``

`"progressNotesRequested": "Boolean",`<If true, the application wants to receive progress notes at the address specified by `resultlNotificationEndpoint`>

`"replacePushId": "String",`<The `PushId` of the message that is to be replaced. If this is set to NULL, the message is treated as a new message. If this is set to an ID, message replacement will occur for all currently pending messages. Already delivered messages cannot be cancelled, and therefore cannot be replaced>

`"resultNotificationEndpoint": "URI",`<The endpoint for notifications. This should be a channel name that begins: “/bayeux/${appInstanceId}”. If this is set, result notifications are requested. If the application does not want notifications, this must be NULL>

`"sourceReference": "String"`<The name of the service provider>

`}`

##### HTTP Method

POST

#### Response

##### Response Content-Type

application/json

##### Body

{`"result"`: {

`"pushId"`: "String",<A unique id provided by the application>

`"result"`: {

`"code"`: "String",<An outcome code generated by the network node. See Table 13-1 for more information>

`"description"`: "String"<A textual description>

},

"additionalProperties": [{

`"name"`: "String",<One of a set of supported additional properties: pap.stage|pap.note|pap.time>

`"value"`: "String"<The value for the additional property>

}],

"replyTime": "Calendar",<The date and time in ISO 8601 extended format >

"senderAddress": "String",<The sender’s address>

"senderName": "String"<The sender’s name>

}}

Table 13-1 Outcome codes
Code | Description
--- | ---
1000 | OK
1001 | Accepted for processing
2000 | Bad request
2001 | Forbidden
2002 | Address error
2003 | Address not found
2004 | Push ID not found
2005 | Capabilities mismatch
2006 | Required capabilities not supported
2007 | Duplicate push ID
2008 | Cancellation not possible
3000 | Internal server error
3001 | Not implemented
3002 | Version not supported
3003 | Not possible
3004 | Capability matching not possible
3005 | Multiple addresses not supported
3006 | Transformation failure
3007 | Specified delivery method not possible
3008 | Capabilities not available
3009 | Required network not available
3010 | Required bearer not available
3011 | Replacement not supported
4000 | Service failure
4001 | Service unavailable

#### Error Response

Service Exception

Policy Exception

## Notifications

The content of notifications delivered to the designated endpoint.

### Result Notification Message

`{"resultNotificationMessage": {`

`` `"address"``: "String",`<The terminal address for this message>

`` `"code"``: "String",`<Final status of the message>

`` `"messageState"``: "rejected|pending|delivered|undeliverable|expired|aborted|timeout|cancelled|unknown",`<State of the message>

`` `"pushId"``: "String",`<Defined in the intial request. Used for correlation>

`"additionalProperties": [{`<Name-value pairs. Used to add additional properties. Supported types include pap.priority, pap.delivery-method, pap.network, pap.network-required, pap.bearer, pap.bearer-required. Dependent on network node.>

`` `"name"``: "String",`<The property’s name>

`` `"value"``: "String"`<The value associated with the property>

`}],`

`"description": "String",`<A description of the notification, provided by the network. May not be provided.>

`"eventTime": "Calendar",`<The date and time the message reached the destination terminal in ISO 8601 extended format >

`"receivedTime": "Calendar",`<The date and time the message was received at the network node in ISO 8601 extended format >

`"senderAddress": "String",`<Address of the network node. May not be present>

`"senderName": "String"`<Name of the network node. May not be present>

`}}`

## Errors

The content of possible error messages.

### Service Exception

{`"error"`:{

`"type":`" com.bea.wlcp.wlng.schema.ews.common.ServiceException"

`"message"`:"String"

}}

### Policy Exception

{`"error"`:{

`"type"`:" com.bea.wlcp.wlng.schema.ews.common.PolicyException"

`"message"`:"String"

}}