Top Banner
ACCESS Doc 12_010 Subscriber Profile Web Service API Tutorial Meeting Information Meeting Name and Number ACCESS#12 Date 16 December 2008 Location London Document Information Document Author(s) Anders Lundqvist, Oracle Document Creation Date 15 December 2008 Approval This document is for: Discussion X Information only Security Classification Confidential GSMA Full Members X Confidential GSMA Group Members X Document Summary This document contains the tutorial for Subscriber Profile Web Service. Document History Date Version Author / Comments © GSMA 2008. The GSM Association (“Association”) makes no representation, warranty or undertaking (express or implied) with respect to and does not accept any responsibility for, and disclaims liability for the accuracy or completeness or timeliness of the information contained in this document. The information contained in this document may be subject to change without prior notice. This document has been classified according to the GSMA Document Confidentiality Policy . GSMA meetings are conducted in full compliance with the GSMA Antitrust Policy .
31

ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

Apr 04, 2015

Download

Documents

amitnarwani
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

document.doc Page 1 of 25

ACCESS Doc 12_010

Subscriber Profile Web Service API Tutorial

Meeting Information

Meeting Name and Number ACCESS#12

Date 16 December 2008

Location London

Document Information

Document Author(s) Anders Lundqvist, Oracle

Document Creation Date 15 December 2008

Approval

This document is for: Discussion X

Information only

Security Classification

Confidential GSMA Full Members X

Confidential GSMA Group Members X

Document SummaryThis document contains the tutorial for Subscriber Profile Web Service.

Document HistoryDate Version Author / Comments

© GSMA 2008. The GSM Association (“Association”) makes no representation, warranty or undertaking (express or implied) with respect to and does not accept any responsibility for, and disclaims liability for the accuracy or completeness or timeliness of the information contained in this document. The information contained in this document may be subject to change without prior notice. This document has been classified according to the GSMA Document Confidentiality Policy. GSMA meetings are conducted in full compliance with the GSMA Antitrust Policy.

Page 2: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

GSMA 3rd Party AccessSubscriber Profile Web Service API Tutorial

document.doc Page 2 of 25

Page 3: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

1 SCOPE..........................................................................................................51.1 WHO SHOULD USE THIS TUTORIAL? 51.2 DEPENDENCIES AND PREREQUISITES 5

2 SUBSCRIBER PROFILE WEB SERVICE ACCESS API OVERVIEW.........62.1 EXAMPLE USE CASES 62.2 SUBSCRIBER PROFILE API 62.2.1 Bindings................................................................................................................62.2.2 Method Summary: getProfile()..............................................................................62.2.3 Method Summary: setProfile()..............................................................................72.2.4 Method Summary: getProfileProperty()................................................................82.2.5 Method Summary: setProfileProperty()................................................................9

3 WSDL DEFINITION....................................................................................11

4 WORKFLOW..............................................................................................124.1 VERIFICATION PROCESS 124.2 SANDBOX TEST ENVIRONMENT 124.3 ACCESSING THE LIVE MESSAGING SERVICES 13

5 EXCEPTIONS.............................................................................................14

6 SAMPLE JAVA APPLICATION CODE......................................................15

7 QUESTIONS AND FEEDBACK.................................................................17

8 HISTORY....................................................................................................18

APPENDIX – WSDL FILES.................................................................................19GSMA_SUBSCRIBER_PROFILE_SERVICE_1_0.WSDL 19GSMA_SUBSCRIBER_PROFILE_INTERFACE_1_0.WSDL 20PARLAYX_SUB_PROFILE_TYPES_3_0.WSDL 23PARLAYX_COMMON_FAULTS_2_1.WSDL 24parlayx_common_types_2_1.xsd 24

document.doc Page 3 of 25

Page 4: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

References

1. GSMA 3rd Party Access Project, https://gsma.securespsite.com/access/entry/default.aspx

2. GSMA TWS Developer Portal, <insert url>

3. Open Mobile Alliance, www.openmobilealliance.org

4. Java, java.sun.com

5. Eclipse IDE, www.eclipse.org

6. Apache Axis, ws.apache.org/axis

Terms and Abbreviations

API Application Programming Interface

GSM Global System for Mobile communications

GSMA GSM Association

MDN Mobile Directory Number

Parlay An industry consortium seeking to develop a common application interface for telecommunications. Note: when used to refer to APIs ‘Parlay’ refers to the base APIs defined by the former Parlay Group now part of Open Mobile Alliance. For more information go to the OMA Web site [ref 3].

Parlay X A set of telecommunications Web services defined by the former Parlay Group now part of Open Mobile Alliance. For more information go to the OMA Web site [ref 3].

REST REpresentational State Transfer

RI Reference Implementation

SMS Short Message Service

URL Uniform Resource Locator

WSDL Web Services Definition Language

document.doc Page 4 of 25

Page 5: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

