rest api application development -...

52
REST API Application Development SAP Mobile Platform 3.0

Upload: others

Post on 24-Sep-2020

41 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

REST API Application Development

SAP Mobile Platform 3.0

Page 2: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

DOCUMENT ID: DC-01-0300-01LAST REVISED: November 2013Copyright © 2013 by SAP AG or an SAP affiliate company. All rights reserved.No part of this publication may be reproduced or transmitted in any form or for any purpose without the express permission ofSAP AG. The information contained herein may be changed without prior notice.Some software products marketed by SAP AG and its distributors contain proprietary software components of other softwarevendors. National product specifications may vary.These materials are provided by SAP AG and its affiliated companies ("SAP Group") for informational purposes only,without representation or warranty of any kind, and SAP Group shall not be liable for errors or omissions with respect to thematerials. The only warranties for SAP Group products and services are those that are set forth in the express warrantystatements accompanying such products and services, if any. Nothing herein should be construed as constituting an additionalwarranty.SAP and other SAP products and services mentioned herein as well as their respective logos are trademarks or registeredtrademarks of SAP AG in Germany and other countries. Please see http://www.sap.com/corporate-en/legal/copyright/index.epx#trademark for additional trademark information and notices.

Page 3: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Contents

REST API Application Development ....................................1Configuring the Application in the Management

Cockpit .......................................................................2Defining Applications .............................................2Defining Back-end Connections for Native and

Hybrid Apps .......................................................4Defining Application Authentication .......................6Configuring Push on SAP Mobile Platform

Server ................................................................7Developing the Application .............................................8

Authentication Requests ........................................9Creating an Application Connection ......................9Managing Application Settings ............................12Native Push Notification for a Back End ..............15Registering the Client for Native Push

Notification .......................................................22Retrieving a Customization Resource Bundle .....26Accessing a Service Through a Proxy URL .........27

Reference .....................................................................29HTTP Headers and Cookies ................................29Application Connection Properties ......................30Proxy Responses .................................................33Application Connections ......................................33Error Code and Message Format ........................43Download Application Customization Resource

Bundle .............................................................44Proxy Connections ...............................................45CORS Enabled Browser-Based Applications ......46

Index ..................................................................................47

REST API Application Development iii

Page 4: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Contents

iv SAP Mobile Platform

Page 5: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

REST API Application Development

The SAP® Mobile Platform REST Services API enables standard HTTP client applicationsrunning in any platform to access SAP Mobile Platform REST services.

SAP Mobile Platform Server provides REST services so that applications can be built as anystandard HTTP application to leverage SAP Mobile Platform Server for security and pushfeatures among others.

Build client applications using third-party (JavaScript framework and helper libraries)developer tools, native client libraries, or the libraries provided by SAP Mobile PlatformOData SDK (Only iOS and Android platforms). SAP Mobile Platform provides managementand monitoring of the applications, and support for native push notification such as ApplePush Notification service (APNS), BlackBerry Internet/Enterprise Service (BIS/BES),Google Cloud Messaging (GCM), Windows Notification Service (WNS), or Microsoft PushNotification Service (MPNS).

The client application should first register an application connection with device information,such as device type, password capability, and so on. After registering, the application canretrieve and update the application connection settings through the REST API. You can enableor disable the push notification only after registering.

Note: An application connection can be deleted through the REST API, as long as it is not inuse. Any data that is stored by application in the custom string of the application connectionproperties is lost.

To initialize a client application, the application can download resources (such as metadatafiles, multimedia files, and so on.), using the resource bundles service.

After downloading resources, the application can access OData-compatible data sourcesthrough the proxy service, and receive native push notifications triggered by the gateway ifpush properties are configured and enabled.

This development approach supports:

• Registration (creating an application connection)• Authentication• Native push notification• Configuration

For more information on supported REST API application development environment versionsin SAP Mobile Platform 3.0, see http://service.sap.com/pam.

REST API Application Development

REST API Application Development 1

Page 6: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Configuring the Application in the Management CockpitConfigure the application settings in the Management Cockpit. These settings enable you tomonitor and manage your applications.

Prerequisites

• Make sure SAP Mobile Platform Server is installed.• Make sure the server is started.• Launch the Management Cockpit.

Task

Defining ApplicationsCreate a new native, hybrid, or Agentry application definition. The definition enables you tomanage the application using Management Cockpit.

1. In Management Cockpit, select Applications, and click New.

2. In the New Application window, enter:

REST API Application Development

2 SAP Mobile Platform

Page 7: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Field Value

ID Unique identifier for the application in reverse domain notation. Thisis the application or bundle identifier that is defined or generatedduring application development. Reverse domain notation is thepractice of reversing a registered domain name; for example, thereverse domain notation for an object in sap.com might beMyApp.sap.com). The application identifier:

• Must be unique.• Must start with an alphabetic character.• Can contain only alphanumeric characters, underscores (_), and

periods (.).• Must not include spaces.• Can be up to 64 characters long.

Formatting guidelines:• SAP recommends that application IDs contain a minimum of two

dots ("."). For example, this ID is valid: com.sap.mo-bile.app1.

• Application IDs should not start with a dot ("."). For example, thisID is invalid: .com.sap.mobile.app1.

• Application IDs should not include two consecutive dots (".").For example, this ID is invalid: com..sap.mo-bile.app1.

Name Application name. The name:• Can contain only alphanumeric characters, spaces, underscores

(_), and periods (.).• Can be up to 80 characters long.

Vendor (Optional) Vendor who developed the application. The vendor name:• Can contain only alphanumeric characters, spaces, underscores

(_), and periods (.).• Can be up to 255 characters long.

Type Application type.• Native – native iOS and Android applications.• Hybrid – container-based applications, such as Kapsel.• Agentry – metadata-driven application.

Note: You can configure only one Agentry application per SAPMobile Platform Server. Once configured, Agentry no longerappears as an option.

REST API Application Development

REST API Application Development 3

Page 8: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Field Value

Description (Optional) Short description of the application. The description:• Can contain alphanumeric characters.• Can contain most special characters, except for percent signs (%)

and ampersands (&).• Can be up to 255 characters long.

3. Click Save. Application-related tabs appear, such as Back End, Authentication, Push, andso forth. You are ready to configure the application, based on the application type.

Note: These tabs appear in Management Cockpit only after you define or select anapplication. The tabs used differ by application type.

Defining Back-end Connections for Native and Hybrid AppsDefine back-end connections for the selected native or hybrid application.

1. From Management Cockpit, select Applications > Back End, and enter values for theselected application.

Field Value

Connec-tionName

Note: Ap-pears onlywhenadding aconnec-tion underBack-EndConnec-tions.

Identifies the back-end connection by name. The connection name:• Must be unique.• Must start with an alphabetic character.• Can contain only alphanumeric characters, underscores (_), and periods (.).• Must not include spaces.

Endpoint The back-end connection URL, or service document URL the application uses toaccess business data on the back-end system or service. The service document URLis the document destination you assigned to the service in Gateway ManagementCockpit. Typical format:

http://host:port/gateway/odata/namespace/Connec-tion_or_ServiceName...Examples:

http://testapp:65908/help/abc/app1/opg/sdata/TESTFLIGHThttp://vmw3815.wdf.sap.corp:50009/sap/opu/odata/rwfnd/RMTSAMPLE

REST API Application Development

4 SAP Mobile Platform

Page 9: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Field Value

Use Sys-tem Proxy

(Optional) Whether to use system proxy settings in the SAP Mobile Platformprops.ini file to access the back-end system. This setting is typically disabled,because most back-end systems can be accessed on the intranet without a proxy. Thesetting should only be enabled in unusual cases, where proxy settings are needed toaccess a remote back-end system outside of the network. When enabled, this par-ticular connection is routed via the settings in props.ini file.

RewriteURL

(Optional) Whether to mask the back-end URL with the equivalent SAP MobilePlatform Server URL. This is necessary to ensure the client makes all requests viaSAP Mobile Platform Server and directly to the back end. Rewriting the URL alsoensures that client applications need not do any additional steps to make requests tothe back end via SAP Mobile Platform Server. If enabled, the back-end URL isrewritten with the SAP Mobile Platform Server URL. By default, the property isenabled.

Allowanony-mousconnec-tions

(Optional) Whether to enable anonymous access. This means the application usercan access the application without entering a user name and password. However, theback-end system still requires log on credentials to access the data, whether it is aread-only user, or a back-end user with specific roles. If enabled, enter the log oncredential values used to access the back-end system:• User name – supply the user name for the back-end system.• Password – supply the password for the back-end system.

If disabled, you do not need to provide these credentials. By default, the property isdisabled.

Note: If you use Allow Anonymous Connections for a native OData application, donot assign the No Authentication Challenge security profile to the application, or theanonymous OData requests will not be sent (Status code: 401 is reported).

Maxi-mumConnec-tions

The number of back-end connections that are available for connection pooling forthis application. The larger the pool, the larger the number of possible parallel con-nections to this specific connection. The default is 500 connections. Factors to con-sider when resetting this property:• The expected number of concurrent users of the application.• The load acceptable to the back-end system.• The load that the underlying hardware and network can handle.

Note: The maximum connections can be increased only if SAP Mobile PlatformServer hardware can support the additional parallel connections, and if the under-lying hardware and network infrastructure can handle it.

REST API Application Development

REST API Application Development 5

Page 10: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Field Value

Certifi-cate Alias

The name under which the administrator has imported the certificate key-pair in thesmp_keystore file. The alias must be set when the back-end URL ishttps://, and the back-end server requires mutual authentication. There areconditions when https is used but the server does not require a client certificate. Thiscertificate alias is required when the back end requires mutual SSL connectivity. Usethe alias of a certificate stored in the SAP Mobile Platform Server keystore. SAPrecommends that the CN value of the generated certificate be the fully qualifieddomain name of SAP Mobile Platform Server.

2. (Optional) Under Back-end Connections, view additional connections, or add newconnections.

a) Click New, to add additional back-end connections in the server.b) Enter values for the new back-end connection, using the values shown above.c) Click Save. The new connection is added to the list.

