JSON Format
{'Envelope':{'Body':{'<servicemethodName>Request':{'UserInfo':{'UserName':'<mdm user id>','Password':'<mdmpassword>','Enterprise':'<mdm enterprise>'},
'Context':{'Validation':'false','Process':'true','SystemAttributeReturn':'false','ReturnFileAsAttachment':'false','EffectiveDateSearchOption':'E','DeleteAllRelatedRecords':'false','PerspectiveName':'','StartCount':'1','RecordCount':20},'<RepositoryName>':{< list of repository attributes comma separated in name: value format>}}}}}
In the envelope, the <serviceMethodName> is replaced by add, update or delete followed by the repository name.
For example, addPerson/updatePerson/deletePerson.
<RepositoryName> is replaced by the repository name. For example, Person
<mdmUserid><mdmpassword><mdmEnterprise> are required for the first time.UserInfo input. It is not required for each request as these details are stored in the session from previous requests.
In the context, options are provided to apply on the record bundle.
Validation= Validates the record bundle. The return value is true or false.
Process=true/false
SystemAttributeReturn= Returns the System Attributes along with repository attributes. The return value is true or false.
ReturnFileAsAttachment= returns the file as attachment. The return value is true or false.
EffectiveDateSearchOption= Specify the value ’E’ if it is effective date search option.
DeleteAllRelatedRecords= It is used in the delete functionality for deleting all child records. The return value is true or false
PerspectiveName= Specify the perspective name
StartCount= Supports the pagination
RecordCount= Supports the pagination
Add Method
Request: URL: /eml/json/wizard/PersonService/addPerson Content-Type: Application/x-www-form-urlencoded HTTP Method: POST Parameter Name: JsonInput { "Envelope" : { "Body" : { "AddPersonRequest" : { "Context" : { "Validation" : "false", "Process" : "true", "SystemAttributeReturn" : "false", "ReturnFileAsAttachment" : "false", "EffectiveDateSearchOption" : "E", "DeleteAllRelatedRecords" : "false", "PerspectiveName" : "" }, "Person" : { "ID" : "99999", "IDEXT" : "extension-1", "FIRSTNAME" : "xxxxx", "LASTNAME" : "xxxxx" } } } } }
Successful Response:
{ 'Envelope' : { 'Body' : { 'AddPersonResponse' : { 'Result' : { '@code' : 'SVC-11025', '@severity' : 'Info', 'Message' : 'Service VALIDATE_PROCESS executed successfully', 'Event' : { 'EventId' : '61001' } } } } } }
Failure Response:
{ 'Envelope' : { 'Body' : { 'Fault' : { 'faultcode' : '111', 'faultstring' : 'Cannot save record; record already exists', 'detail' : { 'FaultDetails' : { 'CimErrorList' : { 'ErrorCode' : '61001', 'ErrorMessage' : 'Cannot save record; record already exists.' } } } } } } }
Modify/Update
Request: URL: /eml/json/wizard/PersonService/updatePerson Content-Type: Application/x-www-form-urlencoded HTTP Method: POST Parameter Name: JsonInput { 'Envelope' : { 'Body' : { 'updatePersonRequest' : { 'Context' : { 'Validation' : 'false', 'Process' : 'true', 'SystemAttributeReturn' : 'false', 'ReturnFileAsAttachment' : 'false', 'EffectiveDateSearchOption' : 'E', 'DeleteAllRelatedRecords' : 'false', 'PerspectiveName' : '' }, 'Person' : { 'ID' : '99999', 'IDEXT' : 'extension-1', 'FIRSTNAME' : 'xxxxx', 'LASTNAME' : 'xxxxx' } } } } }
Success Response:
{ "UpdatePersonResponse" : { "Result" : { "@code" : "SVC-11025", "@severity" : "Info", "Message" : "Service NOVALIDATE_PROCESS executed successfully.", "Event" : { "EventId" : 63025 } } } }
Failure Response:
{ 'Envelope' : { 'Body' : { 'Fault' : { 'faultcode' : '111', 'faultstring' : 'SVC - 11038 : Data unchanged, request ignored', 'detail' : { 'FaultDetails' : { 'CimErrorList' : { 'ErrorCode' : 'SVC - 11038 ', 'ErrorMessage' : ' SVC - 11038 : Data unchanged, request ignored.' } } } } } } }
Delete
- Identified by ID and/or IDExt
- Exception: Record not found
Request: URL: /eml/json/wizard/PersonService/deletePerson Content-Type: Application/x-www-form-urlencoded HTTP Method: POST Parameter Name: JsonInput { 'Envelope' : { 'Body' : { 'DeletePersonRequest' : { 'Context' : { 'Validation' : 'false', 'Process' : 'true', 'SystemAttributeReturn' : 'false', 'ReturnFileAsAttachment' : 'false', 'EffectiveDateSearchOption' : 'E', 'DeleteAllRelatedRecords' : 'false', 'PerspectiveName' : '' }, 'Person' : { 'ID' : '99999', 'IDEXT' : 'extension-1' } } } } }
Successful Response:
{ 'Envelope' : { 'Body' : { 'DeletePersonResponse' : { 'Result' : { '@code' : 'SVC - 11032', '@severity' : 'Info', 'Message' : 'SVC - 11032 : REASON - Record(s)deleted successfully ', 'Event' : { 'EventId' : 61001 } } } } } }
Failure Response:
{ 'Envelope' : { 'Body' : { 'Fault' : { 'faultcode' : 'CAT-1141', 'faultstring' : 'CAT - 1141 : Record with Record ID = 12345, Record ID Extension = not found ', 'detail' : { 'FaultDetails' : { 'CimErrorList' : { 'ErrorCode' : 'CAT-1141', 'ErrorMessage' : 'CAT-1141: Record with Record ID=12345, Record ID Extension= not found' } } } } } } }
Find/Retrieve
- Getting a record Bundle for specific Person ID and person IDExt
- Getting all the Persons
- Getting All Addresses of a Person with id '99999' and IDExt as 'extension-1'
Request: URL: /eml/json/wizard/PersonService/findPerson Content-Type: Application/x-www-form-urlencoded HTTP Method: POST Parameter Name: JsonInput (Getting a record Bundle for specific person id and person id ext) { 'Envelope' : { 'Body' : { 'FindPersonRequest' : { ' Context' : { 'Validation' : 'false', 'Process' : 'true', 'SystemAttributeReturn' : 'false', 'ReturnFileAsAttachment' : 'false', 'EffectiveDateSearchOption' : 'E', 'DeleteAllRelatedRecords' : 'false', 'PerspectiveName' : '', 'StartCount' : '1', 'RecordCount' : 20 }, 'FindPersonID' : [{ 'ID' : '99999', 'IDEXT' : 'extension-1' } ] } } } } Getting all the Persons { 'Envelope' : { 'Body' : { 'FindPersonRequest' : { ' Context' : { 'Validation' : 'false', 'Process' : 'true', 'SystemAttributeReturn' : 'false', 'ReturnFileAsAttachment' : 'false', 'EffectiveDateSearchOption' : 'E', 'DeleteAllRelatedRecords' : 'false', 'PerspectiveName' : '', 'StartCount' : '1', 'RecordCount' : 20 }, 'FindAllPersons' : 'true' } } } } Getting All Addresses of a Person with id '99999' and id ext as 'extension-1' { 'Envelope' : { 'Body' : { 'FindPersonRequest' : { ' Context' : { 'Validation' : 'false', 'Process' : 'true', 'SystemAttributeReturn' : 'false', 'ReturnFileAsAttachment' : 'false', 'EffectiveDateSearchOption' : 'E', 'DeleteAllRelatedRecords' : 'false', 'PerspectiveName' : '', 'StartCount' : '1', 'RecordCount' : 20 }, 'FindPersonID' : [{ 'ID' : '99999', 'IDEXT' : 'extension-1', 'Relationships' : { 'PersonToAddress' : { 'findAll' : 'true' } } } ] } } } } Response: { "Envelope" : { "Body" : { "FindPersonResponse" : { "PersonList" : { "Person" : { "ID" : "99999", "IDEXT" : "extension-1", "FIRSTNAME" : "xxxxx", "LASTNAME" : "xxxxx", "PersonToClientList" : { "PersonToClient" : [{ "ParentInfo" : { "ParentCatalogName" : "Person", "ParentRecordID" : "99999", "ParentRecordIDEXT" : "extension-1" }, "HOURLYRATE" : "100", "CLIENT" : { "ID" : "10000", "IDEXT" : "p", "CONTAINS" : "no", "NAME" : "", "DEPARTMENTNAME" : "San Fran", "BUSINESSTYPE" : "Retail", "PROJECTNAME" : "MDM", "DURATION" : "6" } } { "ParentInfo" : { "ParentCatalogName" : "Person", "ParentRecordID" : "99999", "ParentRecordIDEXT" : "extension-1" }, "HOURLYRATE" : "100", "CLIENT" : { "ID" : "10001", "IDEXT" : "p", "CONTAINS" : "no", "NAME" : "", "DEPARTMENTNAME" : "San Fran1", "BUSINESSTYPE" : "Retail1", "PROJECTNAME" : "MDM1", "DURATION" : "6" } } ] } "PersonToAddressList" : { "PersonToAddress" : [{ "ParentInfo" : { "ParentCatalogName" : "Person", "ParentRecordID" : "99999", "ParentRecordIDEXT" : "extension-1" }, "Type" : "home", "ADDRESS" : { "ID" : "12000", "IDEXT" : "p", "ADDRLINE1" : "11111 san fran" } } { "ParentInfo" : { "ParentCatalogName" : "Person", "ParentRecordID" : "99999", "ParentRecordIDEXT" : "extension-1" }, "Type" : "office", "ADDRESS" : { "ID" : "12001", "IDEXT" : "p", "ADDRLINE1" : "2222 san fran" } } ] } } } } } } }
Validate Method
Request: URL: /eml/json/wizard/PersonService/validatePerson HTTP Method: POST Parameter Name: JsonInput { "Envelope" : { "Body" : { "ValidatePersonRequest" : { "Action" : "add", "IncludeFailedRecordsInResponse" : "true", "Person" : { "ID" : 1, "IDEXT" : "p", "FIRSTNAME" : "Jon", "LASTNAME" : "S", "RELIGIOUS" : "Jay", "GENDER" : "Male", "HEIGHT" : 5.5, "WEIGHT" : 130, "EYECOLOR" : "Black", "EMAIL" : "jon@gmail.com", "LINKEDINID" : "joh" } } } } } Validation failure response: { "ValidatePersonResponse" : { "ValidationResult" : { "ErrorList" : { "Error" : [{ "ErrorMessage" : "'Weight' has failed validation. The value ('130') was not present in the valid value list.", "RelationshipName" : "PERSON", "ID" : 1, "IDEXT" : "p", "AttributeName" : "WEIGHT" }, { "ErrorMessage" : "Attribute 'First Name' is transformed from ('Jon') to ('1-NEWVAL')", "RelationshipName" : "PERSON", "ID" : 1, "IDEXT" : "p", "AttributeName" : "FIRSTNAME" }, { "ErrorMessage" : "Cannot save record; record already exists. If you cannot find a confirmed version of this record, it may currently be in add or delete approval process.", "RelationshipName" : "PERSON", "ID" : 1, "IDEXT" : "p", "AttributeName" : "PRODUCTID" } ] }, "Person" : { "ID" : 1, "IDEXT" : "p", "FIRSTNAME" : "Jon", "LASTNAME" : "S", "RELIGIOUS" : "Jay", "GENDER" : "Male", "HEIGHT" : 5.5, "WEIGHT" : 130, "EYECOLOR" : "Black", "EMAIL" : "jon@gmail.com", "LINKEDINID" : "jon" } } } } Validation success response: { "ValidatePersonResponse" : { "ValidationResult" : { "Info" : "Record Bundle validation is successful" } } }
Build Relationship
- This creates a new relationship record of PersonToClient for person id 200 and extension tibco. The mode can be Add/Edit/Delete.
Request: URL: /eml/json/wizard/PersonService/buildRelationship HTTP Method: POST Parameter Name: JsonInput { 'Envelope' : { 'Body' : { 'RelationshipRequest' : { 'Mode' : 'Add', 'PersonToClient' : { 'ParentInfo' : { 'ParentCatalogName' : 'Person', 'ParentRecordID' : '200', 'ParentRecordIDEXT' : 'tibco' }, 'HOURLYRATE' : '100', 'CLIENT' : { 'ID' : '10000', 'IDEXT' : 'p', 'CONTAINS' : 'no', 'NAME' : '', 'DEPARTMENTNAME' : 'San Fran', 'BUSINESSTYPE' : 'Retail', 'PROJECTNAME' : 'MDM', 'DURATION' : '6' } } } } } } Successful Response { 'Envelope' : { 'Body' : { 'RelationshipResponse' : { 'Result' : { 'Message' : 'Success', 'Event' : { 'EventId' : 'xxx' } } } } } } Failure Response: { 'Envelope' : { 'Body' : { 'Fault' : { 'faultcode' : ' xxx', 'faultstring' : 'xxxx' : 'Unable to add relationship into cache', 'detail' : { 'FaultDetails' : { 'CimErrorList' : { 'ErrorCode' : 'CAT-1141', 'ErrorMessage' : 'Unable to add relationship into cache .' } } } } } } }
Copy Method
- For Copy operation JSON sample can not be provided as it is not supported by MDM UI builder . However, an XML sample is as follows:
Request
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://tibco.com/mdm/dynservices/parent_webservice1/wsdl/2.0"> <soapenv:Header/> <soapenv:Body> <ns:CopyParentRequest> <!--Optional:--> <ns:UserInfo> <ns:UserName>a</ns:UserName> <ns:Password>a</ns:Password> <ns:Enterprise>party</ns:Enterprise> </ns:UserInfo> <!--Optional:--> <ns:Context> <!--You may enter the following 15 items in any order--> <!--Optional:--> <ns:Validation>true</ns:Validation> <!--Optional:--> <ns:Process>true</ns:Process> </ns:Context> <ns:Parent> <!--You may enter the following 13 items in any order--> <!--Optional:--> <ns:RecordIdentity> <ns:ID operator="eq">A3</ns:ID> <!--Optional:--> <ns:IDEXT operator="eq">333</ns:IDEXT> </ns:RecordIdentity> <!--Optional:--> <ns:ID>A3A</ns:ID> <!--Optional:--> <ns:IDEXT>33A</ns:IDEXT> <!--Optional:--> <ns:PtoCAList> <!--1 or more repetitions:--> <ns:PtoCA> <!--You may enter the following 3 items in any order--> <ns:ParentInfo> <!--You may enter the following 4 items in any order--> <ns:ParentCatalogName>PARENT</ns:ParentCatalogName> <ns:ParentRecordID>A3</ns:ParentRecordID> <!--Optional:--> <ns:ParentRecordIDEXT>333</ns:ParentRecordIDEXT> </ns:ParentInfo> <!--Optional:--> <ns:RecordIdentity> <ns:ID operator="eq">B3</ns:ID> <!--Optional:--> <ns:IDEXT operator="eq">333</ns:IDEXT> </ns:RecordIdentity> <ns:CHILDA> <!--You may enter the following 7 items in any order--> <!--Optional:--> <ns:ID>B3A</ns:ID> <!--Optional:--> <ns:IDEXT>33A</ns:IDEXT> </ns:CHILDA> </ns:PtoCA> </ns:PtoCAList> </ns:Parent> </ns:CopyParentRequest> </soapenv:Body> </soapenv:Envelope>
Response
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns2:CopyParentResponse xmlns:ns2="http://tibco.com/mdm/dynservices/parent_webservice1/wsdl/2.0">
<ns2:Result code="SVC-11025" severity="Info">
<ns2:Message>Service ''VALIDATE_PROCESS'' executed successfully.</ns2:Message>
<ns2:Event>
<ns2:EventId>76045</ns2:EventId>
</ns2:Event>
<ns2:ErrorList/>
<ns2:ValidationResult>
<ns2:RecrodDeatils>
<ns2:CatalogName>PARENT</ns2:CatalogName>
<ns2:ID>A3A</ns2:ID>
<ns2:IDEXT>33A</ns2:IDEXT>
<ns2:PIDKEY>-1</ns2:PIDKEY>
</ns2:RecrodDeatils>
<ns2:ErrorList/>
<ns2:RelationShipsList/>
</ns2:ValidationResult>
</ns2:Result>
</ns2:CopyParentResponse>
</soapenv:Body>
</soapenv:Envelope>
In copy operation record identity tag is used to find the record and the related record to be cloned. The ID, IDEXT tags are used to provide the identity of the cloned version.