1 ScopeThis tutorial details the GSMA Access API definition for the Subscriber Profile Web Service. It provides an overview of the API, the WSDL for the service, information on how to use the API including sample code, and also the verification and access workflow.

GSMA Access is an initiative to provide a standard API to allow mobile (and other network) operators to expose useful network information and capabilities to Web application developers. It aims to reduce the effort and time needed to create applications and content that is portable across mobile operators.

The GSMA Access API is intended to complement existing client- and server-side APIs by providing the missing piece: access to network capabilities and information regardless of operator.

For a full list of APIs please got to the GSMA 3 rd Party Access Project website [ref 1].

1.1 Who should use this tutorial?

The intended audience is Web application developers wishing to access the subscriber profile capabilities exposed by mobile operators via a common lightweight API; the GSMA Access API.

1.2 Dependencies and Prerequisites

The consumer of this API must be authenticated according to the GSMA 3rd Party Access API authentication process. Please see the authentication section of the “Start using the APIs” <insert link to relevant page>.

To gain verification and access to both sandbox subscriber profile services, the user must register at the GSMA TWS Developer Portal. Go to <insert link to GSMA TWS Developer Portal> [ref 2] and register as follows. To access live networks <TBD need to be defined>:

Click on the Register tab, fill in your details and click Submit.

A confirmation screen will appear, if the details are correct, click Submit, if not click Edit and update as necessary.

An email will be sent to your email address to verify your registration. Click on the link in the email to validate your email address. You will receive an email saying that the account is pending.

Once the email is validated you will receive a further email and also an SMS stating that you can log in using the username and password you registered.

Go to the portal and click on the Login link in the top right-hand corner. Enter your username and password.

document.doc Page 5 of 25

Page 6: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

2 Subscriber Profile Web Service Access API OverviewThe Subscriber Profile Web Service Access API is provided to allow applications to read and optionally update data in Subscriber Profiles within an operator. Typical cases are to validate that a Subscriber is adult or not roaming.

2.1 Example Use Cases

1. Age ValidationAlice like to look at a Mobile TV show for adults containing horrifying scenes. The provider uses the subscriber profile API to check that Alice owing the subscription is adult.

2. Commercial messageA provider of information to Opt In customers used MMS and SMS for the delivery. In the case a subscriber is in the home network MMS is used but if the subscriber is roaming SMS is used avoiding extra charges. The service provider used Subscriber Profile to chec if the subscriber is roaming before pushing the message.

3. Validation of identity and paymentService Provider are selling goods to a Subscriber, using the Phone number to send invoice. Service Provider validates that Subscriber address is know and validated and that there has not been any previous invoice issues.

4. MoodService Providers can read and set the mood of the subscriber. Typically can a Subscriber via a Service Provider or portal change the mood. Other Service Providers can read the current mood via the Subscriber Profile and use that to send specific messages or to avoid. Moods can be typically: Happy, Sad, Alone, Going for Party, Open for contact, Like to be alone, etc.

2.2 Subscriber Profile API

The Subscriber Profile API allows you to get and optionally set Subscriber Profile data. The getProfile(), setProfile(), getProfileProperty() and setProfileProperty() services are based on ideas created for the Parlay X standard [ref 3], but so far not standardized. The used set of methods are a subset of that proposed standard's functionality.

2.2.1 Bindings

This tutorial is for the Subscriber Profile Web Services API, no RESTful API is planned for Subscriber Profile

2.2.2 Method Summary: getProfile()

The getProfile() method is used to read all data in a specific Subscriber Profile that the calling Service Provider as access rights for. A successful request results in a set of property attributes being returned.

.

Request: getProfileThe input message is derived from the proposed Parlay X standard definition.

Parameter Name Type Optional DescriptionsubscriberID xsd:string Mandatory Defines the Subscriber identity. This is a string field

and is dependent of the operator/country. Typically this

document.doc Page 6 of 25

Page 7: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

can be a tel URI (IETF RFC 3966). ProfileID xsd:string Mandatory Defines which profile to read for the defined

Subscriber. This is a string and the profile names are depending on the operator.

Response: getProfileThe output message adheres to the proposed Parlay X standard.

Parameter Name

Type Optional Description

Result parlayx_sub_profile_xsd:PropertyTuple

Mandatory The result contain one property name and it’s corresponding value. The response can contain 1 or more resulting value tuples.

Error returns

Service Exceptions from ES 202 391-1 [2]:

SVC0001: Service error. Returned as a generic service error, typically that the service has

intermittent problems. Request can be retried again after some short period of time.

SVC0002: Invalid input value. There is a problem with the formatting of the SubscriberID or ProfileID.

SVC9903: Nonexistent subscriber profile. The profile or the subscriber identity does not exist.

PolicyException from ES 202 391-1 [2]:

POL0001: Policy error. The policy error is returned if the request breaches any SLA like too many