Administrator maintains a list of server-level back-end connections (it includes all theconnections in the SAP Mobile Platform Server) and application specific back-endconnections. Application specific back-end connections are the connections enabledfor an application. Users registered to an application can access only these back-endconnections. Request-response to a back end connection that is not enabled for anapplication is not allowed (throws 403, "Forbidden" error).

By default, these additional back-end connections are enabled for an application.

Back-end connection is displayed in the list.

3. Select the Application-specific Connections from the drop-down to show the back-endconnections that are enabled for a particular application.

You can view the Server-level Connections and enable the connections for thisapplication using the checkbox.

Note: Multiple back ends can be authenticated using various options of authenticatingrequests available in security configuration.

Defining Application AuthenticationAssign a security profile to the selected application. The security profile defines parametersfor how the server authenticates the user during onboarding, and request-responseinteractions.

Prerequisites

You must configure security profiles for application authentication before you can completethis step.

REST API Application Development

6 SAP Mobile Platform

Page 11: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Task

1. From Management Cockpit, select Applications > Authentication.

2. Click Existing Profile.

Note: You can also create a new profile.

3. In Name, select a security profile name from the list. The name appears under SecurityProfile Properties, and one or more security providers appear under AuthenticationProviders.

4. Under Security Profile Properties, enter values.

Field Value

Name A unique name for the application authentication profile.

Check Impersonation (Optional) In token-based authentication, whether to allow au-thentication to succeed when the user name presented cannot bematched against any of the user names validated in the loginmodules. To prevent the user authentication from succeeding inthis scenario, the property is enabled by default.

5. Under Authentication Providers, you can select a security profile URL to view its settings.To change its settings, you must modify it through Settings > Security Profiles.

Configuring Push on SAP Mobile Platform ServerYou must explicitly register the application connection using the Management Cockpit.

1. Start the Management Cockpit.

2. Select Applications, and click New.

3. In the New Application window, enter values.

Field Value

ID Unique identifier for the application in reverse domain notation.

Name Application name.

Vendor (Optional) Vendor who developed the application.

Version Application version. Currently, only version 1.0 is supported.

Type Application type.• Native – native iOS and Android applications.• Hybrid – container-based applications, such as Kapsel.• Agentry – metadata-driven applications, such as Agentry.Application configuration options differ depending on your selection.

REST API Application Development

REST API Application Development 7

Page 12: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Field Value

Description (Optional) Short description of the application.

4. Click the Backend tab and configure the endpoint information.

5. Click the Push tab to configure the push settings.

For Android GCM, see Android Push Notifications.

For Apple APNS, see Apple Push Notifications

6. In the settings for your device, enable the app to receive push notifications.

Android Push NotificationsConfigure Android push notifications for the selected application, to enable clientapplications to receive Google Cloud Messaging (GCM) notifications.

1. From Management Cockpit, select Applications > Push.

2. Under Android, enter the access key for API key. This is the access key you obtained foryour Google API project (http://developer.android.com/google/gcm/gs.html).

3. Enter a value for Sender ID. This is the project identifier.

4. (Optional) Configure push notifications for each device type supported.

Apple Push NotificationsConfigure Apple Push Notifications for the selected application, to enable client applicationsto receive APNS notifications.

1. From Management Cockpit, select Applications > Push.

2. Under Apple, select APNS endpoint. "None" is the default endpoint value for all theapplications.

3. Select Sandbox to configure APNS in a development and testing environment, orProduction to configure APNS in a production environment.

a) Click Browse to navigate to the certificate file.b) Select the file, and click Open.c) Enter a valid password.

Note: The default URL is for a production environment; for a development and testingenvironment, change the URL to gateway.sandbox.push.apple.com.

4. (Optional) Configure push notifications for each device type supported.

Developing the ApplicationDevelop your HTTP client application to use the REST Services API to access SAP MobilePlatform REST services.

REST API Application Development

8 SAP Mobile Platform

Page 13: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Authentication RequestsFor all requests that require authentication, send the authentication information to SAPMobile Platform. The credentials depend on the type of security configuration. Credentialsshould be provided in the header.

• Basic authenticationThe user name and password should be valid for the specified authentication URL.• HTTP Header Name: Authorization• HTTP Header Value: Basic <base64 encoded form of username:password>

• SAP SSO authenticationThe user name and password should be valid for the specified ticket-issuing system (TIS)URL.• HTTP Header Name: Authorization• HTTP Header Value: Basic <base64 encoded form of username:password>

• SiteMinder SSO authentication (Client acquires SSO Token)• HTTP Header Name: <value provided for 'Client HTTP Values To Send' in the security

configuration>• HTTP Header Value: actual SMSESSION token

• SiteMinder SSO authentication (SAP Mobile Platform acquires SSO token)The user name and password should be valid for the specified ticket-issuing system(SiteMinder server) URL.• HTTP Header Name: Authorization• HTTP Header Value: Basic <base64 encoded form of username:password>

• Certificate authenticationPrepare a client certificate and get it signed by certification authority (CA) certificate of theserver. The client certificate should be trusted by SAP gateway or any other EIS. Thecertificate then be used to register the client and perform the request-response with theserver.

Creating an Application ConnectionYou must explicitly register the application connection using SAP Mobile Platform.

You can specify customized application properties for the client with the request. Provide theapplication connection ID, X-SMP-APPCID, using an explicit request header or a cookie. Ifthe value is missing, SAP Mobile Platform generates a universally unique ID (UUID), whichis communicated to the device through the response cookie X-SMP-APPCID.

Create an anonymous or authenticated application connection by issuing a POST request tothis URL, including the application connection properties:http[s]://<host:port>/[public/]/odata/applications/{latest|v1}/{appid}/Connections

The URL contains these components:

REST API Application Development

REST API Application Development 9

Page 14: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

• host – the host is defined by host name and should match with the domain registered withSAP Mobile Platform. If the requested domain name does not match, default domain isused..

• port – the port for listening to OData-based requests. By default the port number is 8080.• public – if included, an anonymous connection is allowed.• odata/applications/ – refers to the OData services associated with the application

resources.• {latest|v1} – version of the service document.• appid – name of the application.• Connections – name of the OData collection.

Application connection properties are optional. You can create an application connectionwithout including any application properties.

DeviceType is an application connection property that you may set. Valid values forDeviceType are:

• Android – Android devices.• iPhone – Apple iPhone.• iPad – Apple iPad.• iPod – Apple iPod.• iOS – iOS devices.• Blackberry – Blackberry devices.• Windows – includes desktop or servers with Windows OS, such as Windows XP,

Windows Vista, Windows 7, and Windows Server series OS.• WinPhone8 – includes Windows mobile.• Windows8 – includes Windows desktop version.

Specifying any other value for DeviceType returns a value "Unknown" in theDeviceType column.

Example of creating an application connection

Request:<?xml version="1.0" encoding="UTF-8"?><entry xmlns="http://www.w3.org/2005/Atom" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"> <category term="applications.Connection" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/> <content type="application/xml"> <m:properties> <d:AndroidGcmRegistrationId>398123745023</d AndroidGcmRegistrationId> </m:properties> </content></entry>

REST API Application Development

10 SAP Mobile Platform

Page 15: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Response<?xml version="1.0" encoding="utf-8"?><entry xmlns="http://www.w3.org/2005/Atom" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xml:base="https://<smp base URL>/odata/applications/latest/e2eTest/">

<id>https://<application URL>/odata/applications/latest/e2eTest/Connections('4891dd0f-0735-47cc-a599-76bf8a16d457')</id><title type="text" /><updated>2012-10-19T09:05:25Z</updated><author><name /></author><link rel="edit" title="Connection" href="Connections('4891dd0f-0735-47cc-a599-76bf8a16d457')" /><category term="applications.Connection" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /><content type="application/xml"> <m:properties> <d:ETag>2012-10-19 14:35:24.0</d:ETag> <d:ApplicationConnectionId>4891dd0f-0735-47cc-a599-76bf8a16d457</d:ApplicationConnectionId> <d:AndroidGcmPushEnabled m:type="Edm.Boolean">false</d:AndroidGcmPushEnabled> <d:AndroidGcmRegistrationId>398123745023</d AndroidGcmRegistrationId> <d:AndroidGcmSenderId /> <d:ApnsPushEnable m:type="Edm.Boolean">false</d:ApnsPushEnable> <d:ApnsDeviceToken /> <d:ApplicationVersion>1.0</d:ApplicationVersion> <d:BlackberryPushEnabled m:type="Edm.Boolean">false</d:BlackberryPushEnabled> <d:BlackberryDevicePin m:null="true" /> <d:BlackberryBESListenerPort m:type="Edm.Int32">0</d:BlackberryBESListenerPort> <d:BlackberryPushAppID m:null="true" /> <d:BlackberryPushBaseURL m:null="true" /> <d:BlackberryPushListenerPort m:type="Edm.Int32">0</d:BlackberryPushListenerPort> <d:BlackberryListenerType m:type="Edm.Int32">0</d:BlackberryListenerType> <d:CustomizationBundleId /> <d:CustomCustom1 /> <d:CustomCustom2 /> <d:CustomCustom3 /> <d:CustomCustom4 /> <d:DeviceModel m:null="true" /> <d:DeviceType>Unknown</d:DeviceType> <d:DeviceSubType m:null="true" /> <d:DevicePhoneNumber m:null="true" /> <d:DeviceIMSI m:null="true" /> <d:PasswordPolicyEnabled m:type="Edm.Boolean">false</d:PasswordPolicyEnabled>

REST API Application Development

REST API Application Development 11

Page 16: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

