E N D
The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. Safe Harbor Statement
Automation Strategies with the Eloqua API An Oracle | Eloqua Power Hour Powered by
Presenters T.J. Fields – Oracle | Eloqua, Senior Product Manager Chris Campbell – Oracle | Eloqua, Senior Product Manager
Power Hour Agenda • First, Some Background • A Closer Look • Using Eloqua’s RESTful APIs • Where to find information
In the beginning Eloqua’s first public API • Basic entity CRUD operations • Bulk operations (DTS) 2008
Extending the marketing automation system Step-based Apps (Cloud Connectors) • Perform external operations on campaign members 2008 2014
Time for REST Application API • Built for E10 • Asset & Data Access • Real time! 2008 2014
Scale It… Bulk API 1.0 • Simple • Scalable • Complete RESTful APIs 2008 2014
Activities Anyone? Bulk API 2.0 • Retrieve Activity Data • Enhanced Filtering capabilities offers more customized datasets • Access to import errors in the staging area RESTful APIs 2008 2014
API Uses Many possibilities • Integration with external systems • Build Cloud “Apps” • appcloud.eloqua.com • Solve more complex use cases • Perform specific, repeatable tasks or functions
SOAP Eloqua’s APIs • Protocol for exchanging data relies on XML. Eloqua's SOAP API has been available since 2008 (primarily used with the E9 platform) Direct Access • Web services • Single record create/update and multiple record retrieval • Data and asset creation available • E10 is built using this API Bulk • Web services • Designed to handle large volumes of records • Import/export of Data • Contacts, Custom Objects, Activities, Cloud Connectors
Eloqua’s APIs Current Status Consumers • 3rd Party Apps & Integrations • CRM Integration • Eloqua Apps • E10, Mailer, EPP • AppCloud Apps • SOAP APIs (v1 – 1.2) • Maintenance only, heavily used • Direct Access RESTful APIs • Broad access to most of Application • Bulk Access RESTful API • access to a subset of the system
Uri Format Eloqua REST APIs https://<host>/api/<context>/<version>/<resource>[/<resource id>][/child resource>][/<child resource id>][?parameters] All endpoints in a given API will have the same root/base Uri (not including host). https://secure.eloqua.com/api/bulk/1.0 An example of the format in use is: https://secure.eloqua.com/api/bulk/1.0/contact/lists?page=2&pageSize=50 An example with child resources: https://secure.eloqua.com/api/bulk/1.0/customObject/5/field/6
REST API: Process Overview • Authenticate • Determine endpoint from Eloqua API (https://login.eloqua.com/id) • Basic HTTP authentication or OAUTH • Construct object • Needed for POST, PUT • Not needed for GET, DELETE • Call the API endpoint • /assets/contact/fields?depth=complete&count=1&page=1 • Full list of parameters: http://topliners.eloqua.com/community/code_it/blog/2012/09/27/eloqua-rest-api--request-url-parameters • Read response (next slide)
REST API: Response (JSON) {"elements": [ {"type":"ContactField", "id":"100001", "createdAt":"-2208970800", "depth":"complete", "name":"Email Address", "updatedAt":"1305742610", "updatedBy":"8", "dataType":"text", "displayType":"text", "internalName":"C_EmailAddress", "isReadOnly":"false", "isRequired":"false", "isStandard":"true", "isAccountLinkageField":"false", "isPopulatedInOutlookPlugin":"false", "updateType":"always" }, {"type":"ContactField", "id":"100002", "createdAt":"-2208970800", "depth":"complete", "name":"First Name", "updatedAt":"1285431903", "dataType":"text", "displayType":"text", "internalName":"C_FirstName", "isReadOnly":"false", "isRequired":"false", "isStandard":"true", "isAccountLinkageField":"false", "isPopulatedInOutlookPlugin":"false", "updateType":"newNotBlank" }, ...
Common Patterns Eloqua REST APIs • CRUD support using POST, GET, PUT and DELETE • POST /contact/import • GET /contact/import/5 • PUT /contact/import/5 • DELETE /contact/import/5 • Search using GET with plural resource • GET /contact/imports?page=2&pageSize=50&search=name=a*&orderBy=name%20ASC POST Tunneling available with X-HTTP-Method-Override header
Partial Requests Eloqua REST APIs • depth • Minimal/partial/complete • fields • Json syntax • fieldsUri • Persisted fields value, for re-use
Response Codes & Errors Eloqua REST APIs Status Code Tunneling available with X-HTTP-Status-Code-Override header • Status Codes • 2XX for success (200/201/204) • 4XX for client resolvable error (400/401/403/404/409/412/413) • 5XX for server error (500/503) • Error Responses • Path to invalid Field • Invalid value • Failed constraint text { "failures": [ { "field": "destinationUri", "value": "/contact/list/47155555", "constraint": "Must reference an existing item, by uri." } ] }
Async Processing (Bulk API) Eloqua REST APIs • Import Flow • Create Import definition • POST data to staging area • Create sync task & monitor • Export Flow • Create Export definition • Create sync task & monitor • GET data from staging area Staged data access
Code It Eloqua’sDeveloper Community