requests. POL0002: Privacy error.

The privacy error is returned if a Subscriber or Subscriber profile is requested by the Service Provider that it doesn’t have rights to read, e.g. a Subscriber that has opted out the usage of his/her data.

2.2.3 Method Summary: setProfile()

The setProfile() method is used to write data to a specific Subscriber Profile that the calling Service Provider as write access rights for. A successful request results in that the properties are changed and an empty message is returned.

Request: setProfile (Optional)The input message is derived from the proposed Parlay X standard definition.

Parameter Name Type Optional DescriptionsubscriberID xsd:string Mandatory Defines the Subscriber identity. This is a string field

and is dependent of the operator/country. Typically this can be a tel URI (IETF RFC 3966).

ProfileID xsd:string Mandatory Defines which profile to set properties in for the defined Subscriber. This is a string and the profile names are depending on the operator.

Properties parlayx_sub_prof Mandatory The properties and the corresponding values to set in

document.doc Page 7 of 25

Page 8: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

ile_xsd:PropertyTuple

the profile as a list of Property tuples.

Response: setProfileThe output message adheres to the proposed Parlay X standard. This is an empty message containing no data. Upon any error an error exception is returned see below. The request is atomic meaning that if one value fails to be set no change will be applied to the subscriber profile.

Parameter Name

Type Optional Description

Error returns

Service Exceptions from ES 202 391-1 [2]:

SVC0001: Service error. Returned as a generic service error, typically that the service has

intermittent problems. Request can be retried again after some short period of time.

SVC0002: Invalid input value. There is a problem with the formatting of the SubscriberID or ProfileID.

SVC9903: Nonexistent subscriber profile. The profile or the subscriber identity does not exist.

PolicyException from ES 202 391-1 [2]:

POL0001: Policy error. The policy error is returned if the request breaches any SLA like too many

requests. Also returned if the service provider doesn’t have the rights to do modifications.

POL0002: Privacy error. The privacy error is returned if a Subscriber or Subscriber profile is

requested to be changed by the Service Provider that it doesn’t have rights to set, e.g. a Subscriber that has opted out the usage of his/her data.

2.2.4 Method Summary: getProfileProperty()

The getProfileProperty() method is used to read one property in a specific Subscriber Profile that the calling Service Provider as access rights for. A successful request results in the value of the property attribute being returned.

Request: getProfilePropertyThe input message is derived from the proposed Parlay X standard definition.

Parameter Name Type Optional DescriptionsubscriberID xsd:string Mandatory Defines the Subscriber identity. This is a string field

and is dependent of the operator/country. Typically this can be a tel URI (IETF RFC 3966).

ProfileID xsd:string Mandatory Defines which profile to read for the defined Subscriber. This is a string and the profile names are depending on the operator.

document.doc Page 8 of 25

Page 9: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

propertyPathName xsd:string Mandatory The relative property path name to the property to read within the defined Subscriber Profile.

Response: getProfilePropertyThe output message adheres to the proposed Parlay X standard.

Parameter Name

Type Optional Description

result parlayx_sub_profile_xsd:PropertyTuple

Mandatory The result contain the requested property name and it’s corresponding value.

Error returns

Service Exceptions from ES 202 391-1 [2]:

SVC0001: Service error. Returned as a generic service error, typically that the service has

intermittent problems. Request can be retried again after some short period of time.

SVC0002: Invalid input value. There is a problem with the formatting of the SubscriberID or ProfileID.

SVC9903: Nonexistent subscriber profile. The profile or the subscriber identity does not exist.

SVC9905: Nonexistent property. The specific property does not exist in this Subscriber Profile

Policy Exceptions from ES 202 391-1 [2]:

POL0001: Policy error. The policy error is returned if the request breaches any SLA like too many

requests. POL0002: Privacy error.

The privacy error is returned if a Subscriber, Subscriber profile or property value is requested by the Service Provider that it doesn’t have rights to read, e.g. a Subscriber that has opted out the usage of his/her data.

2.2.5 Method Summary: setProfileProperty()

The setProfileProperty() method is used to write data for a specific property to a specific Subscriber Profile that the calling Service Provider as write access rights for. A successful request results in that the property is changed and an empty message is returned.

Request: setProfileProperty (Optional)The input message is derived from the proposed Parlay X standard definition.

Parameter Name Type Optional DescriptionsubscriberID xsd:string Mandatory Defines the Subscriber identity. This is a string field

and is dependent of the operator/country. Typically this can be a tel URI (IETF RFC 3966).

ProfileID xsd:string Mandatory Defines which profile to set properties in for the defined Subscriber. This is a string and the profile names are depending on the operator.

propertyPathName xsd:string Mandatory The relative property path name to the property to be updated within the defined Subscriber Profile.

propertyValue xsd:string Mandatory The value to set for the specified Subscriber profile

document.doc Page 9 of 25