<d:PasswordPolicyDefaultPasswordAllowed m:type="Edm.Boolean">false</d:PasswordPolicyDefaultPasswordAllowed> <d:PasswordPolicyMinLength m:type="Edm.Int32">0</d:PasswordPolicyMinLength> <d:PasswordPolicyDigitRequired m:type="Edm.Boolean">false</d:PasswordPolicyDigitRequired> <d:PasswordPolicyUpperRequired m:type="Edm.Boolean">false</d:PasswordPolicyUpperRequired> <d:PasswordPolicyLowerRequired m:type="Edm.Boolean">false</d:PasswordPolicyLowerRequired> <d:PasswordPolicySpecialRequired m:type="Edm.Boolean">false</d:PasswordPolicySpecialRequired> <d:PasswordPolicyExpiresInNDays m:type="Edm.Int32">0</d:PasswordPolicyExpiresInNDays> <d:PasswordPolicyMinUniqueChars m:type="Edm.Int32">0</d:PasswordPolicyMinUniqueChars> <d:PasswordPolicyLockTimeout m:type="Edm.Int32">0</d:PasswordPolicyLockTimeout> <d:PasswordPolicyRetryLimit m:type="Edm.Int32">0</d:PasswordPolicyRetryLimit> <d:ProxyApplicationEndpoint>http://<backend URL></d:ProxyApplicationEndpoint> <d:ProxyPushEndpoint>http[s]://<host:port>/Push</d:ProxyPushEndpoint> <d:MpnsChannelURI m:null="true" /> <d:WnsChannelURI m:null="true" /></m:properties></content></entry>

CORS SupportCross-domain HTTP requests are requests for resources from a different domain than thedomain of the resource making the request. Cross-Origin Resource Sharing (CORS)mechanism provides a way for web servers to support cross-site access controls, which enablesecure cross-site data transfers.

Managing Application SettingsApplication settings describe the application connection details such as application ID,security configuration, and customization resource.

Getting Application SettingsYou can retrieve application connection settings for the device application instance by issuingthe GET method.

You can retrieve application settings by either explicitly specifying the application connectionID, or by having the application connection ID determined from the call context (that is, fromeither the X-SMP-APPCID cookie or X-SMP-APPCID HTTP header, if specified). On thefirst call, you can simplify your client application code by having the application connectionID determined from the call context, since you have not yet received an application connectionID.

REST API Application Development

12 SAP Mobile Platform

Page 17: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

If you supply an application connection ID, perform an HTTP GET request at:http[s]://<host:port>/[public/]odata/applications/{latest|v1}/{appid}/Connections(‘{appcid}’)

Response

<?xml version='1.0' encoding='utf-8'?><entry xmlns="http://www.w3.org/2005/Atom" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xml:base="https://<smp base URL>/odata/applications/v1/e2eTest/"> <id>http://https://mobilesmpdev.netweaver.ondemand.com/smp/odata/applications/v1/e2eTest/Connections('c9d8a9da-9f36-4ae5-9da5-37d6d90483b5')</id> <title type="text" /> <updated>2012-06-28T09:55:48Z</updated> <author><name /></author> <link rel="edit" title="Connections" href="Connections('c9d8a9da-9f36-4ae5-9da5-37d6d90483b5')" /> <category term="applications.Connection" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> <content type="application/xml"> <m:properties> <d:ETag m:type="Edm.DateTime">2012-06-28T17:55:47.685</d:ETag> <d:ApplicationConnectionId>c9d8a9da-9f36-4ae5-9da5-37d6d90483b5</d:ApplicationConnectionId> <d:AndroidGcmPushEnabled m:type="Edm.Boolean">false</d:AndroidGcmPushEnabled> <d:AndroidGcmRegistrationId m:null="true" /> <d:AndroidGcmSenderId m:null="true" /> <d:ApnsPushEnable m:type="Edm.Boolean">true</d:ApnsPushEnable> <d:ApnsDeviceToken m:null="true" /> <d:ApplicationVersion m:null="true" /> <d:BlackberryPushEnabled m:type="Edm.Boolean">true</d:BlackberryPushEnabled> <d:BlackberryDevicePin>00000000</d:BlackberryDevicePin> <d:BlackberryBESListenerPort m:type="Edm.Int32">5011</d:BlackberryBESListenerPort> <d:BlackberryPushAppID m:null="true" /> <d:BlackberryPushBaseURL m:null="true" /> <d:BlackberryPushListenerPort m:type="Edm.Int32">0</d:BlackberryPushListenerPort> <d:BlackberryListenerType m:type="Edm.Int32">0</d:BlackberryListenerType> <d:CustomCustom1>custom1</d:CustomCustom1> <d:CustomCustom2 m:null="true" /> <d:CustomCustom3 m:null="true" /> <d:CustomCustom4 m:null="true" /> <d:DeviceModel m:null="true" /> <d:DeviceType>Unknown</d:DeviceType> <d:DeviceSubType m:null="true" />

REST API Application Development

REST API Application Development 13

Page 18: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

<d:DevicePhoneNumber>12345678901</d:DevicePhoneNumber> <d:DeviceImsi m:null="true" /> <d:PasswordPolicyEnabled m:type="Edm.Boolean">true</d:PasswordPolicyEnabled> <d:PasswordPolicyDefaultPasswordAllowed m:type="Edm.Boolean">false</d:PasswordPolicyDefaultPasswordAllowed> <d:PasswordPolicyMinLength m:type="Edm.Int32">8</d:PasswordPolicyMinLength> <d:PasswordPolicyDigitRequired m:type="Edm.Boolean">false</d:PasswordPolicyDigitRequired> <d:PasswordPolicyUpperRequired m:type="Edm.Boolean">false</d:PasswordPolicyUpperRequired> <d:PasswordPolicyLowerRequired m:type="Edm.Boolean">false</d:PasswordPolicyLowerRequired> <d:PasswordPolicySpecialRequired m:type="Edm.Boolean">false</d:PasswordPolicySpecialRequired> <d:PasswordPolicyExpiresInNDays m:type="Edm.Int32">0</d:PasswordPolicyExpiresInNDays> <d:PasswordPolicyMinUniqueChars m:type="Edm.Int32">0</d:PasswordPolicyMinUniqueChars> <d:PasswordPolicyLockTimeout m:type="Edm.Int32">0</d:PasswordPolicyLockTimeout> <d:PasswordPolicyRetryLimit m:type="Edm.Int32">20</d:PasswordPolicyRetryLimit> <d:ProxyApplicationEndpointm:null="true" /> <d:ProxyPushEndpoint>http://xxue-desktop:8080/GWC/SMPNotification</d:ProxyPushEndpoint> <d:WnsChannelURI m:null="true" /> <d:MpnsChannelURI m:null="true" /> <d:WnsPushEnable m:type="Edm.Boolean">false</d:WnsPushEnable> <d:MpnsPushEnable m:type="Edm.Boolean">true</d:MpnsPushEnable> </m:properties> </content></entry>

You can also retrieve a property value by appending the property name in the URL. Forexample, to retrieve the ClientLogLevel property value, enter:

http[s]://<host:port>/[public/]odata/applications/{v1|latest}/{appid}/Connections(‘{appcid}’)/ClientLogLevel

Retrieving Changed Settings and Connections MetadataYou can conditionally retrieve only the changed settings and connections metadata.

To retrieve the changed application settings information:http[s]://<host:port>/[public/]odata/applications/{latest|v1}/{appID}/Connections(‘{appcid}’)?If-None-Match=”${ETag}”

The ${ETag} part of the URL is a version identifier included in the response of the GETmethod. If the ETag value of the current application settings is the same as the value includedin the request, a status code 304 without a response body is returned to the client to indicatethat there are no application setting changes.

Note: The query function is not currently supported.

REST API Application Development

14 SAP Mobile Platform

Page 19: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

To retrieve the metadata document of the SAP Mobile Platform Server:http[s]://<host:port>/[public/]odata/applications/{latest|v1}/{appID}/$metadata

To retrieve the service document of the SAP Mobile Platform Server:http[s]://<host:port>/[public/]odata/applications/{latest|v1}/{appID}

Setting or Updating Application SettingsSet or update application settings by issuing a PUT request.

Use the PUT method to update the application settings with all the properties in the request.PUT http[s]://<host:port>/[public/]odata/applications/{latest|v1}/{appid}/Connections(‘{appcid}’)

Use the PUT method to update specified properties. Any properties you do not specify retaintheir current values.http[s]://<host:port>/[public/]odata/applications/{latest|v1}/{appid}/Connections(‘{appcid}’)

The URL contains these components:

• host:port – Hostname and port number of SAP Mobile Platform.• public – If included, an anonymous security configuration is used.• odata/applications/ – Refers to the OData services associated to the application

resources.• {latest|v1} – The version of the service document.• appid – The name of the application.• Connections – The name of the OData collection.• appcid – The application connection ID of the application instance that is interacting with

the service.

Native Push Notification for a Back EndThe SAP Mobile Platform supports native notification for device platforms.

The SAP Mobile Platform uses the native notification mechanisms provided by individualdevice platforms such as APNS, GCM, BIS/BES, WNS, and MPNS to send notifications.Back end systems use the 'Push' REST service to notify the SAP Mobile Platform about anynotification message it has to send to the devices.

Delivery address URL format is:http[s]://<host:port>/Notification/<registration id>

where:

• host:port/Notification can be received from the proxy push endpoint.

REST API Application Development

REST API Application Development 15

Page 20: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

• registration ID is sent to the device when the user registers and connects to the applicationfrom the device.

The notification data can also be sent using URL arguments.

Notification Data Sent Through HTTP HeadersNotification data can be sent by the back end as a generic HTTP headers or as device platform-specific HTTP headers.

The notification URL is:http[s]://<host:port/Notification>/<registration id>

Note: Applications built in SAP Mobile Platform 3.0 and later should adopt the header formatX-SMP-XXX. To maintain backward compatibility, applications built in earlier versions cancontinue to use the header format X-SUP-XXX. However, X-SUP-XXXheaders will beremoved future releases.

• Generic headerThe generic HTTP header is used in the HTTP request to send any notification type such asAPNS, GCM, Blackberry, or WNS.Header format for notification data in SAP Mobile Platform 3.x and later:<X-SMP-DATA>

• APNS-specific headersUse these APNS-specific HTTP headers to send APNS notifications via SAP MobilePlatform:

Header Structure (SAP Mo-bile Platform and later)

Consists of

<X-SMP-APNS-ALERT> A JSON document. You can use this header or other indi-vidual headers listed in this table.

<X-SMP-APNS-ALERT-BODY>

Text of the alert message.

<X-SMP-APNS-ALERT-ACTION-LOC-KEY>

If a string is specified, this header shows an alert with twobuttons: Close and View. iOS uses the string as a key to geta localized string for the correct button title instead of View.If the value is null, the system shows an alert. Clicking OKdismisses the alert.

