Track: Developers
#CNX14
#CNX14
Dive Deep into the Fuel APIs
Kris Chant
Sr. Technical Product Manager - API
@sprshrp
Track: Developers
#CNX14
Goals – Presentation Overview
1 2 3
Intro to Fuel APIs
• REST• SOAP• SDKs
Developer Edition
• Get Your Own Free Developer Account!
Building a Journey:
• Scenario Description
• Developer Setup• Build the Journey
Track: Developers
#CNX14
Track: Developers
#CNX14
A Brief Introduction
Track: Developers
#CNX14
APIs
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <oAuth xmlns="http://exacttarget.com"> <oAuthToken> gd2324hruukedkremtwqhae9 </oAuthToken> </oAuth> </soap:Header> <soap:Body> <RetrieveRequestMsg xmlns="http://exacttarget.com/wsdl/partnerAPI" <RetrieveRequest> <ObjectType>List</ObjectType> <Properties>ListName</Properties> <Properties>Description</Properties> <Properties>Category</Properties> <Properties>ListClassification</Properties>
• SOAP (since 2007)
• Oldest and comprehensive
• Programmatically exposes the email application
Track: Developers
#CNX14
APIs
POST https://www.exacttargetapis.com/address/v1/validateEmailAuthorization: Bearer gd2324hruukedkremtwqhae9{ "email": "[email protected]", "validators": [ "SyntaxValidator", "GlobalUnsubValidator", "ListDetectiveValidator" ]}HTTP/1.1 200 OK{ "email": "[email protected]", "valid": false, "failedValidation": "ListDetectiveValidator"}
• SOAP (since 2007)
• Oldest and comprehensive
• Programmatically exposes the email application
• REST (since 2012)
• Newer & less comprehensive
• Multi-channel support
Track: Developers
#CNX14
SDKs
public class PrintAllLists { public static void main(String[] args) throws ETSdkException { ETClient client = new ETClient(); List<ETList> lists = client.getAllLists(); for (ETList list : lists) { System.out.println(list.getName()); } }}
• Native support for major programming languagesand frameworks (Java, .NET, PHP, Python, and Ruby)
• Greatly simplifies integration with ExactTarget
• Faster time to market with lower cost
• Bridges SOAP & REST APIs, giving you easy access to all capabilities
Track: Developers
#CNX14
SDKs
public class PrintAllLists { public static void main(String[] args) throws ETSdkException { ETClient client = new ETClient(); List<ETList> lists = client.getAllLists(); for (ETList list : lists) { System.out.println(list.getName()); } }}
• Native support for major programming languagesand frameworks (Java, .NET, PHP, Python, and Ruby)
• Greatly simplifies integration with ExactTarget
• Faster time to market with lower cost
• Bridges SOAP & REST APIs, giving you easy access to all capabilities
This…
Track: Developers
#CNX14
SDKs
public class PrintAllLists { public static void main(String args[]) { PartnerAPI service = new PartnerAPI(); soap = service.getSoap(); Client client = ClientProxy.getClient(soap); Endpoint endpoint = client.getEndpoint(); Map<String, Object> outProperties = new HashMap<String, Object>(); outProperties.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN); outProperties.put(WSHandlerConstants.USER, username); PasswordCallbackHandler callback = new PasswordCallbackHandler(); callback.setPassword(password); outProperties.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT); outProperties.put(WSHandlerConstants.PW_CALLBACK_REF, callback); WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProperties); endpoint.getOutInterceptors().add(wssOut); endpoint.getOutInterceptors().add(new SAAJOutInterceptor()); endpoint.getInInterceptors().add(new LoggingInInterceptor()); endpoint.getOutInterceptors().add(new LoggingOutInterceptor());
RetrieveRequest retrieveRequest = new RetrieveRequest(); retrieveRequest.setObjectType("List"); retrieveRequest.getProperties().add("ListName"); RetrieveRequestMsg retrieveRequestMsg = new RetrieveRequestMsg(); retrieveRequestMsg.setRetrieveRequest(retrieveRequest); RetrieveResponseMsg retrieveResponseMsg = soap.retrieve(retrieveRequestMsg); for (APIObject apiObject : retrieveResponseMsg.getResults()) { List l = (List) apiObject; System.out.println(l.getListName()); } }}
• Native support for major programming languagesand frameworks (Java, .NET, PHP, Python, and Ruby)
• Greatly simplifies integration with ExactTarget
• Faster time to market with lower cost
• Bridges SOAP & REST APIs, giving you easy access to all capabilities
… vs. this
Track: Developers
#CNX14
Track: Developers
#CNX14
code.exacttarget.com/developer-edition
Track: Developers
#CNX14
Track: Developers
#CNX14
Building the Journey
Track: Developers
#CNX14
Scenario:
Fitbit wants to drive installation of their Mobile app for new users.
Track: Developers
#CNX14
Steps to Get There
1. Get Your Free Developer Account
2. Setup your Dev Environment
3. Import Data
4. Define Your Contact Model
5. Build Your Journey
Track: Developers
#CNX14
Create your Application
Track: Developers
#CNX14
Select API Integration
Track: Developers
#CNX14
3. Get your Client ID and Secret
Track: Developers
#CNX14
Configure the SDK
Track: Developers
#CNX14
Track: Developers
#CNX14
Example Code:
https://github.com/sprshrp/connections14
Track: Developers
#CNX14
Setup your Data Model
Track: Developers
#CNX14
Setup your Data Model
Track: Developers
#CNX14
Import your Data
Track: Developers
#CNX14
Create the Emails
Track: Developers
#CNX14
Track: Developers
#CNX14
Demo
Track: Developers
#CNX14
Map the Contact Model
Track: Developers
#CNX14
Define the Contact Model
Track: Developers
#CNX14
Build the Journey – Create a Trigger
Track: Developers
#CNX14
Define the Trigger Filter
Track: Developers
#CNX14
Build the Canvas
Track: Developers
#CNX14
The Decision Split
Track: Developers
#CNX14
The Decision Split
Track: Developers
#CNX14
Event Definition Key
Track: Developers
#CNX14
Retrieve an Authorization Token
Track: Developers
#CNX14
Execute the Journey
Track: Developers
#CNX14
Thank you!
Recap:
1. Registered an Account
2. Setup your Dev Environment
3. Imported your Data
4. Defined Your Contact Model
5. Built Your Journey
Track: Developers
#CNX14
Track: Developers
#CNX14
Questions?Code From Today’s Session
https://github.com/sprshrp/connections14
Dev Portal, SDKs, Reference
http://code.exacttarget.com/developer-edition
AppCenter
https://appcenter.exacttarget.com/appcenter
Track: Developers
#CNX14
CUSTOMER JOURNEY SHOWCASE
MARKETING THOUGHT LEADERS
EMAIL MARKETING PRODUCT STRATEGY& ROADMAP
PERSONAL TRANSFORMATION
& GROWTH
SOCIAL MARKETING MOBILE & WEB MARKETING
DEVELOPERS HANDS-ON TRAINING
INDUSTRY TRENDSETTERS
CREATIVITY & INNOVATION
SALESFORCE FOR MARKETERS
ROUNDTABLES
Track: Developers
#CNX14