Page 10: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

property.

Response: setProfilePropertyThe output message adheres to the proposed Parlay X standard. This is an empty message containing no data. Upon any error an error exception is returned see below. The request is atomic meaning that if one value fails to be set no change will be applied to the subscriber profile.

Parameter Name

Type Optional Description

Error returns

Service Exceptions from ES 202 391-1 [2]:

SVC0001: Service error. Returned as a generic service error, typically that the service has

intermittent problems. Request can be retried again after some short period of time.

SVC0002: Invalid input value. There is a problem with the formatting of the SubscriberID or ProfileID.

SVC9903: Nonexistent subscriber profile. The profile or the subscriber identity does not exist.

SVC9905: Nonexistent property. The specific property does not exist in this Subscriber Profile

PolicyException from ES 202 391-1 [2]:

POL0001: Policy error. The policy error is returned if the request breaches any SLA like too many

requests. Also returned if the service provider doesn’t have the rights to do modifications.

POL0002: Privacy error. The privacy error is returned if a Subscriber or Subscriber profile is

requested to be changed by the Service Provider that it doesn’t have rights to set, e.g. a Subscriber that has opted out the usage of his/her data.

Go to the GSMA Access API Wiki and navigate to the Subscriber Profile page for more information.

document.doc Page 10 of 25

Page 11: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

3 WSDL DefinitionThe Web Services Definition Language (WSDL) definition for the Message Web Service Access API is made up of the following files:

GSMA_subscriber_profile_interface_2_3.wsdlGSMA_subscriber_profile _service_2_3.wsdlparlayx_common_faults_2_1.wsdlparlayx_common_types_2_1.xsd

These files are available for download from the GSMA TWS Developer Portal <insert link>. The content of the files is also listed in the Appendix.

document.doc Page 11 of 25

Page 12: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

4 WorkflowIn order to gain access to the sandbox and the live messaging services the user must first perform a verification check of their application against an API Reference Implementation (RI).

4.1 Verification Process

The verification process involves running a successful test case against the RI. This is to test the integrity of the application’s use of the Access API prior to running against the test and live environments.

1. Log into the GSMA TWS Developer Portal

Once you have registered and received an email with your login details, log into the GSMA TWS Developer Portal <insert link>.

2. Retrieve the provisioned endpoint

a. Navigate to the MyDevPortal tab to view your provisioned endpoints.

b. The endpoint required for the certification process is the ONE_API_SUBSCRIBER_PROFILE URL.

3. Run the subscriberProfile verification test

a. Use the ONE_API_SUBSCRIBER_PROFILE URL in your application to access the sandbox service.

b. Within your application, populate your <TBD> request with the following data:i. <TBD> by the Sandbox

c. If the test is successful, <TBD> by the sandbox, should be returned to the application.

d. If the test is unsuccessful, check the exception thrown against the list of possible exceptions in section 5 and amend your application accordingly.

4. For support, contact <insert aepona gsma support email address>

4.2 Sandbox Test Environment

Once the verification is complete, contact <insert aepona gsma support email address> to be provided with access to the sandbox. This will allow you to run your application in a test environment.

1. Log into the GSMA TWS Developer Portal

a. Once you receive an email stating that the verification process is complete, log into the GSMA TWS Developer Portal <insert link>.

2. Retrieve the provisioned endpoint

a. Navigate to the MyDevPortal tab to view your provisioned endpoints.

b. The endpoint required for the certification process is the ONE_API_ SUBSCRIBER_PROFILE URL.

3. Test service configuration

a. The messaging service you will test against can be configured for the following:

i. <TBD> by the sand box.ii. <TBD> by the sand box.

document.doc Page 12 of 25

Page 13: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

iii. Subscriber states to throw specific exceptions, i.e., specific Subscriber and Profile IDs can be configured to throw exceptions, for example address +447797123456 could be configured to throw a policy exception.

If you wish to have any of the above configured or for any queries during testing, please contact <insert aepona gsma support email address>.

4.3 Accessing the Live Messaging Services

Once your testing against the sandbox is complete, contact <insert aepona gsma support email address> to be provided with access to the live messaging service(s).

1. Log into the GSMA TWS Developer Portala. Once you receive an email stating that the live service is available, log into

the GSMA TWS Developer Portal <insert link>.

2. Retrieve the provisioned endpoint

a. Navigate to the MyDevPortal tab to view your provisioned endpoints.

b. The endpoint required for the certification process is the ONE_API_SUBSCRIBER_PROFILE URL.

3. Live service(s) configuration

a. The live service(s) can be configured in the same way as the test service, see point 3 above.

If you wish to have any of the above configured or for any queries using the live service, please contact <insert aepona gsma support email address>.

document.doc Page 13 of 25

Page 14: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

5 ExceptionsSee the API descriptions in Section <TBD> above.

document.doc Page 14 of 25