<X-SMP-APNS-ALERT-LOC-KEY>

Key to an alert-message string in a Localiza-ble.strings file for the current localization.

<X-SMP-APNS-ALERT-LOC-ARGS>

Variable string values to appear in place of the formatspecifiers in loc-key.

REST API Application Development

16 SAP Mobile Platform

Page 21: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Header Structure (SAP Mo-bile Platform and later)

Consists of

<X-SMP-APNS-ALERT-LAUNCH-IMAGE>

File name of an image file in the application bundle. It mayinclude the extension. Used as the launch image when youtap the action button or move the action slider. If this prop-erty is not specified, the system uses on of the following:

• The previous snapshot

• The image identified by the UILaunchImage-File key in the Info.plist file of the applica-

tion

• The Default.png.

<X-SMP-APNS-BADGE> Number that appears as the badge on the application icon.

<X-SMP-APNS-SOUND> Name of the sound file in the application bundle.

<X-SMP-APNS-DATA> Custom payload data values. These values must use theJSON-structured and primitive types, such as dictionary(object), array, string, number, and Boolean.

For additional information about APNS headers, see the Apple Web site: http://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/ApplePushService/ApplePushService.html.

• GCM-specific headersUse these GCM-specific HTTP headers to send GCM notifications:

Header Structure (SAP Mobile Plat-form and later)

Consists of

<X-SMP-GCM-COLLAPSEKEY > An arbitrary string (such as "Updates Availa-ble") that collapses a group of like messageswhen the device is offline, so that only the lastmessage is sent to the client.

Note: If you do not include this header, thedefault value "Updates Available, is used

<X-SMP-GCM-DATA> Payload data, expressed as parameters prefixedwith data and suffixed as the key.

<X-SMP-GCM-DELAYWHILEIDLE> (Optional) Represented as 1 or true for true, anyother value for false, which is the default value.

REST API Application Development

REST API Application Development 17

Page 22: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Header Structure (SAP Mobile Plat-form and later)

Consists of

<X-SMP-GCM-TIMETOLIVE> Time (in seconds) that the message remainsavailable on GCM storage if the device is off-line.

For additional information about GCM headers, see the Android Web site: http://developer.android.com/guide/google/gcm/gcm.html#send-msg.

• BES/BIS-specific headerUse the BlackBerry-specific HTTP header to send BES/BIS notifications:<x-sup-rim-data> or <X-SMP-RIM-DATA>

• WNS specific headerUse these HTTP headers to send Windows 8 desktop and tablet application notifications:

Header Structure (SAP Mobile Plat-form and later)

Consists of

<X-SMP-WNS-DATA> Send payload data to the device as raw notifi-cation. Payload data may also be a binary dataencoded as a Base64-encoded string. Sizeshould not exceed 5KB.

<X-SMP-WNS-ALERT> Text string of the notification, as Tile and Toastnotifications.

<X-SMP-WNS-BADGE> Number that appears as the badge on the appli-cation icon.

• MPNS (Notification for Windows Phone)Use these Windows Phone-specific HTTP headers to send MPNS notifications:

Request Header Structure Consists of

<X-SMP-MPNS-DATA> Send payload data to device as raw notification.Payload data may also be a binary data encodedas a Base64-encoded string. String lengthshould not exceed more than 2900 characters.

<X-SMP-MPNS-ALERT> Text string of the notification, as Tile and Toastnotifications.

<X-SMP-MPNS-BADGE> Number that appears as the badge on the appli-cation icon.

REST API Application Development

18 SAP Mobile Platform

Page 23: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

SAP Gateway Notification SupportThere are no specific handling requirements for sending notifications on the SAP gatewayside. SAP Mobile Platform sends notifications using gateway-specific headers.

The SAP Mobile Platform identifies the device type, based on the device type converts thegateway notification headers into the third-party notification context data for APNS, GCM orBES/BIS,WNS, and MPNS.

Note: Non-SAP gateway back ends also use the headers listed below to send genericnotifications. In this scenario, the backend is unaware of the device platform.

SAP gateway-specific headers that are handled by SAP Mobile Platform for sendingnotifications:

Structure Header Consists of

<x-sap-poke-title> Text of the alert message

<x-sap-poke-entriesofinter-est>

Number that appears as the badge on the appli-cation icon

<x-sap-poke-data> Custom payload data values. These values mustuse the JSON structured and primitive types suchas dictionary (object), array, string, number, andboolean

1. APNSThe SAP Mobile Platform converts the gateway notification headers into APNSnotifications:

Structure Header Consists of

<x-sap-poke-title> Text of the alert message

<x-sap-poke-entriesofinter-est>

Number that appears as the badge on the appli-cation icon

<x-sap-poke-data> Custom payload data values. These values mustuse the JSON structured and primitive typessuch as dictionary (object), array, string, num-ber, and boolean.

2. GCMThe SAP Mobile Platform converts the gateway notification headers into GCMnotifications:

REST API Application Development

REST API Application Development 19

Page 24: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Header Structure Consists of

<x-sap-poke-title> An arbitrary string (such as "Updates Availa-ble") collapses a group of like messages whenthe device is offline, so that only the last mes-sage is sent to the client

<x-sap-poke-data> Payload data. Size should not exceed 4KB

3. BIS/BESThe SAP Mobile Platform converts the gateway notification headers into BIS/BESnotifications:

Structure Header Consists of

<x-sap-poke-data> BES/BIS notification data

4. WNSThe SAP Mobile Platform converts the gateway notification headers into WNSnotifications:

Structure Header Consists of

<x-sap-poke-title> Text of the alert message to be shown on the Tileand Toast notifications

<x-sap-poke-entriesofinter-est>

Number that appears as the badge on the appli-cation icon

<x-sap-poke-data> Custom payload data to be sent to the device asa raw notification

Notification Sent in URL FormatThe notification data can also be sent using URL arguments as part of the SAP MobilePlatform push endpoint, or as the delivery address URL.

All URL arguments (zero to many) are optional. The arguments are converted into APNS/GCM/BES/BIS/WNS/MPNS notifications as explained:http[s]://<host:port/Notification>/<application connection ID>?alert=<alert>&badge=<badge>&sound=<sound>&data=<data in text format>

• APNS

Parameters Description

alert Text of the alert message.

badge Number that appears as the badge on the appli-cation icon.

REST API Application Development

20 SAP Mobile Platform

Page 25: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Parameters Description

sound Name of the sound file in application bundle.

data Custom payload data values. These values mustuse the JSON-structured and primitive types,such as dictionary (object), array, string, num-ber, and boolean.

• GCM

Parameters Description

alert An arbitrary string (such as "Updates Availa-ble") that collapses a group of like messageswhen the device is offline, so that only the lastmessage is sent to the client.

data Payload data, expressed as parameters prefixedwith data and suffixed as the key.

• BIS/BES

Parameters Description

data Notification data

alert Text of the alert message

badge Number that appears as the badge on the appli-cation icon

• WNS

Parameters Description

alert The text of the alert message to be sent as a Tilenotification

badge Number that appears as the badge on the appli-cation icon

data Payload data to be sent

• MPNS (Notification for Windows Phone)

Parameters Description

alert The text of the alert message to be sent as a Tilenotification

REST API Application Development

REST API Application Development 21

Page 26: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Parameters Description

badge Number that appears as the badge on the appli-cation icon

data Payload data to be sent

Based on the data send either in headers or in the URL, corresponding notification is sent tothe device:

Header|Notifica-tion

Tile Notification Toast Notifica-tion

Raw Notification

Alert Yes Yes No

Badge Yes No No

Data No No Yes

Registering the Client for Native Push NotificationEnable native push notifications and register your application to receive push notifications.

Prerequisites

• Configure the registration ID before registering the client for native notifications.• Configure the application to send push notifications.

Registering the Android ClientRegister and enable your Android device clients to receive push notifications.

Prerequisites

• (Administrator) Configure the application for push notification in Management Cockpitby specifying the sender ID and API key.

• Specify the device type should be specified during application connection and registration.• HTTP header must include X-SMP-APPCID and Authorization headers.

Task

1. If AndroidGcmPushEnabled is enabled, sender ID is sent in the response. Onsuccessful onboarding of client, the response indicates the GCM push is enabled.

2. If GCM is enabled and the sender ID is available, client uses that sender ID to register itselfwith GCM and get its unique GCM registration ID.

3. Use the PUT method in the URL, along with the registration ID:http://<host:port>/odata/applications/{latest|v1/}{appid}/Connections/('{appcid}')

REST API Application Development

22 SAP Mobile Platform

Page 27: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Method : PUTHTTP Headers "Content-Type" = "application/atom+xml" and "X-HTTP-METHOD" = "MERGE"Body:<entry xmlns="http://www.w3.org/2005/Atom" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"> <content type="application/xml"> <m:properties> <d:AndroidGcmRegistrationId>{GCM registration ID}</d:AndroidGcmRegistrationId> </m:properties> </content></entry>

Registering the BlackBerry ClientRegister and enable your BlackBerry device clients to receive push notifications.

1. Configure push notification in Management Cockpit. Specify the device type duringapplication connection and registration, and ensure that the HTTP header also includes theX-SMP-APPCID and Authorization headers.

Note: To configure push notifications for BIS, you must import BIS certificate into thesmp_keystore.jks and keystore files in the configuration folder of the SAP MobilePlatform Server.

2. Enable push notifications in the application:a) Update the application connection settings with the BES/BIS registration ID.a) Implement the BlackberryPushListenerPort and

BlackberryDevicePin properties in your application.

Http payload to update the blackberry (BES) device PIN and push port:<?xml version="1.0" encoding="utf-8"?> <entry xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"> <m:properties> <d:BlackberryDevicePin> </d:BlackberryDevicePin> <d:BlackberryBESListenerPort><XXXX></d:BlackberryBESListenerPort> </m:properties></content></entry>

Http payload to update the blackberry (BIS) device PIN and push port:<?xml version="1.0" encoding="utf-8"?> <entry xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">

REST API Application Development

REST API Application Development 23

Page 28: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

