PowerShell Concur: Create a Receipt with an Image (from Files)

Back to Index

Posts a receipt without an image. A successful POST will result in a 201 status code with an empty response.

Documentation: https://developer.concur.com/api-reference/receipts/endpoints.html#endpoint-post-a-receipt

CURL Command

curl -v -X POST https://us.api.concursolutions.com/receipts/v4/users/USER_ID \
-H "Authorization: Bearer {YOUR ACCESS TOKEN}" \
-H "Content-Type:multipart/form-data" \
-H "link: <http://schema.concursolutions.com/VALIDATION_SCHEMA_FROM_SCHEMA_ENDPOINT.schema.json>;rel=describedBy" \
-F "receipt=@path-to-receipt-json;type=application/json" \
-F "image=@path-to-image;type=image/jpeg"

PowerShell Example

[Reflection.Assembly]::LoadFile("C:\myAssemblies\ChilkatDotNet2.dll")

$rest = New-Object Chilkat.Rest

#  URL: https://us.api.concursolutions.com/receipts/v4/users/USER_ID
$bTls = $true
$port = 443
$bAutoReconnect = $true
$success = $rest.Connect("us.api.concursolutions.com",$port,$bTls,$bAutoReconnect)
if ($success -ne $true) {
    $("ConnectFailReason: " + $rest.ConnectFailReason)
    $($rest.LastErrorText)
    exit
}

$rest.PartSelector = "1"
$fileStream1 = New-Object Chilkat.Stream
$fileStream1.SourceFile = "path-to-receipt-json"
$rest.AddHeader("Content-Disposition","form-data; name=`"path-to-receipt-json`"; filename=`"path-to-receipt-json`"")
$rest.AddHeader("Content-Type","application/json")
$rest.SetMultipartBodyStream($fileStream1)

$rest.PartSelector = "2"
$fileStream2 = New-Object Chilkat.Stream
$fileStream2.SourceFile = "path-to-image"
$rest.AddHeader("Content-Disposition","form-data; name=`"path-to-image`"; filename=`"path-to-image`"")
$rest.AddHeader("Content-Type","image/jpeg")
$rest.SetMultipartBodyStream($fileStream2)

$rest.PartSelector = "0"

$rest.AddHeader("link","<http://schema.concursolutions.com/VALIDATION_SCHEMA_FROM_SCHEMA_ENDPOINT.schema.json>;rel=describedBy")
$rest.AddHeader("Content-Type","multipart/form-data")
$rest.AddHeader("Authorization","Bearer {YOUR ACCESS TOKEN}")
$rest.AddHeader("Expect","100-continue")

$rest.PartSelector = "0"
$rest.AddHeader("Content-Type","multipart/form-data")

$strResponseBody = $rest.FullRequestMultipart("POST","/receipts/v4/users/USER_ID")
if ($rest.LastMethodSuccess -ne $true) {
    $($rest.LastErrorText)
    exit
}

$respStatusCode = $rest.ResponseStatusCode
if ($respStatusCode -ge 400) {
    $("Response Status Code = " + $respStatusCode)
    $("Response Header:")
    $($rest.ResponseHeader)
    $("Response Body:")
    $($strResponseBody)
    exit
}