Page 15: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

6 Sample Java Application CodeA sample Java [ref 3] application is provided which demonstrates the use of the API. The application has been developed using the Eclipse IDE [ref 5]. Using Eclipse you can create Java stubs that your application will use to bind to the service and then add a mainline to call the methods on the service API. Generating the stubs is easily done using the Apache Axis WSDL-to-Java [ref 6] tool that comes packaged with Eclipse. The code for the mainline class is provided below and the full sample application can be downloaded from the GSMA TWS Developer Portal <insert link>.

package org.gsma.oneapi.sample.applications;

import java.net.MalformedURLException;import java.net.URL;import java.rmi.RemoteException;

import org.apache.axis.types.URI;import org.apache.axis.types.URI.MalformedURIException;import org.csapi.www.schema.parlayx.common.v2_1.PolicyException;import org.csapi.www.schema.parlayx.common.v2_1.ServiceException;import org.csapi.www.wsdl.parlayx.subscriber_profile.v1_0.interface. GetSusbcriberProfile;import org.csapi.www.wsdl.parlayx.subscriber_profile.v1_0.service. GetSusbcriberProfileServiceLocator;

/** * Get Susbcriber Profile application to retrieve a subscriber profile data * */public class GetSusbcriberInfoOneApiSampleApplication { /** The service endpoint to use for Retrieveing subscriber information */ private static final String PROFILE_ENDPOINT = "http://host:8120/GetSubscriberInformationService/services/GetSubscriberProfile/11b7cafbedc27dbe57bf5640b10808"; /** The subscriber address to get the profile data from */ private static final String SUBSCRIBER_ID = "tel:+447722"; /** The Profile to get */ private static final String PROFILE =

"Mobile"; public static void main(String[] args) { try { GetSusbcriberProfile getSubscriberProfile = new GetSubscriberProfileServiceLocator().getSusbceiberProfile(new

URL(PROFILE_ENDPOINT)); System.out.println("Attempting to retrieve Subscriber Profile for "+SUBSCRIBER_ADDRESS); PropertyTuple propertyTuple = getSubscriberProfile.

getSubscriberProfile(SUBSCRIBER_ID, PROFILE); System.out.println("Property " + propertyTuple.pathName + “ = ” + propertyTuple.propertyValue); } catch (MalformedURLException e) { System.out.println("A MalformedURLException has occurred. The endpoint URL used is invalid"); e.printStackTrace(); } catch (javax.xml.rpc.ServiceException e) { System.out.println("A javax.xml.rpc.ServiceException has occurred. Failed to send web service request using axis");

document.doc Page 15 of 25

Page 16: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

e.printStackTrace(); } catch (MalformedURIException e) { } catch (PolicyException e) { System.out.println("A TWS policy exception has occurred. Check service log for details"); e.printStackTrace(); } catch (ServiceException e) { System.out.println("A TWS service exception has occurred. Check service log for details"); e.printStackTrace(); } catch (RemoteException e) { System.out.println("A java.rmi.RemoteException has occurred. Could not connect to TWS"); e.printStackTrace(); } } }

document.doc Page 16 of 25

Page 17: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

7 Questions And FeedbackPlease post any questions and feedback on the GSMA 3rd Party Access Developer Portal Feedback Forum.

document.doc Page 17 of 25

Page 18: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

8 History

Document Version Description Date1.0a Initial draft 08-12-08

document.doc Page 18 of 25

Page 19: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

Appendix – WSDL Files

GSMA_subscriber_profile_service_1_0.wsdl<?xml version="1.0" encoding="UTF-8"?><wsdl:definitions name="parlayx_sub_profile_service" targetNamespace="http://www.csapi.org/wsdl/parlayx/sub_profile/v3_0/service" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.csapi.org/wsdl/parlayx/sub_profile/v3_0/service" xmlns:interface="http://www.csapi.org/wsdl/parlayx/sub_profile/v3_0/interface">

<wsdl:import namespace="http://www.csapi.org/wsdl/parlayx/sub_profile/v3_0/interface"

location="parlayx_sub_profile_interface_3_0.wsdl"/>

<wsdl:binding name="SubscriberProfileBinding" type="interface:SubscriberProfile"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

<wsdl:operation name="getProfile"> <soap:operation soapAction="" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> <wsdl:fault name="ServiceException"> <soap:fault name="ServiceException" use="literal"/> </wsdl:fault> <wsdl:fault name="PolicyException"> <soap:fault name="PolicyException" use="literal"/> </wsdl:fault> </wsdl:operation>

<wsdl:operation name="setProfile"> <soap:operation soapAction="" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> <wsdl:fault name="ServiceException"> <soap:fault name="ServiceException" use="literal"/> </wsdl:fault> <wsdl:fault name="PolicyException"> <soap:fault name="PolicyException" use="literal"/> </wsdl:fault> </wsdl:operation>