<m:properties> <d:BlackberryPushEnabled>true</d:BlackberryPushEnabled> <d:BlackberryDevicePin> </d:BlackberryDevicePin> <d:BlackberryPushAppID></d:BlackberryPushAppID> <d:BlackberryPushBaseURL> </d:BlackberryPushBaseURL> <d:BlackberryPushListenerPort><XXXX></d:BlackberryPushListenerPort> </m:properties></content></entry>

Registering the iOS ClientRegister and enable your iOS device clients to receive push notifications.

1. Configure push notification in Management Cockpit. Specify the device type duringapplication connection and registration.

2. Enable push notifications in the application:

a) To receive the device token, implement theapplication:didRegisterForRemoteNotificationsWithDeviceToken: method in your application delegate.

b) Update the ApnsDeviceToken and DeviceType properties via a PUT request.The HTTP header must also include X-SMP-APPCID and Authorization headers.https://<host:port>/odata/applications/{latest|v1}/{appid}/Connections/('{appcid}')Method : PUTHTTP Headers : "Content-Type" = "application/atom+xml"

Body:<?xml version='1.0' encoding='utf-8'?><entry xmlns="http://www.w3.org/2005/Atom" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xml:base="http://host:port/odata/applications/v1/com.example.IOS/"> <id>https://{application URL}/odata/applications/{latest|v1}/e2eTest/Connections('32552613-470f-45e0-8acc-b7d73d501682')</id> <content type="application/xml"> <m:properties> <d:ApnsDeviceToken>{APNS device token received by the application from APNS}</d:ApnsDeviceToken> <d:DeviceType>iPhone</d:DeviceType> </m:properties> </content></entry>

REST API Application Development

24 SAP Mobile Platform

Page 29: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Registering the Windows 8 (Desktop and Tablet) ClientRegister and enable your Windows 8 (desktop and tablet) devices to receive pushnotifications.

Prerequisites

• Configure Windows push notification in Management Cockpit.• The HTTP header must also include X-SMP-APPCID and Authorization headers.

Task

1. To obtain the channel URI, register the application with WNS. See Push notificationoverview (Windows Store apps) on the Windows Dev Center Web site.

2. Check the WnsPushEnable value returned from the registration, and continue with therest of the WNS or notification registration processing only if the value is true. Set theWnsChannelURI value received from the application.

3. Update the application connection settings with the registration ID:https://host:port/odata/applications/{latest|v1/}{appid}/Connections/('{appcid}')Method : PUTHTTP Headers "Content-Type" = "application/atom+xml" and "X-HTTP-METHOD" = "PUT"Body:<entry xmlns="http://www.w3.org/2005/Atom" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"> <content type="application/xml"> <m:properties> <d:WnsChannelURI>{WNS Channel URI}</d:WnsChannelURI> </m:properties> </content></entry>

Registering the MPNS ClientRegister and enable your Windows phone 8 to receive push notifications.

Prerequisites

• Administrator configures the application for push notification in Management Cockpit.• The HTTP header must also include X-SMP-APPCID and Authorization headers.

Task

1. To obtain the channel URI, register the application with MPNS. See Push notifications forWindows Phone on the Windows Phone Dev center Web site.

REST API Application Development

REST API Application Development 25

Page 30: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

2. Check the MpnsPushEnable value returned from the registration, and continue withthe rest of the MPNS or notification registration processing only if the value is true. Set theMpnsChannelURI value received from the application.

3. Using the ApplicationConnection ID ({appcid}) returned from the SAP Mobile Platformregistration call (in either the X-SMP-APPCID HTTP header or theApplicationConnectionId property), the application should update theMpnsChannelURI property for the application connection for your application by usingthe Channel URI returned by the application:https://host:port/odata/applications/{latest|v1/}{appid}/Connections/('{appcid}')Method : PUTHTTP Headers "Content-Type" = "application/atom+xml" and "X-HTTP-METHOD" = "PUT"Body:<entry xmlns="http://www.w3.org/2005/Atom" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"> <content type="application/xml"> <m:properties> <d:MpnsChannelURI>{MPNS Channel URI}</d:MpnsChannelURI> </m:properties> </content></entry>

Retrieving a Customization Resource BundleRetrieve a customization resource bundle by issuing a GET method.

Application developers can customize and retrieve the resource bundles during development.

Issue the GET method to the following URL:http[s]://<host:port>/[public/] bundles/{appid}/[{resourceBundlename:resourceBundleVersion}]

If the {resourceBundlename:resourceBundleVersion} is specified in theURL, the specified resource bundle is returned in the response body as a stream, otherwise, theresource bundle that is bound to the application is returned. Extension of the resource bundle isprovided in the response header X-BUNDLE-EXTENSION.

If the resource bundle is not found in SAP Mobile Platform, error code 404 is returned. Youcannot issue other HTTP methods (PUT/POST/DELETE) at the above URL.

REST API Application Development

26 SAP Mobile Platform

Page 31: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Accessing a Service Through a Proxy URLAccess your backend or internet-based service through a proxy URL. The URL supports read(HTTP GET), create (HTTP POST), update (HTTP PUT), and delete (HTTP DELETE).

You can specify the customized application properties for the client with the request. Providethe application connection ID, X-SMP-APPCID by using an explicit request header or acookie.

Perform an HTTP request at the following URL:http[s]://<host:port>/[public/]/ApplicationName/{connectionName}

connectionName - connection name of the whitelisted URL.

Note:

• Ensure that all the URLs to be proxied are whitelisted.• If the session is not handled by the client implicitly, you need to handle it explicitly in the

code.

• HTTP GET – Invoke GET request to retrieve the data from the back end through SAPMobile Platform.http[s]://<host:port>/[public/]/ApplicationName/[Collection]

Example:

Request headerX-SMP-APPCID : <Application connection Id recieved in the response of the onboarding xml>Authorization : <Base64 format of username/password>Content-type : <application/atom+xml>X-CSRF-Token: <"Fetch">

Response headerResponse code 200 ok//Response header contains requested data from back end with the below mentioned response headers:x-csrf-token: "value"content-encodingContent-TypeContent-Length

• HTTP POST – Use POST to request the server to accept the data included in the requestmessage body.http[s]://<host:port>/[public/]/ ApplicationName/[Collection]

Example:

Request headerX-SMP-APPCID : <Application connection Id recieved in the response of the onboarding xml>

REST API Application Development

REST API Application Development 27

Page 32: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Content-Type : application/atom+xmlX-Requested-With : XMLHttpRequest X-CSRF-TOKEN : <value of x-csrf-token is recieved as part of GET which needs to be passed here>Authorisation : <Base 64 encoded value of Authorisation>

Response header201 //on successful creation.

• HTTP PUT – Use PUT to update the entry in the back end.http[s]://<host:port>/[public/]/ ApplicationName/[Collection]/<’EntryID’>

Example:

Request headerX-SMP-APPCID : <Application connection Id recieved in the response of the onboarding xml>Content-Type : application/atom+xmlX-CSRF-TOKEN : <value of x-csrf-token is recieved as part of GET which needs to be passed here>Authorisation : < Base 64 encoded value of Authorisation>X-Requested-With : XMLHttpRequest

Response header204 //on successful update.

• HTTP DELETE – Use DELETE to the delete an entry in back end.http[s]://<host:port>/[public/]/ApplicationName/[Collection](EntryID)

Example:

Request headerX-SMP-APPCID : <Application connection Id recieved in the response of the onboarding xml>Authorization : <Base64 format of username/password>Content-type : <application/atom+xml>X-CSRF-TOKEN : <value of x-csrf-token is recieved as part of GET which needs to be passed here>X-Requested-With : XMLHttpRequest

Response header204 //on successful deletion.

Note: No information is returned in case of DELETE request.

REST API Application Development

28 SAP Mobile Platform

Page 33: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

ReferenceDescribes REST API resources.

Note: The examples in the reference section use basic authentication, which you can see in theHTTP header, for example Authorization: Basic Base64-encoded string.

HTTP Headers and CookiesUse HTTP headers and cookies to retrieve application connection information.

Note: In SAP Mobile Platform 3.0, applications should adopt the header format X-SMP-XXX. To maintain backward compatibility, the applications built in earlier version continue touse the header format X-SUP-XXX. However, X-SUP-XXX headers will be removed fromfuture releases.

Cookies are returned by servers in the HTTP response header (Set-Cookie header) andincluded by the HTTP client (for example, a browser) in the subsequent HTTP request header(cookie header). Supported headers are:

• X-SMP-APPCID – communicates the application connection ID as that is generated bythe application from which the request originates, or as issued by the server using the X-SMP-APPCID cookie. The X-SMP-APPCID value has a maximum length of 128characters. If an onboarding request does not include X-SMP-APPCID, the serverautomatically generates a value. The client or application should send this value for allsubsequent requests. If the X-SMP-APPCID value is not sent from the client, allsubsequent request-response interactions result in an 403 Forbidden error.

X-SMP-APPCID is received as a cookie, but the client returns it to the server either as acookie or as a header.

• X-SMP-BACKEND-URL – application can provide the back-end request URL via anX-SMP-BACKEND-URL header while sending the request to SAP Mobile PlatformServer. The server forwards the request to the URL provided in the X-SMP-BACKEND-URL.

If the X-SMP-BACKEND-URL header is present in the request, URL rewrite is disabled.

Note: To avoid errors, ensure that the URL is whitelisted in the server.

• X-SMP-REQUESTID – communicates the request ID as generated by the applicationfrom which the request originates, or as issued by the server that is using the X-SMP-REQUESTID cookie.

REST API Application Development

REST API Application Development 29

Page 34: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Application Connection PropertiesDescribes application connection properties, and indicates whether the properties are read-only or Nullable from the HTTP client.

Note: If you attempt to modify a read-only property, the client application throws thefollowing exception: HTTP 403 - The property "XXX" cannot be updatedby a client application.

Table 1. Application Connection Properties: Uncategorized

Property Name Type Read-only? Is Nullable?

ETag String Yes No

ApplicationConnectio-nId

String Yes No

Table 2. Application Connection Properties: Android Push

Property Name Type Read-only? Is Nullable?

AndroidGcmPushEna-bled

Boolean No No

AndroidGcmRegistra-tionId

String No Yes

AndroidGcmSenderId String Yes Yes

Table 3. Application Connection Properties: Apple Push

Property Name Type Read-only? Is Nullable?

