Sample code for 30+ languages & platforms
PowerShell

effectconnect Create or Replace Product Catalog

See more effectconnect Examples

Use this call to create or replace a product catalog in EffectConnect. This is always a purge and replace action for the entire catalog.

Chilkat PowerShell Downloads

PowerShell
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"

$success = $false

# This example assumes the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

$uri = "/products"
$apiVersion = "2.0"

$http = New-Object Chilkat.Http
$req = New-Object Chilkat.HttpRequest

# Use your effectconnect public key here...
$req.AddHeader("KEY","PUBLIC_KEY")
$req.AddHeader("VERSION",$apiVersion)
$req.AddHeader("URI",$uri)
$req.AddHeader("RESPONSETYPE","XML")
$req.AddHeader("RESPONSELANGUAGE","en")

# Get the current date/time in timestamp format.
$dt = New-Object Chilkat.CkDateTime
$dt.SetFromCurrentSystemTime()
$timestamp = $dt.GetAsTimestamp($true)

$req.AddHeader("TIME",$timestamp)
$("timestamp = " + $timestamp)

$sbXml = New-Object Chilkat.StringBuilder
$success = $sbXml.LoadFile("qa_data/xml/effectconnect/effconCreate.xml","utf-8")
$("length = " + $sbXml.Length)

$req.HttpVerb = "POST"
$req.Path = $uri
$req.ContentType = "multipart/form-data"
$success = $req.AddStringForUpload("payload","effcon.xml",$sbXml.GetAsString(),"utf-8")
if ($success -eq $false) {
    $($req.LastErrorText)
    exit
}

# Build a string-to-sign and sign it using our effectconnect private key
$sbStringToSign = New-Object Chilkat.StringBuilder
$sbStringToSign.AppendInt($sbXml.Length)
$sbStringToSign.Append("POST")
$sbStringToSign.Append($uri)
$sbStringToSign.Append($apiVersion)
$sbStringToSign.Append($timestamp)

$crypt = New-Object Chilkat.Crypt2
$crypt.MacAlgorithm = "hmac"
$crypt.HashAlgorithm = "sha512"
$crypt.EncodingMode = "base64"
# Use your effectconnect private key here:
$crypt.SetMacKeyString("PRIVATE_KEY")
$req.AddHeader("SIGNATURE",$crypt.MacStringENC($sbStringToSign.GetAsString()))

$resp = New-Object Chilkat.HttpResponse
$success = $http.HttpSReq("submit.effectconnect.com",443,$true,$req,$resp)
if ($success -eq $false) {
    $($http.LastErrorText)
    exit
}

$("response status code = " + $resp.StatusCode)

# Examine the response.  The response status code can be 200 for both errors and success.
# The success or error is based on the XML returned in the response body.
$xmlResp = New-Object Chilkat.Xml
$xmlResp.LoadXml($resp.BodyStr)

$("response body:")
$($xmlResp.GetXml())

# A sample response:

# <?xml version="1.0" encoding="utf-8"?>
# <ApiResponseContainer>
#     <Request>
#         <RequestType>Products</RequestType>
#         <RequestAction>Create</RequestAction>
#         <RequestVersion>2.0</RequestVersion>
#         <RequestIdentifier/>
#         <ProcessedAt>2019-04-18T15:28:55+02:00</ProcessedAt>
#     </Request>
#     <Response>
#         <Result>Success</Result>
#         <ProductsCreateResponseContainer>
#             <ProcessID><![CDATA[J048hgS4OkNn0JnH]]></ProcessID>
#         </ProductsCreateResponseContainer>
#     </Response>
# </ApiResponseContainer>

# Parsing the response...

$RequestType = $xmlResp.GetChildContent("Request|RequestType")
$RequestAction = $xmlResp.GetChildContent("Request|RequestAction")
$RequestVersion = $xmlResp.GetChildContent("Request|RequestVersion")
$ProcessedAt = $xmlResp.GetChildContent("Request|ProcessedAt")
$Result = $xmlResp.GetChildContent("Response|Result")
$ProcessID = $xmlResp.GetChildContent("Response|ProductsCreateResponseContainer|ProcessID")