<wsdl:operation name="getProfileProperty"> <soap:operation soapAction="" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> <wsdl:fault name="ServiceException"> <soap:fault name="ServiceException" use="literal"/>

document.doc Page 19 of 25

Page 20: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

</wsdl:fault> <wsdl:fault name="PolicyException"> <soap:fault name="PolicyException" use="literal"/> </wsdl:fault> </wsdl:operation>

<wsdl:operation name="setProfileProperty"> <soap:operation soapAction="" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> <wsdl:fault name="ServiceException"> <soap:fault name="ServiceException" use="literal"/> </wsdl:fault> <wsdl:fault name="PolicyException"> <soap:fault name="PolicyException" use="literal"/> </wsdl:fault> </wsdl:operation>

<wsdl:service name="SubscriberProfileService"> <wsdl:port name="SubscriberProfile" binding="tns:SubscriberProfileBinding"> <soap:address location="http://localhost:9080/SubscriberProfileService/services/SubscriberProfile"/> </wsdl:port> </wsdl:service></wsdl:definitions>

GSMA_subscriber_profile_interface_1_0.wsdl<?xml version="1.0" encoding="UTF-8"?><wsdl:definitions name="parlayx_sub_profile_interface" targetNamespace="http://www.csapi.org/wsdl/parlayx/sub_profile/v3_0/interface" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:parlayx_sub_profile="http://www.csapi.org/wsdl/parlayx/sub_profile/v3_0/interface" xmlns:parlayx_sub_profile_faults="http://www.csapi.org/wsdl/parlayx/sub_profile/v3_0/faults" xmlns:parlayx_common_faults="http://www.csapi.org/wsdl/parlayx/common/v2_0/faults" xmlns:parlayx_sub_profile_xsd="http://www.csapi.org/schema/parlayx/sub_profile/v3_0" xmlns:parlayx_sub_profile_local_xsd="http://www.csapi.org/schema/parlayx/sub_profile/v3_0/local">

<wsdl:import namespace="http://www.csapi.org/wsdl/parlayx/sub_profile/v3_0/faults"

location="parlayx_sub_profile_faults_3_0.wsdl"/> <wsdl:import namespace="http://www.csapi.org/wsdl/parlayx/common/v2_0/faults"

location="parlayx_common_faults_2_0.wsdl"/>

<wsdl:types> <xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://www.csapi.org/schema/parlayx/sub_profile/v3_0/local"> <xsd:import namespace="http://www.csapi.org/schema/parlayx/sub_profile/v3_0"

schemaLocation="parlayx_sub_profile_types_3_0.xsd"/>

document.doc Page 20 of 25

Page 21: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

<xsd:element name="getProfile" type="parlayx_sub_profile_local_xsd:getProfile"/> <xsd:complexType name="getProfile"> <xsd:sequence> <xsd:element name="subscriberID" type="xsd:string"/> <xsd:element name="profileID" type="xsd:string"/> </xsd:sequence> </xsd:complexType>

<xsd:element name="getProfileResponse" type="parlayx_sub_profile_local_xsd:getProfileResponse"/> <xsd:complexType name="getProfileResponse"> <xsd:sequence> <xsd:element name="result" type="parlayx_sub_profile_xsd:PropertyTuple" minOccurs="1"

maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType>

<xsd:element name="setProfile" type="parlayx_sub_profile_local_xsd:setProfile"/> <xsd:complexType name="setProfile"> <xsd:sequence> <xsd:element name="subscriberID" type="xsd:string"/> <xsd:element name="profileID" type="xsd:string"/> <xsd:element name="properties" type="parlayx_sub_profile_xsd:PropertyTuple" minOccurs="1"

maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType>

<xsd:element name="setProfileResponse" type="parlayx_sub_profile_local_xsd:setProfileResponse"/> <xsd:complexType name="setProfileResponse"> <xsd:sequence/> </xsd:complexType>

<xsd:element name="getProfileProperty" type="parlayx_sub_profile_local_xsd:getProfileProperty"/> <xsd:complexType name="getProfile"> <xsd:sequence> <xsd:element name="subscriberID" type="xsd:string"/> <xsd:element name="profileID" type="xsd:string"/>

<xsd:element name="propertyPathName" type="xsd:string"/> </xsd:sequence> </xsd:complexType>

<xsd:element name="getProfilePropertyResponse"

type="parlayx_sub_profile_local_xsd:getProfilePropertyResponse"/> <xsd:complexType name="getProfilePropertyResponse"> <xsd:sequence> <xsd:element name="result" type="parlayx_sub_profile_xsd:PropertyTuple" minOccurs="1"

maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType>

<xsd:element name="setProfileProperty" type="parlayx_sub_profile_local_xsd:setProfileProperty"/> <xsd:complexType name="setProfileProperty">

document.doc Page 21 of 25

Page 22: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