ApnsPushEnable Boolean No No

ApnsDeviceToken String No Yes

Table 4. Application Connection Properties: Application Settings

Property Name Type Read-only? Is Nullable?

CustomizationBund-leId

String Yes Yes

ApplicationVersion String No Yes

ClientSdkVersion String No Yes

REST API Application Development

30 SAP Mobile Platform

Page 35: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Table 5. Application Connection Properties: BlackBerry Push

Property Name Type Read-only? Is Nullable?

BlackberryPushEna-bled

Boolean No No

BlackberryDevicePin String No Yes

BlackberryBESListe-nerPort

Int32 No No

Table 6. Application Connection Properties: Windows Push

Property Name Type Read-only? Is Nullable?

WnsChannelURI String No Yes

WnsPushEnable Boolean No No

Table 7. Application Connection Properties: MPNS Push

Property Name Type Read-only? Is Nullable?

MpnsChannelURI String No Yes

MpnsPushEnable Boolean No No

Table 8. Application Connection Properties: Capabilities

Property Name Type Read-only? Is Nullable?

CapabilitiesPassword-Policy

Boolean No No

Table 9. Application Connection Properties: Custom Settings

Property Name Type Read-only? Is Nullable?

CustomCustom1 String No Yes

CustomCustom2 String No Yes

CustomCustom3 String No Yes

CustomCustom4 String No Yes

REST API Application Development

REST API Application Development 31

Page 36: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Table 10. Application Connection Properties: Device Information

Property Name Type Read-only? Is Nullable?

DeviceModel String No Yes

DeviceType String No Yes

DeviceSubType String No Yes

DevicePhoneNumber String No Yes

DeviceIMSI String No Yes

Table 11. Application Connection Properties: Password Policy

Property Name Type Read-only? Is Nullable?

PasswordPolicyEna-bled

Boolean Yes No

PasswordPolicyDe-faultPasswordAllowed

Boolean Yes No

PasswordPolicyMin-Length

Int32 Yes No

PasswordPolicyDigi-tRequired

Boolean Yes No

PasswordPolicyUpper-Required

Boolean Yes No

PasswordPolicyLo-werRequired

Boolean Yes No

PasswordPolicySpe-cialRequired

Boolean Yes No

PasswordPolicyExpir-esInNDays

Int32 Yes No

PasswordPolicyMinU-niqueChars

Int32 Yes No

PasswordPolicyLock-Timeout

Int32 Yes No

PasswordPolicyRetry-Limit

Int32 Yes No

REST API Application Development

32 SAP Mobile Platform

Page 37: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Table 12. Application Connection Properties: Proxy

Property Name Type Read-only? Is Nullable?

ProxyApplicationEnd-point

String Yes Yes

ProxyPushEndpoint String Yes Yes

Proxy ResponsesProxy responses include all the cookies and headers from the proxied backend.

Application ConnectionsMethods for creating, updating, or reading application connections.

Note: Application connection service is implemented as an OData service and thereforefollows OData standards.

Service DocumentGet the service document for the application connection. Retrieving the service documentallows the client to discover the capabilities and locations of the available collections.

Syntax

Perform an HTTP GET request at the following URL:http[s]://<host:port>/[public/]odata/applications/{v1|latest}/{appid}

Parameters

• appid – The application ID that uniquely identifies the application.

ReturnsReturns a 200 OK status code if successful, and a service document in the response body.

Examples

• Service document – HTTP request header:GET /odata/applications/v1/com.sap.myapp HTTP/1.1Host: smpserver:8080Connection: Keep-AliveUser-Agent: Apache-HttpClient/4.1.3 (java 1.5)Authorization: Basic REVWMDAwMTppbml0aWFs

HTTP response header:HTTP/1.1 200 OKContent-Type: application/xml;charset=utf-8

REST API Application Development

REST API Application Development 33

Page 38: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Expires: Thu, 01 Jan 1970 00:00:00 GMTSet-Cookie: X-SMP-SESSID=97ts80gwhxkc;Path=/Set-Cookie: X-SMP-APPCID=b6d50e93-bcaa-439d-9741-660a3cb56771DataServiceVersion: 1.0Date: Tue, 14 Aug 2012 21:28:55 GMTTransfer-Encoding: chunked

The HTTP response body is a service document that includes two collections named"Connections" and "Endpoints".<?xml version='1.0' encoding='utf-8'?><service xmlns="http://www.w3.org/2007/app" xml:base="http://host:port/appSettings/odata/v1/appid/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app"> <workspace> <atom:title>Default</atom:title> <collection href="Connections"> <atom:title>Connections</atom:title> <collection href="Endpoints"> <atom:title>Endpoints</atom:title> </collection> </workspace> </service>

MetadataGet the metadata document that includes the metadata for the application connection settingsand proxy endpoints.

Metadata documents are based on the OData standard and required for implementingapplication connection services.

SyntaxPerform an HTTP GET request at the following URL:http[s]://<host:port>/[public/]odata/applications/{v1|latest}/{appid}/$metadata

Parameters

• appid – The application ID that uniquely identifies the application.

ReturnsIf successful, returns a 200 OK status code and a metadata document in the response body.

Examples

• Get Metadata – HTTP request header:GET /odata/applications/v1/com.sap.myapp/$metadata HTTP/1.1Host: smpserver:8080Connection: Keep-Alive

REST API Application Development

34 SAP Mobile Platform

Page 39: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

User-Agent: Apache-HttpClient/4.1.3 (java 1.5)Authorization: Basic REVWMDAwMTppbml0aWFs

HTTP response header:HTTP/1.1 200 OKContent-Type: application/xml;charset=utf-8Expires: Thu, 01 Jan 1970 00:00:00 GMTSet-Cookie: X-SMP-SESSID=97ts80gwhxkc;Path=/Set-Cookie: X-SMP-APPCID=b6d50e93-bcaa-439d-9741-660a3cb56771DataServiceVersion: 1.0Date: Tue, 14 Aug 2012 21:32:34 GMTTransfer-Encoding: chunked

HTTP response body (metadata):<?xml version="1.0" encoding="utf-8"?><edmx:Edmx Version="1.0" xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx" xmlns:smp="http://www.sap.com/smp/odata"><edmx:DataServices m:DataServiceVersion="2.0" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"><Schema Namespace="applications" xmlns="http://schemas.microsoft.com/ado/2008/09/edm"><EntityType Name="Connection"> <Key> <PropertyRef Name="ApplicationConnectionId"></PropertyRef></Key> <Property Name="ETag" Type="Edm.String" Nullable="false" sup:ReadOnly="true"></Property> <Property Name="ApplicationConnectionId" Type="Edm.String" Nullable="false" sup:ReadOnly="true"></Property> <Property Name="AndroidGcmPushEnabled" Type="Edm.Boolean" Nullable="false" sup:ReadOnly="false"></Property> <Property Name="AndroidGcmRegistrationId" Type="Edm.String" Nullable="true" sup:ReadOnly="false"></Property> <Property Name="AndroidGcmSenderId" Type="Edm.String" Nullable="true" sup:ReadOnly="true"></Property> <Property Name="ApnsPushEnable" Type="Edm.Boolean" Nullable="false" sup:ReadOnly="false"></Property> <Property Name="ApnsDeviceToken" Type="Edm.String" Nullable="true" sup:ReadOnly="false"></Property> <Property Name="ApplicationVersion" Type="Edm.String" Nullable="true" sup:ReadOnly="false"></Property> <Property Name="BlackberryPushEnabled" Type="Edm.Boolean" Nullable="false" sup:ReadOnly="false"></Property> <Property Name="BlackberryDevicePin" Type="Edm.String" Nullable="true" sup:ReadOnly="false"></Property> <Property Name="BlackberryBESListenerPort" Type="Edm.Int32" Nullable="false" sup:ReadOnly="false"></Property> <Property Name="BlackberryPushAppID" Type="Edm.String" Nullable="true" sup:ReadOnly="true"></Property> <Property Name="BlackberryPushBaseURL" Type="Edm.String" Nullable="true" sup:ReadOnly="true"></Property> <Property Name="BlackberryPushListenerPort" Type="Edm.Int32" Nullable="false" sup:ReadOnly="true"></Property> <Property Name="BlackberryListenerType" Type="Edm.Int32"

REST API Application Development

REST API Application Development 35

Page 40: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Nullable="false" sup:ReadOnly="true"></Property> <Property Name="ConnectionLogLevel" Type="Edm.String" Nullable="true" sup:ReadOnly="true"></Property> <Property Name="CustomizationBundleId" Type="Edm.String" Nullable="true" sup:ReadOnly="true"></Property> <Property Name="CustomCustom1" Type="Edm.String" Nullable="true" sup:ReadOnly="false"></Property> <Property Name="CustomCustom2" Type="Edm.String" Nullable="true" sup:ReadOnly="false"></Property> <Property Name="CustomCustom3" Type="Edm.String" Nullable="true" sup:ReadOnly="false"></Property> <Property Name="CustomCustom4" Type="Edm.String" Nullable="true" sup:ReadOnly="false"></Property> <Property Name="DeviceModel" Type="Edm.String" Nullable="true" sup:ReadOnly="false"></Property> <Property Name="DeviceType" Type="Edm.String" Nullable="true" sup:ReadOnly="false"></Property> <Property Name="DeviceSubType" Type="Edm.String" Nullable="true" sup:ReadOnly="false"></Property> <Property Name="DevicePhoneNumber" Type="Edm.String" Nullable="true" sup:ReadOnly="false"></Property> <Property Name="DeviceIMSI" Type="Edm.String" Nullable="true" sup:ReadOnly="false"></Property> <Property Name="MpnsChannelURI" Type="Edm.String" Nullable="true" sup:ReadOnly="false"></Property> <Property Name="MpnsPushEnable" Type="Edm.Boolean" Nullable="false" sup:ReadOnly="false"></Property> <Property Name="PasswordPolicyEnabled" Type="Edm.Boolean" Nullable="false" sup:ReadOnly="true"></Property> <Property Name="PasswordPolicyDefaultPasswordAllowed" Type="Edm.Boolean" Nullable="false" sup:ReadOnly="true"></Property> <Property Name="PasswordPolicyMinLength" Type="Edm.Int32" Nullable="false" sup:ReadOnly="true"></Property> <Property Name="PasswordPolicyDigitRequired" Type="Edm.Boolean" Nullable="false" sup:ReadOnly="true"></Property> <Property Name="PasswordPolicyUpperRequired" Type="Edm.Boolean" Nullable="false" sup:ReadOnly="true"></Property> <Property Name="PasswordPolicyLowerRequired" Type="Edm.Boolean" Nullable="false" sup:ReadOnly="true"></Property> <Property Name="PasswordPolicySpecialRequired" Type="Edm.Boolean" Nullable="false" sup:ReadOnly="true"></Property> <Property Name="PasswordPolicyExpiresInNDays" Type="Edm.Int32" Nullable="false" sup:ReadOnly="true"></Property> <Property Name="PasswordPolicyMinUniqueChars" Type="Edm.Int32" Nullable="false" sup:ReadOnly="true"></Property> <Property Name="PasswordPolicyLockTimeout" Type="Edm.Int32" Nullable="false" sup:ReadOnly="true"></Property> <Property Name="PasswordPolicyRetryLimit" Type="Edm.Int32" Nullable="false" sup:ReadOnly="true"></Property> <Property Name="ProxyApplicationEndpoint" Type="Edm.String" Nullable="true" sup:ReadOnly="true"></Property>

