syncMObjects
Accepteert een serie van MObjectsom, tot een maximum aan 100 per vraag worden gecreeerd of worden bijgewerkt, en keert het resultaat (status) van de verrichting (CREATED, UPDATED, FAILED, UNCHANGED, SKIPPED) en Marketo IDs van MObject(s) terug. De API kan in één van drie verrichtingswijzen worden geroepen:
- INSERT - Alleen nieuwe objecten invoegen, bestaande objecten overslaan
- UPDATE - Alleen bestaande objecten bijwerken, nieuwe objecten overslaan.
- Voor het MObject van het Programma, kan API slechts op de wijze van de UPDATE worden geroepen om nieuwe periode kosteninformatie toe te voegen of markeringen/kanaal voor bestaande programma's toe te voegen/bij te werken. (tags/kanalen moeten al zijn gedefinieerd: u kunt geen nieuwe tags/kanalen maken via de API)
- UPSERT - Nieuwe objecten invoegen en bestaande objecten bijwerken
De UPDATE- en UPSERT-bewerkingen gebruiken de id als sleutel. In één enkele API vraag kan sommige updates slagen en sommige kunnen ontbreken. Voor elke fout wordt een foutbericht geretourneerd
Verzoek
Veldnaam
Vereist/optioneel
Beschrijving
mObjectList->mObject->type
Vereist
Kan één van zijn:
Program
, Opportunity
, OpportunityPersonRole
mObjectList->mObject->id
Vereist
Id van het MObject. U kunt tot 100 MObjects per vraag specificeren.
mObjectList->mObject->typeAttribList->typeAttrib->attrType
Vereist
Kosten (alleen gebruikt tijdens het bijwerken van het Program MObject) kunnen een van de volgende zijn:
Cost
, Tag
mObjectList->mObject->typeAttribList->typeAttrib->attrList->attrib->name
Vereist
Voor Program MObject kunnen de volgende kenmerken worden doorgegeven als naam-waardeparen. Voor kosten:
Month (Required)
, Amount (Required)
, Id (Cost Id - Optional)
, Note (Optional)
. Voor tag/kanaal: Type (Required)
, Value (Required)
. Voor Opportunity MObject, kunnen alle gebieden van de output van describeMObjectals naam-waarde paren worden overgegaan. De onderstaande lijst bevat alle optionele velden en de standaardset kenmerken. U hebt mogelijk aanvullende velden op het Opportunity MObject die zijn gemaakt via een supportverzoek.- Hoeveelheid
- CloseDate
- Beschrijving
- ExpectedRevenue
- ExternalCreatedDate
- Begrotingsmiddelen
- FiscalQuarter
- FiscalYear
- ForecastCategoryName
- IsClosed
- IsWon
- LastActivityDate
- LeadSource
- Naam
- NextStep
- Waardigheid
- Aantal
- Werkgebied
- Type
Voor OpportunityPersonRole MObject, kunt u alle gebieden van de output van leveren describeMObjectals naam-waarde paren. De standaardset kenmerken van OpportunityPersonRole MObject wordt hier weergegeven:
- OpportunityId (vereist)
- PersonId (vereist)
- Komt overeen met de persoon/contactpersoon-id in Marketo.
- Rol (optioneel)
- ExternalCreatedDate (optioneel)
- IsPrimary (optioneel)
- Rol (optioneel)
Veldnaam
Vereist/optioneel
Beschrijving
mObjAssociationList->mObjAssociation->mObjType
Optioneel
Wordt gebruikt om Opportunity/OpportunityPersonRole MObjects bij te werken met de id of externe sleutel van een gekoppeld object. Gekoppelde objecten kunnen de volgende zijn: Bedrijf (om Opportunity MObject bij te werken), Lead (om OpportunityPersonRole MObject bij te werken), Opportunity (om OpportunityPersonRole MObject bij te werken)
mObjAssociationList->mObjAssociation->id
Optioneel
De id van het bijbehorende object (lead/bedrijf/opportunity)
mObjAssociationList->mObjAssociation->externalKey
Optioneel
Een aangepast kenmerk van het gekoppelde object
XML aanvragen
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.marketo.com/mktows/">
<SOAP-ENV:Header>
<ns1:AuthenticationHeader>
<mktowsUserId>demo17_1_809934544BFABAE58E5D27</mktowsUserId>
<requestSignature>40e6d89bd2f7f0daaddaf150ce7a7ca49788ffe7</requestSignature>
<requestTimestamp>2013-08-05T14:22:45-07:00</requestTimestamp>
</ns1:AuthenticationHeader>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns1:paramsSyncMObjects>
<mObjectList>
<mObject>
<type>Program</type>
<id>1970</id>
<typeAttribList>
<typeAttrib>
<attrType>Cost</attrType>
<attrList>
<attrib>
<name>Month</name>
<value>2013-06</value>
</attrib>
<attrib>
<name>Amount</name>
<value>2000</value>
</attrib>
<attrib>
<name>Id</name>
<value>153</value>
</attrib>
</attrList>
</typeAttrib>
</typeAttribList>
</mObject>
</mObjectList>
<operation>UPDATE</operation>
</ns1:paramsSyncMObjects>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
XML van antwoord
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.marketo.com/mktows/">
<SOAP-ENV:Body>
<ns1:successSyncMObjects>
<result>
<mObjStatusList>
<mObjStatus>
<id>1970</id>
<status>UPDATED</status>
</mObjStatus>
</mObjStatusList>
</result>
</ns1:successSyncMObjects>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Voorbeeldcode - PHP
<?php
$debug = true;
$marketoSoapEndPoint = ""; // CHANGE ME
$marketoUserId = ""; // CHANGE ME
$marketoSecretKey = ""; // CHANGE ME
$marketoNameSpace = "http://www.marketo.com/mktows/";
// Create Signature
$dtzObj = new DateTimeZone("America/Los_Angeles");
$dtObj = new DateTime('now', $dtzObj);
$timeStamp = $dtObj->format(DATE_W3C);
$encryptString = $timeStamp . $marketoUserId;
$signature = hash_hmac('sha1', $encryptString, $marketoSecretKey);
// Create SOAP Header
$attrs = new stdClass();
$attrs->mktowsUserId = $marketoUserId;
$attrs->requestSignature = $signature;
$attrs->requestTimestamp = $timeStamp;
$authHdr = new SoapHeader($marketoNameSpace, 'AuthenticationHeader', $attrs);
$options = array("connection_timeout" => 15, "location" => $marketoSoapEndPoint);
if ($debug) {
$options["trace"] = 1;
}
// Create Request
////////////////////////////////
$params = prepareUpdateProgramRequest();
// -or-
//$params = prepareCreateOpptyRequest();
// -or-
//$params= prepareCreateOpptyPersonRoleRequest();
////////////////////////////////
$soapClient = new SoapClient($marketoSoapEndPoint ."?WSDL", $options);
try {
$leads = $soapClient->__soapCall('syncMObjects', array($params), $options, $authHdr);
}
catch(Exception $ex) {
var_dump($ex);
}
if ($debug) {
print "RAW request:\n" .$soapClient->__getLastRequest() ."\n";
print "RAW response:\n" .$soapClient->__getLastResponse() ."\n";
}
function prepareUpdateProgramRequest() {
$params = new stdClass();
$mObj = new stdClass();
$mObj->type = 'Program';
$mObj->id="1970";
$attrib1 = new stdClass();
$attrib1->name="Month";
$attrib1->value="2013-06";
$attrib2 = new stdClass();
$attrib2->name="Amount";
$attrib2->value="2000";
$attrib3 = new stdClass();
$attrib3->name="Id";
$attrib3->value="153";
$attribList = array ($attrib1, $attrib2, $attrib3);
$costAttrib = new stdClass();
$costAttrib->attrType="Cost";
$costAttrib->attrList = $attribList;
$mObj->typeAttribList= array($costAttrib);
$params->mObjectList = array($mObj);
$params->operation="UPDATE";
return $params;
}
function prepareCreateOpptyRequest() {
$params = new stdClass();
$mObj = new stdClass();
$mObj->type = 'Opportunity';
$attrib1 = new stdClass();
$attrib1->name="Name";
$attrib1->value="Q1 2014";
$attrib2 = new stdClass();
$attrib2->name="Amount";
$attrib2->value="2000";
$attrib3 = new stdClass();
$attrib3->name="Probability";
$attrib3->value="80%";
$attribs = array ($attrib1, $attrib2, $attrib3);
$attribList = new stdClass();
$attribList->attrib = $attribs;
$mObj->attribList = $attribList;
$params->mObjectList = array($mObj);
$params->operation="INSERT";
return $params;
}
function prepareCreateOpptyPersonRoleRequest() {
$params = new stdClass();
$mObj = new stdClass();
$mObj->type = 'OpportunityPersonRole';
$attrib1 = new stdClass();
$attrib1->name="OpportunityId";
$attrib1->value="64";
$attrib2 = new stdClass();
$attrib2->name="PersonId";
$attrib2->value="19";
$attrib3 = new stdClass();
$attrib3->name="Role";
$attrib3->value="Influencer/Champion";
$attribs = array ($attrib1, $attrib2, $attrib3);
$attribList = new stdClass();
$attribList->attrib = $attribs;
$mObj->attribList = $attribList;
$params->mObjectList = array($mObj);
$params->operation="INSERT";
return $params;
}
?>
Voorbeeldcode - Java
import com.marketo.mktows.*;
import java.net.URL;
import javax.xml.namespace.QName;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Hex;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
public class SyncMObjects {
public static void main(String[] args) {
try {
URL marketoSoapEndPoint = new URL("CHANGE ME" + "?WSDL");
String marketoUserId = "CHANGE ME";
String marketoSecretKey = "CHANGE ME";
QName serviceName = new QName("http://www.marketo.com/mktows/", "MktMktowsApiService");
MktMktowsApiService service = new MktMktowsApiService(marketoSoapEndPoint, serviceName);
MktowsPort port = service.getMktowsApiSoapPort();
// Create Signature
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
String text = df.format(new Date());
String requestTimestamp = text.substring(0, 22) + ":" + text.substring(22);
String encryptString = requestTimestamp + marketoUserId ;
SecretKeySpec secretKey = new SecretKeySpec(marketoSecretKey.getBytes(), "HmacSHA1");
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(secretKey);
byte[] rawHmac = mac.doFinal(encryptString.getBytes());
char[] hexChars = Hex.encodeHex(rawHmac);
String signature = new String(hexChars);
// Set Authentication Header
AuthenticationHeader header = new AuthenticationHeader();
header.setMktowsUserId(marketoUserId);
header.setRequestTimestamp(requestTimestamp);
header.setRequestSignature(signature);
// Create Request
////////////////////////////////
ParamsSyncMObjects request = prepareUpdateProgramRequest();
// -or-
//ParamsSyncMObjects request = prepareCreateOpptyRequest();
// -or-
//ParamsSyncMObjects request = prepareCreateOpptyPersonRoleRequest();
////////////////////////////////
SuccessSyncMObjects result = port.syncMObjects(request, header);
JAXBContext context = JAXBContext.newInstance(SuccessSyncMObjects.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
m.marshal(result, System.out);
}
catch (Exception e) {
e.printStackTrace();
}
}
private static ParamsSyncMObjects prepareUpdateProgramRequest() {
ParamsSyncMObjects request = new ParamsSyncMObjects();
request.setOperation(SyncOperationEnum.UPDATE);
MObject mobj = new MObject();
mobj.setType("Program");
mobj.setId(1970);
TypeAttrib typeAttrib = new TypeAttrib();
typeAttrib.setAttrType("Cost");
Attrib attrib = new Attrib();
attrib.setName("Month");
attrib.setValue("2013-06");
Attrib attrib2 = new Attrib();
attrib1.setName("Amount");
attrib1.setValue("2000");
Attrib attrib3 = new Attrib();
attrib1.setName("Id");
attrib1.setValue("153");
ArrayOfAttrib attribList = new ArrayOfAttrib();
attribList.getAttribs().add(attrib);
attribList.getAttribs().add(attrib2);
attribList.getAttribs().add(attrib3);
typeAttrib.setAttrList(attribList);
ArrayOfTypeAttrib typeAttribList = new ArrayOfTypeAttrib();
typeAttribList.getTypeAttribs().add(typeAttrib);
mobj.setTypeAttribList(typeAttribList);
ArrayOfMObject objList = new ArrayOfMObject();
objList.getMObjects().add(mobj);
request.setMObjectList(objList);
return request;
}
private static ParamsSyncMObjects prepareCreateOpptyRequest() {
ParamsSyncMObjects request = new ParamsSyncMObjects();
request.setOperation(SyncOperationEnum.INSERT);
MObject mobj = new MObject();
mobj.setType("Opportunity");
Attrib attrib = new Attrib();
attrib.setName("Name");
attrib.setValue("Q1 2014");
Attrib attrib2 = new Attrib();
attrib1.setName("Amount");
attrib1.setValue("2000");
Attrib attrib3 = new Attrib();
attrib1.setName("Probability");
attrib1.setValue("80%");
ArrayOfAttrib attribList = new ArrayOfAttrib();
attribList.getAttribs().add(attrib);
attribList.getAttribs().add(attrib2);
attribList.getAttribs().add(attrib3);
mobj.setAttribList(attribList);
ArrayOfMObject objList = new ArrayOfMObject();
objList.getMObjects().add(mobj);
request.setMObjectList(objList);
return request;
}
private static ParamsSyncMObjects prepareCreateOpptyPersonRoleRequest() {
ParamsSyncMObjects request = new ParamsSyncMObjects();
request.setOperation(SyncOperationEnum.INSERT);
MObject mobj = new MObject();
mobj.setType("OpportunityPersonRole");
Attrib attrib = new Attrib();
attrib.setName("OpportunityId");
attrib.setValue("64"); // Id of the opportunity created earlier
Attrib attrib2 = new Attrib();
attrib1.setName("PersonId");
attrib1.setValue("19");
Attrib attrib3 = new Attrib();
attrib1.setName("Role");
attrib1.setValue("Influencer/Champion");
ArrayOfAttrib attribList = new ArrayOfAttrib();
attribList.getAttribs().add(attrib);
attribList.getAttribs().add(attrib2);
attribList.getAttribs().add(attrib3);
mobj.setAttribList(attribList);
ArrayOfMObject objList = new ArrayOfMObject();
objList.getMObjects().add(mobj);
request.setMObjectList(objList);
return request;
}
}
Voorbeeldcode - Ruby
require 'savon' # Use version 1.0 Savon gem
require 'date'
mktowsUserId = "" # CHANGE ME
marketoSecretKey = "" # CHANGE ME
marketoSoapEndPoint = "" # CHANGE ME
marketoNameSpace = "http://www.marketo.com/mktows/"
#Create Signature
Timestamp = DateTime.now
requestTimestamp = Timestamp.to_s
encryptString = requestTimestamp + mktowsUserId
digest = OpenSSL::Digest.new('sha1')
hashedsignature = OpenSSL::HMAC.hexdigest(digest, marketoSecretKey, encryptString)
requestSignature = hashedsignature.to_s
#Create SOAP Header
headers = {
'ns1:AuthenticationHeader' => { "mktowsUserId" => mktowsUserId, "requestSignature" => requestSignature,
"requestTimestamp" => requestTimestamp
}
}
client = Savon.client(wsdl: 'http://app.marketo.com/soap/mktows/2_3?WSDL', soap_header: headers, endpoint: marketoSoapEndPoint, open_timeout: 90, read_timeout: 90, namespace_identifier: :ns1, env_namespace: 'SOAP-ENV')
#Create Request
request = {
:m_object_list => {
:m_object => {
:type => "Program",
:id => "1970",
:type_attrib_list => {
:type_attrib => {
:attr_type => "Cost",
:attr_list => {
:attrib => {
:name => "Month",
:value => "2013-06" },
:attrib! => {
:name => "Amount",
:value => "2000" },
:attrib! => {
:name => "Id",
:value => "153" }
}
}
}
}
},
:operation => "UPDATE"
}
response = client.call(:sync_m_objects, message: request)
puts response
recommendation-more-help
bb269a6d-047a-4bf7-9acd-23ad9a63dc59