<xsd:sequence> <xsd:element name="subscriberID" type="xsd:string"/> <xsd:element name="profileID" type="xsd:string"/>

<xsd:element name="propertyPathName" type="xsd:string"/> <xsd:element name="propertyValue" type="xsd:string"/>

</xsd:sequence> </xsd:complexType>

<xsd:element name="setProfilePropertyResponse"

type="parlayx_sub_profile_local_xsd:setProfilePropertyResponse"/> <xsd:complexType name="setProfileResponse"> <xsd:sequence/> </xsd:complexType>

</xsd:schema> </wsdl:types>

<wsdl:message name="SubscriberProfile_getProfileRequest"> <wsdl:part name="parameters" element="parlayx_sub_profile_local_xsd:getProfile"/> </wsdl:message>

<wsdl:message name="SubscriberProfile_getProfileResponse"> <wsdl:part name="result" element="parlayx_sub_profile_local_xsd:getProfileResponse"/> </wsdl:message>

<wsdl:message name="SubscriberProfile_setProfileRequest"> <wsdl:part name="parameters" element="parlayx_sub_profile_local_xsd:setProfile"/> </wsdl:message>

<wsdl:message name="SubscriberProfile_setProfileResponse"> <wsdl:part name="result" element="parlayx_sub_profile_local_xsd:setProfileResponse"/> </wsdl:message>

<wsdl:message name="SubscriberProfile_getProfilePropertyRequest"> <wsdl:part name="parameters" element="parlayx_sub_profile_local_xsd:getProfileProperty"/> </wsdl:message>

<wsdl:message name="SubscriberProfile_getProfilePropertyResponse"> <wsdl:part name="result" element="parlayx_sub_profile_local_xsd:getProfilePropertyResponse"/> </wsdl:message>

<wsdl:message name="SubscriberProfile_setProfilePropertyRequest"> <wsdl:part name="parameters" element="parlayx_sub_profile_local_xsd:setProfileProperty"/> </wsdl:message>

<wsdl:message name="SubscriberProfile_setProfilePropertyResponse"> <wsdl:part name="result" element="parlayx_sub_profile_local_xsd:setProfilePropertyResponse"/> </wsdl:message>

<wsdl:portType name="SubscriberProfile">

<wsdl:operation name="getProfile"> <wsdl:input message="parlayx_sub_profile:SubscriberProfile_getProfileRequest"/> <wsdl:output message="parlayx_sub_profile:SubscriberProfile_getProfileResponse"/> <wsdl:fault name="ServiceException" message="parlayx_common_faults:ServiceException"/>

document.doc Page 22 of 25

Page 23: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

<wsdl:fault name="PolicyException" message="parlayx_common_faults:PolicyException"/> </wsdl:operation>

<wsdl:operation name="setProfile"> <wsdl:input message="parlayx_sub_profile:SubscriberProfile_setProfileRequest"/> <wsdl:output message="parlayx_sub_profile:SubscriberProfile_setProfileResponse"/> <wsdl:fault name="ServiceException" message="parlayx_common_faults:ServiceException"/> <wsdl:fault name="PolicyException" message="parlayx_common_faults:PolicyException"/> </wsdl:operation>

<wsdl:operation name="getProfileProperty"> <wsdl:input message="parlayx_sub_profile:SubscriberProfile_getProfilePropertyRequest"/> <wsdl:output message="parlayx_sub_profile:SubscriberProfile_getProfilePropertyResponse"/> <wsdl:fault name="ServiceException" message="parlayx_common_faults:ServiceException"/> <wsdl:fault name="PolicyException" message="parlayx_common_faults:PolicyException"/> </wsdl:operation>

<wsdl:operation name="setProfileProperty"> <wsdl:input message="parlayx_sub_profile:SubscriberProfile_setProfilePropertyRequest"/> <wsdl:output message="parlayx_sub_profile:SubscriberProfile_setProfilePropertyResponse"/> <wsdl:fault name="ServiceException" message="parlayx_common_faults:ServiceException"/> <wsdl:fault name="PolicyException" message="parlayx_common_faults:PolicyException"/> </wsdl:operation>

</wsdl:portType></wsdl:definitions>

parlayx_sub_profile_types_3_0.wsdl<?xml version="1.0" encoding="UTF-8"?><xsd:schema targetNamespace="http://www.csapi.org/schema/parlayx/sub_profile/v3_0" xmlns:parlayx_sub_profile_xsd="http://www.csapi.org/schema/parlayx/sub_profile/v3_0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:complexType name="PropertyTuple"> <xsd:sequence> <xsd:element name="pathName" type="xsd:string"/> <xsd:element name="propertyValue" type="xsd:string"/> </xsd:sequence> </xsd:complexType>

<xsd:complexType name="Filter"> <xsd:sequence> <xsd:element name="filterCriteria" type="xsd:string"/> </xsd:sequence> </xsd:complexType></xsd:schema>