REST API Application Development

36 SAP Mobile Platform

Page 41: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

<Property Name="ProxyPushEndpoint" Type="Edm.String" Nullable="true" sup:ReadOnly="true"></Property> <Property Name="UploadLogs" Type="Edm.String" Nullable="true" sup:ReadOnly="true"></Property> <Property Name="WnsChannelURI" Type="Edm.String" Nullable="true" sup:ReadOnly="false"></Property> <Property Name="WnsPushEnable" Type="Edm.Boolean" Nullable="false" sup:ReadOnly="false"></Property> </EntityType><EntityContainer Name="Container" m:IsDefaultEntityContainer="true"><EntitySet Name="Connections" EntityType="applications.Connection"></EntitySet></EntityContainer></Schema></edmx:DataServices></edmx:Edmx>

Create Application ConnectionCreate an application connection and initially set the application connection settings. Becauseall application connection settings are optional, the minimal body contains no properties at all.SAP Mobile Platform populates default values as needed.

Syntax

Perform an HTTP POST request at the following URL:http[s]://<host:port>/[public/]/odata/applications/{v1|latest}/{appid}/Connections

Parameters

• appid – The application ID that uniquely identifies the application.

Note: If an application is configured for anonymous access using Management Cockpit,the registration is successful irrespective of wrong or no credentials present in theauthorization header.

Returns

If successful, a 201 Created status code is returned, and the new application connectionsettings are included in the response body.

Examples

• Create application connection – Example HTTP request header:POST /odata/applications/v1/com.sap.myapp/Connections HTTP/1.1Content-Length: 4704Content-Type: application/atom+xml; charset=UTF-8Host: smpserver:8080

REST API Application Development

REST API Application Development 37

Page 42: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Connection: Keep-AliveUser-Agent: Apache-HttpClient/4.1.3 (java 1.5)Authorization: Basic <XXXX>

Example HTTP response header:HTTP/1.1 201 CreatedContent-Type: application/atom+xml;charset=utf-8Expires: Thu, 01 Jan 1970 00:00:00 GMTSet-Cookie: X-SMP-SESSID=<XXXX>;Path=/Set-Cookie: X-SMP-APPCID=<XXXX>Location: http:/smpserver:8080/applications/Connections('b6d50e93-bcaa-439d-9741-660a3cb56771')DataServiceVersion: 1.0Date: Mon, 13 Aug 2012 22:40:50 GMTTransfer-Encoding: chunked

Response body:<?xml version="1.0" encoding="UTF-8"?><entry xml:base="http://localhost:8080/public/odata/applications/v1/com.sap.myapp/"xmlns="http://www.w3.org/2005/Atom" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"> <content type="application/xml"> <m:properties> </m:properties> </content></entry>

Get Application SettingsGet the application settings.

Syntax

Perform an HTTP GET request at the following URL:http[s]://<host:port>/[public/]odata/applications/{v1|latest}/{appid}/Connections(‘{appcid}’)

Parameters

• appid – The application ID that uniquely identifies the application.• appcid – The application connection ID of the application instance interacting with the

service.

Returns

If successful, returns a 200 OK status code and an HTTP response body with the applicationsettings.

REST API Application Development

38 SAP Mobile Platform

Page 43: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Examples

• Get application settings – HTTP request header:GET /odata/applications/v1/com.sap.myapp/Connections('b6d50e93-bcaa-439d-9741-660a3cb56771') HTTP/1.1Cookie: X-SMP-APPCID=<XXXX>; X-SMP-SESSID=<XXXX> Host: smpserver:8080Connection: Keep-AliveUser-Agent: Apache-HttpClient/4.1.3 (java 1.5)Authorization: Basic <XXXX>

HTTP response header:HTTP/1.1 200 OKContent-Type: application/atom+xml;charset=utf-8Expires: Thu, 01 Jan 1970 00:00:00 GMTSet-Cookie: X-SMP-APPCID=<XXXX>DataServiceVersion: 1.0Date: Mon, 13 Aug 2012 22:56:50 GMTTransfer-Encoding: chunked

HTTP response body:

<?xml version="1.0" encoding="UTF-8"?>-<entry xml:base="http://10.53.138.170:8080/odata/applications/latest/G3T/"xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom"><id>http://10.53.138.170:8080/odata/applications/latest/G3T/Connections<XXXX></id><title type="text"/><updated>2013-11-07T09:15:17Z</updated><author><name/></author><link title="Connection" href="Connections('xxxx')" rel="edit"/><category scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" term="applications.Connection"/><content type="application/xml"><m:properties> <d:ETag>2013-11-07 14:44:43.0</d:ETag><d:ApplicationConnectionId>xxxx</d:ApplicationConnectionId> <d:AndroidGcmPushEnabled m:type="Edm.Boolean">false</d:AndroidGcmPushEnabled> <d:AndroidGcmRegistrationId m:null="true"/><d:AndroidGcmSenderId/> <d:ApnsPushEnable m:type="Edm.Boolean">true</d:ApnsPushEnable> <d:ApnsDeviceToken m:null="true"/> <d:ApplicationVersion>1.0</d:ApplicationVersion> <d:BlackberryPushEnabled m:type="Edm.Boolean">false</d:BlackberryPushEnabled> <d:BlackberryDevicePin m:null="true"/> <d:BlackberryBESListenerPort m:type="Edm.Int32">0</d:BlackberryBESListenerPort> <d:BlackberryPushAppID m:null="true"/>

REST API Application Development

REST API Application Development 39

Page 44: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

<d:BlackberryPushBaseURL m:null="true"/> <d:BlackberryPushListenerPort m:type="Edm.Int32">0</d:BlackberryPushListenerPort> <d:BlackberryListenerType m:type="Edm.Int32">0</d:BlackberryListenerType> <d:ConnectionLogLevel>NONE</d:ConnectionLogLevel> <d:CustomizationBundleId m:null="true"/><d:CustomCustom1/><d:CustomCustom2/><d:CustomCustom3/><d:CustomCustom4/> <d:DeviceModel m:null="true"/> <d:DeviceType>Unknown</d:DeviceType> <d:DeviceSubType m:null="true"/> <d:DevicePhoneNumber m:null="true"/> <d:DeviceIMSI m:null="true"/> <d:MpnsChannelURI m:null="true"/> <d:MpnsPushEnable m:type="Edm.Boolean">true</d:MpnsPushEnable> <d:PasswordPolicyEnabled m:type="Edm.Boolean">false</d:PasswordPolicyEnabled> <d:PasswordPolicyDefaultPasswordAllowed m:type="Edm.Boolean">false</d:PasswordPolicyDefaultPasswordAllowed> <d:PasswordPolicyMinLength m:type="Edm.Int32">8</d:PasswordPolicyMinLength> <d:PasswordPolicyDigitRequired m:type="Edm.Boolean">false</d:PasswordPolicyDigitRequired> <d:PasswordPolicyUpperRequired m:type="Edm.Boolean">false</d:PasswordPolicyUpperRequired> <d:PasswordPolicyLowerRequired m:type="Edm.Boolean">false</d:PasswordPolicyLowerRequired> <d:PasswordPolicySpecialRequired m:type="Edm.Boolean">false</d:PasswordPolicySpecialRequired> <d:PasswordPolicyExpiresInNDays m:type="Edm.Int32">0</d:PasswordPolicyExpiresInNDays> <d:PasswordPolicyMinUniqueChars m:type="Edm.Int32">0</d:PasswordPolicyMinUniqueChars> <d:PasswordPolicyLockTimeout m:type="Edm.Int32">0</d:PasswordPolicyLockTimeout> <d:PasswordPolicyRetryLimit m:type="Edm.Int32">20</d:PasswordPolicyRetryLimit><d:ProxyApplicationEndpoint>http://vmw3815.wdf.sap.corp:50009/sap/opu/sdata/iwfnd/RMTSAMPLEFLIGHT/</d:ProxyApplicationEndpoint><d:ProxyPushEndpoint>http://INLC50802847A:8080/Notification</d:ProxyPushEndpoint><d:UploadLogs>false</d:UploadLogs><d:WnsChannelURI m:null="true"/><d:WnsPushEnable m:type="Edm.Boolean">false</d:WnsPushEnable></m:properties></content></entry>

Get Application Settings (Property)Get the specific property value for a property from the application settings.

REST API Application Development

40 SAP Mobile Platform

Page 45: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Syntax

Perform an HTTP GET request at the following URL:http://<host:port>/[public/]odata/applications/{v1|latest}/{appid}/Connections(‘{registrationID}’)/<property-name>

Parameters

• appid – The application ID that uniquely identifies the application.• registrationID – The registration ID of the application instance that is interacting with the

service.• property-name – The property-name can be appended to the URL to retrieve the value of

a specific property.

Returns

If successful, returns a 200 OK status code and an HTTP response body with the applicationsettings.

Examples

