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>

Note: The specified format for Date type attribute is "yyyy-mm-dd". If the format is not in the specified format then "invalid date format (<date in request xml>) with out - s at correct place" error occurs.
Note: The ’RecordIdentity’ tag is supported mainly in update and copy operations. This tag is used in update operation to provide the identity of the record to be found in the system so that it could be mutated. The ID and IDEXT tags are used to provide the new value.

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.