parlayx_common_faults_2_1.wsdl<?xml version="1.0" encoding="UTF-8"?><!-- April 25, 2007 --><wsdl:definitions name="common_faults"

document.doc Page 23 of 25

Page 24: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

targetNamespace="http://www.csapi.org/wsdl/parlayx/common/v2_1/faults" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:parlayx_common_xsd="http://www.csapi.org/schema/parlayx/common/v2_1">

<wsdl:types> <xsd:schema elementFormDefault="qualified"> <xsd:import namespace="http://www.csapi.org/schema/parlayx/common/v2_1" schemaLocation="parlayx_common_types_2_1.xsd"/> </xsd:schema> </wsdl:types>

<wsdl:message name="ServiceException"> <wsdl:part name="ServiceException" element="parlayx_common_xsd:ServiceException"/> </wsdl:message>

<wsdl:message name="PolicyException"> <wsdl:part name="PolicyException" element="parlayx_common_xsd:PolicyException"/> </wsdl:message></wsdl:definitions>

parlayx_common_types_2_1.xsd<xsd:schema targetNamespace="http://www.csapi.org/schema/parlayx/common/v2_1" xmlns:parlayx_common_xsd="http://www.csapi.org/schema/parlayx/common/v2_1" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:complexType name="TimeMetric"> <xsd:sequence> <xsd:element name="metric" type="parlayx_common_xsd:TimeMetrics"/> <xsd:element name="units" type="xsd:int"/> </xsd:sequence> </xsd:complexType>

<xsd:complexType name="ChargingInformation"> <xsd:sequence> <xsd:element name="description" type="xsd:string"/> <xsd:element name="currency" type="xsd:string" minOccurs="0" maxOccurs="1"/> <xsd:element name="amount" type="xsd:decimal" minOccurs="0" maxOccurs="1"/> <xsd:element name="code" type="xsd:string" minOccurs="0" maxOccurs="1"/> </xsd:sequence> </xsd:complexType>

<xsd:complexType name="SimpleReference"> <xsd:sequence> <xsd:element name="endpoint" type="xsd:anyURI"/> <xsd:element name="interfaceName" type="xsd:string"/> <xsd:element name="correlator" type="xsd:string"/> </xsd:sequence> </xsd:complexType>

<xsd:complexType name="ServiceError"> <xsd:sequence> <xsd:element name="messageId" type="xsd:string"/> <xsd:element name="text" type="xsd:string"/> <xsd:element name="variables" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="TextInformation"> <xsd:sequence>

document.doc Page 24 of 25

Page 25: ACCESS 12 010 GSMA Access API Subscriber Profile Web Services Tutorial

GSM Association Confidential Information

<xsd:element name="text" type="xsd:string"/> <xsd:element name="language" type="xsd:string"/> </xsd:sequence> </xsd:complexType> <xsd:simpleType name="AnnouncementType"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="AnnouncementId"/> <xsd:enumeration value="Text"/> <xsd:enumeration value="VoiceXml"/> <xsd:enumeration value="Audio"/> </xsd:restriction> </xsd:simpleType> <xsd:complexType name="AnnouncementContents"> <xsd:sequence> <xsd:element name="UnionElement" type="parlayx_common_xsd:AnnouncementType"/> <xsd:element name="AnnouncementId" type="xsd:int" minOccurs="0" maxOccurs="1"/> <xsd:element name="Text" type="parlayx_common_xsd:TextInformation" minOccurs="0" maxOccurs="1"/> <xsd:element name="VoiceXml" type="xsd:anyURI" minOccurs="0" maxOccurs="1"/> <xsd:element name="Audio" type="xsd:anyURI" minOccurs="0" maxOccurs="1"/> </xsd:sequence> </xsd:complexType>

<xsd:simpleType name="TimeMetrics"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="Millisecond"/> <xsd:enumeration value="Second"/> <xsd:enumeration value="Minute"/> <xsd:enumeration value="Hour"/> <xsd:enumeration value="Day"/> <xsd:enumeration value="Week"/> <xsd:enumeration value="Month"/> <xsd:enumeration value="Year"/> </xsd:restriction> </xsd:simpleType>

<xsd:element name="ServiceException" type="parlayx_common_xsd:ServiceException"/> <xsd:complexType name="ServiceException"> <xsd:sequence> <xsd:element name="messageId" type="xsd:string"/> <xsd:element name="text" type="xsd:string"/> <xsd:element name="variables" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType>

<xsd:element name="PolicyException" type="parlayx_common_xsd:PolicyException"/> <xsd:complexType name="PolicyException"> <xsd:sequence> <xsd:element name="messageId" type="xsd:string"/> <xsd:element name="text" type="xsd:string"/> <xsd:element name="variables" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType></xsd:schema>

document.doc Page 25 of 25