Example of a draft sales ( ACCREC) invoice with enough detail to be approved once it's been created.
[Reflection.Assembly]::LoadFile("C:\myAssemblies\ChilkatDotNet47.dll")
$rest = New-Object Chilkat.Rest
$oauth1 = New-Object Chilkat.OAuth1
$oauth1.ConsumerKey = "OAUTH1_CONSUMER_KEY"
$oauth1.ConsumerSecret = "OAUTH1_CONSUMER_SECRET"
$oauth1.Token = "OAUTH1_TOKEN"
$oauth1.TokenSecret = "OAUTH1_TOKEN_SECRET"
$oauth1.SignatureMethod = "RSA-SHA1"
$rsaKey = New-Object Chilkat.PrivateKey
# Insert code here to load the RSA private key...
# ...
# then call SetRsaKey to provide the RSA key to the OAuth1 class.
$success = $oauth1.SetRsaKey($rsaKey)
$rest.SetAuthOAuth1($oauth1,$false)
$success = $rest.Connect("api.xero.com",443,$true,$true)
if ($success -ne $true) {
$($rest.LastErrorText)
exit
}
# The following code creates the JSON request body.
# The JSON created by this code is shown below.
$jsonReq = New-Object Chilkat.JsonObject
$jsonReq.UpdateString("Type","ACCREC")
$jsonReq.UpdateString("Contact.ContactID","eaa28f49-6028-4b6e-bb12-d8f6278073fc")
$jsonReq.UpdateString("Date","/Date(1518685950940+0000)/")
$jsonReq.UpdateString("DueDate","/Date(1518685950940+0000)/")
$jsonReq.UpdateString("DateString","2009-05-27T00:00:00")
$jsonReq.UpdateString("DueDateString","2009-06-06T00:00:00")
$jsonReq.UpdateString("LineAmountTypes","Exclusive")
$jsonReq.UpdateString("LineItems[0].Description","Consulting services as agreed (20% off standard rate)")
$jsonReq.UpdateString("LineItems[0].Quantity","10")
$jsonReq.UpdateString("LineItems[0].UnitAmount","100.00")
$jsonReq.UpdateString("LineItems[0].AccountCode","200")
$jsonReq.UpdateString("LineItems[0].DiscountRate","20")
$sbReq = New-Object Chilkat.StringBuilder
$jsonReq.EmitSb($sbReq)
$rest.AddHeader("Content-Type","application/json")
$sbResponse = New-Object Chilkat.StringBuilder
$success = $rest.FullRequestSb("POST","/api.xro/2.0/Invoices",$sbReq,$sbResponse)
if ($success -ne $true) {
$($rest.LastErrorText)
exit
}
if ($rest.ResponseStatusCode -ne 200) {
$("Received error response code: " + $rest.ResponseStatusCode)
$("Response body:")
$($sbResponse.GetAsString())
exit
}
$("Example Completed.")
{
"Type": "ACCREC",
"Contact": {
"ContactID": "eaa28f49-6028-4b6e-bb12-d8f6278073fc"
},
"Date": "\/Date(1518685950940+0000)\/",
"DueDate": "\/Date(1518685950940+0000)\/",
"DateString": "2009-05-27T00:00:00",
"DueDateString": "2009-06-06T00:00:00",
"LineAmountTypes": "Exclusive",
"LineItems": [
{
"Description": "Consulting services as agreed (20% off standard rate)",
"Quantity": "10",
"UnitAmount": "100.00",
"AccountCode": "200",
"DiscountRate": "20"
}
]
}