• Get the DeviceType property – HTTP request:GET /odata/applications/v1/com.sap.myapp/Connections('b6d50e93-bcaa-439d-9741-660a3cb56771')/DeviceType HTTP/1.1Cookie: X-SMP-APPCID=b6d50e93-bcaa-439d-9741-660a3cb56771; X-SMP-SESSID=97ts80gwhxkc Host: smpserver:8080Connection: Keep-AliveUser-Agent: Apache-HttpClient/4.1.3 (java 1.5)Authorization: Basic REVWMDAwMTppbml0aWFs

HTTP response header:HTTP/1.1 200 OKContent-Type: application/xml;charset=utf-8Expires: Thu, 01 Jan 1970 00:00:00 GMTSet-Cookie: X-SMP-APPCID=<XXXX>DataServiceVersion: 1.0Date: Mon, 13 Aug 2012 23:00:27 GMTTransfer-Encoding: chunked

HTTP response body:<?xml version='1.0' encoding='utf-8'?><d:DeviceType>iPhone</d:DeviceType>

Update Application Settings (PUT)Update the application settings with all the properties in the request.

Any properties that you do not specify (and that can be changed) are set to the default value.

REST API Application Development

REST API Application Development 41

Page 46: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

SyntaxPUT http[s]://<host:port>/[public/]odata/applications/{v1|latest}/{appid}/Connections(‘{registrationID}’)

Parameters

• appid – The application ID that uniquely identifies the application.• registrationID – The registrationID of the application instance that is interacting with the

service.

Returns

When processing a PUT request, SAP Mobile Platform returns a 200 status code to indicatesuccess, and there is no response body.

If you have not explicitly registered the client, PUT request returns a 404 status code.

Examples

• Update application settings (PUT) – HTTP request header:PUT /odata/applications/v1/com.sap.myapp/Connections('<XXXX>') HTTP/1.1Cookie: X-SMP-APPCID=<XXXX>; X-SMP-SESSID=<XXXX> Content-Length: 4744Content-Type: application/atom+xml; charset=UTF-8Host: smpserver:8080Connection: Keep-AliveUser-Agent: Apache-HttpClient/4.1.3 (java 1.5)Authorization: Basic <XXXX>

[PUT HTTP request message body]

HTTP response header:HTTP/1.1 200 OKExpires: Thu, 01 Jan 1970 00:00:00 GMTSet-Cookie: X-SMP-APPCID=<XXXX>DataServiceVersion: 1.0Date: Mon, 13 Aug 2012 23:07:51 GMTContent-Length: 0

Delete Application ConnectionDelete an application connection.

Syntax

Perform an HTTP DELETE request at the following URL:http[s]://<host:port>/[public/]odata/applications/{v1|latest}/{appid}/Connections(‘{appcid}’)

REST API Application Development

42 SAP Mobile Platform

Page 47: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Parameters

• appid – The application ID that uniquely identifies the application.• appcid – The application connection ID of the application instance interacting with the

service.

Returns

If successful, returns a 200 OK status code.

If you never explicity registered the client, returns a 404 status code.

Examples

• Delete application connection – HTTP request:DELETE /odata/applications/v1/com.sap.myapp/Connections('b6d50e93-bcaa-439d-9741-660a3cb56771') HTTP/1.1Cookie: X-SMP-APPCID=<XXXX>; X-SMP-SESSID=<XXXX> Host: smpserver:8080Connection: Keep-AliveUser-Agent: Apache-HttpClient/4.1.3 (java 1.5)Authorization: Basic <XXXX>

HTTP response:HTTP/1.1 200 OKExpires: Thu, 01 Jan 1970 00:00:00 GMTSet-Cookie: X-SMP-APPCID=<XXXX>DataServiceVersion: 1.0Date: Mon, 13 Aug 2012 23:19:42 GMTContent-Length: 0

Error Code and Message FormatThe server returns different formats for error codes and messages according to different"Accept" values in request headers.

Table 13. Accept Header and Data Format

Type andFormat

Accept Header Values Sample Response Body

XML application/xml, application/xhtml+xml, application/atom+xml

<html><head><title>"message string"</title</head><body><h1>"error code" - "error string".</h1>"<p><b>message string</b> <u>errorstring</u></p><p><b>description</b> <u>errormessage</u></p><h3>"text string"</h3></body></html>

REST API Application Development

REST API Application Development 43

Page 48: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Type andFormat

Accept Header Values Sample Response Body

JSON application/json, text/json { "error": {"code": "403", "message": {"lang":"en-US", "value": "some specific error textstring" } } }

TEXT text/html, text/plain "some specific error text string"

Note: If the Accept header does not include any of these data types, the response body is null.

Download Application Customization Resource BundleDownload the customization resource bundle.

Note: If you add multiple resource bundles and no resource is specified in the URL, the oneindicated as default considered as the default resource bundle.

SyntaxPerform an HTTP GET request at the following URL:http[s]://<host:port>/[public/] bundles/{appid}/[{resourceBundleName:Version}]

Parameters

• resourceBundleName – Optionally specifies a resource bundle to be returned.• Version – Version of the resource bundle.

Returns

If you specify the {resourceBundleName} in the URL, the specified resource bundle isreturned in the response body as a stream. Otherwise, the resource bundle that is bound to theapplication is returned.

If the resource bundle is not found, error code 404 is returned. You cannot issue other HTTPmethods (PUT/POST/DELETE) at the URL labels parameters shown in syntax.

Examples

• Download – HTTP request:GET /bundles/com.sap.myapp/MyApp:1.0 HTTP/1.1Cookie: X-SMP-APPCID=<XXXX>; X-SMP-SESSID=<XXXX>Host: smpserver:8080Connection: Keep-AliveUser-Agent: Apache-HttpClient/4.1.3 (java 1.5)Authorization: Basic <XXXX>

HTTP response:

REST API Application Development

44 SAP Mobile Platform

Page 49: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

HTTP/1.1 200 OKExpires: Thu, 01 Jan 1970 00:00:00 GMTSet-Cookie: X-SMP-APPCID=<XXXX>Transfer-Encoding: chunked

[resource bundle content]

Proxy ConnectionsMethods for accessing proxy connections.

Access External ServiceSAP Mobile Platform Server can also be used to access OData services that are provided byany external OData provider. The proxy URL supports read (HTTP GET), create (HTTPPOST), update (HTTP PUT), and delete (HTTP DELETE).

Syntax

Perform an HTTP request at the following URL:http[s]://<host:port>/[public/]/[connectionName]

Parameters

• connectionName – connection name of the whitelisted URL

Note: If an application is configured for anonymous access, the request-response is madeusing the same user credentials provided in "Allow anonymous connections" field fordefining the backend connection in Management Cockpit.

Returns

If successful, returns a response from the back end and a response body.

Examples

• Access external service – HTTP request header:GET /com.sap.myapp HTTP/1.1Cookie: X-SMP-APPCID=<XXXX>; X-SMP-SESSID=<XXXX> Host: smpserver:8080Connection: Keep-AliveUser-Agent: Apache-HttpClient/4.1.3 (java 1.5)Authorization: Basic <XXXX>

HTTP response header:HTTP/1.1 200 OKContent-Type: application/atomsvc+xmlExpires: Thu, 01 Jan 1970 00:00:00 GMTSet-Cookie: X-SMP-APPCID=<XXXX>server: SAP NetWeaver Application Server / ABAP 731dataserviceversion: 2.0

REST API Application Development

REST API Application Development 45

Page 50: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

set-cookie: SAP_SESSIONID_DG1_001=<Some-Token>; path=/set-cookie: MYSAPSSO2=<SSO-Token>; path=/; domain=.sap.comContent-Length: 2651

CORS Enabled Browser-Based ApplicationsCross-Origin Resource Sharing (CORS) is a specification that allows scripts from one domainto make requests to another domain.

When a browser-based application, such as a JavaScript or jQuery application, sends a requestto a domain other than the one it is hosted in, it is called a cross domain request. All validCORS requests are accompanied by an origin header, which is added automatically by thebrowser. SAP Mobile Platform can handle all the received CORS requests.

The response headers that are added to all valid CORS requests received by SAP MobilePlatform include:

• Access-Control-Allow-Origin – origin value as specified in the request header.• Access-Control-Allow-Credentials – when set to true, enables credential requests and

requests accompanied with cookies.• Access-Control-Expose-Headers – to include any custom header in the application, the

list of exposed headers must be set as the value in this header.

Note: If the backend does not explicitly specify Access-Control-Expose-Headers, SAPMobile Platform adds all response headers (except for simple HTTP headers and set-cookie header) to this header value, allowing the browser application to access all theheaders from the backend response.

In case of a pre-flight (HTTP OPTIONS) request, SAP Mobile Platform adds these headers tothe response:

• Access-Control-Allow-Methods – Based on the request URL:

• POST for onboarding URL• GET, PUT, DELETE for application settings URL• GET for resource bundle URL• Value of Access-Control-Request-Method header for all other URLs

• Access-Control-Allow-Headers – Access-Control-Request-Headers header value asspecified in request.

• Access-Control-Max-Age – the time period for which the browser caches the results ofthe pre-flight request is by default, 3600 seconds.

Browser Restrictions with CORS

• Internet Explorer versions 9 and earlier do not support CORS-enabled browser-basedapplications.

• Safari supports Document Object Model (DOM) parsing with restrictions.

REST API Application Development

46 SAP Mobile Platform

Page 51: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

IndexAAPNS 24Apple 24applications

configuring applications 2creating an application definition 2

authenticationapplication, defining 6

BBlackBerry devices 23browser-based applications 46

Cconfiguring applications 2CORS 46creating an application definition 2creating application endpoint URL 4creating back-end connection 4customization 44

Ddefining

application authentication 6downloading 44

Eerror code 43

error message 43

G

gateway notification 19

I

iOS devices 24

N

native push notifications 24, 25

R

resource bundles 44

S

Safari 46

W

windows devices 25

X

X-SMP-APPCID 23

Index

REST API Application Development 47

Page 52: REST API Application Development - Sybaseinfocenter.sybase.com/help/topic/com.sybase.infocenter.dc01993.03… · REST API Application Development The SAP® Mobile Platform REST Services

Index

48 SAP Mobile Platform