Chilkat Online Tools

PowerBuilder / Coupa Postman Collection - OAuth - Master / Create a Contract

Back to Collection Items

integer li_rc
oleobject loo_Http
integer li_Success
oleobject loo_Xml
oleobject loo_SbRequestBody
oleobject loo_Resp

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

loo_Http = create oleobject
li_rc = loo_Http.ConnectToNewObject("Chilkat_9_5_0.Http")
if li_rc < 0 then
    destroy loo_Http
    MessageBox("Error","Connecting to COM object failed")
    return
end if

// Use this online tool to generate code from sample XML: Generate Code to Create XML

// The following XML is sent in the request body.

// <?xml version="1.0" encoding="UTF-8"?>
// <contract>
//     <name>Test API Contract 159753</name>
//     <number>159753</number>
//     <type>Equipment Lease</type>
//     <version type="integer">1</version>
//     <start-date type="dateTime">2021-12-20T00:00:00+05:30</start-date>
//     <end-date type="dateTime">2022-12-20T00:00:00+05:30</end-date>
//     <status>draft</status>
//     <minimum-value type="decimal">100.00</minimum-value>
//     <maximum-value type="decimal">2000.00</maximum-value>
//     <stop-spend-based-on-max-value>Yes</stop-spend-based-on-max-value>
//     <terms>Annual</terms>
//     <savings-pct>10</savings-pct>
//     <supplier-invoiceable type="boolean">true</supplier-invoiceable>
//     <is-default type="boolean">true</is-default>
//     <preferred nil="true"/>
//     <min-commit type="decimal">0.00</min-commit>
//     <max-commit type="decimal">0.00</max-commit>
//     <supplier-account/>
//     <use-order-windows type="boolean">false</use-order-windows>
//     <order-window-tz>Asia/Kolkata</order-window-tz>
//     <requisition-message/>
//     <po-message/>
//     <legal-agreement-url nil="true"/>
//     <current-approval nil="true"/>
//     <used-for-buying type="boolean">true</used-for-buying>
//     <strict-invoicing-rules type="boolean">false</strict-invoicing-rules>
//     <term-type nil="true"/>
//     <auto-extend-end-date-for-renewal type="boolean">false</auto-extend-end-date-for-renewal>
//     <terminated type="boolean">false</terminated>
//     <termination-notice nil="true"/>
//     <termination-notice-length-unit nil="true"/>
//     <termination-notice-length-value nil="true"/>
//     <consent nil="true"/>
//     <no-of-renewals nil="true"/>
//     <renewal-length-unit nil="true"/>
//     <renewal-length-value nil="true"/>
//     <length-of-notice-unit nil="true"/>
//     <length-of-notice-value nil="true"/>
//     <source-id nil="true"/>
//     <source-type nil="true"/>
//     <source nil="true"/>
//     <amended-contract-type nil="true"/>
//     <quote-response-id nil="true"/>
//     <description/>
//     <execution-date nil="true"/>
//     <supplier>
//         <number>123456</number>
//     </supplier>
//     <currency>
//         <code>USD</code>
//     </currency>
//     <content-groups type="array">
//         <content-group>
//             <name>Everyone</name>
//         </content-group>
//     </content-groups>
//     <reason-insight-events type="array"/>
//     <schedule>
//         <day0>anytime</day0>
//         <day1>anytime</day1>
//         <day2>anytime</day2>
//         <day3>anytime</day3>
//         <day4>anytime</day4>
//         <day5>anytime</day5>
//         <day6>anytime</day6>
//     </schedule>
//     <contract-terms type="array"/>
//     <submitter>
//         <login>coupasam</login>
//     </submitter>
//     <tags type="array"/>
//     <taggings type="array"/>
//     <contract-owner>
//         <login>coupasam</login>
//     </contract-owner>
// </contract>
// 

loo_Xml = create oleobject
li_rc = loo_Xml.ConnectToNewObject("Chilkat_9_5_0.Xml")

loo_Xml.Tag = "contract"
loo_Xml.UpdateChildContent("name","Test API Contract 159753")
loo_Xml.UpdateChildContentInt("number",159753)
loo_Xml.UpdateChildContent("type","Equipment Lease")
loo_Xml.UpdateAttrAt("version",1,"type","integer")
loo_Xml.UpdateChildContentInt("version",1)
loo_Xml.UpdateAttrAt("start-date",1,"type","dateTime")
loo_Xml.UpdateChildContent("start-date","2021-12-20T00:00:00+05:30")
loo_Xml.UpdateAttrAt("end-date",1,"type","dateTime")
loo_Xml.UpdateChildContent("end-date","2022-12-20T00:00:00+05:30")
loo_Xml.UpdateChildContent("status","draft")
loo_Xml.UpdateAttrAt("minimum-value",1,"type","decimal")
loo_Xml.UpdateChildContent("minimum-value","100.00")
loo_Xml.UpdateAttrAt("maximum-value",1,"type","decimal")
loo_Xml.UpdateChildContent("maximum-value","2000.00")
loo_Xml.UpdateChildContent("stop-spend-based-on-max-value","Yes")
loo_Xml.UpdateChildContent("terms","Annual")
loo_Xml.UpdateChildContentInt("savings-pct",10)
loo_Xml.UpdateAttrAt("supplier-invoiceable",1,"type","boolean")
loo_Xml.UpdateChildContent("supplier-invoiceable","true")
loo_Xml.UpdateAttrAt("is-default",1,"type","boolean")
loo_Xml.UpdateChildContent("is-default","true")
loo_Xml.UpdateAttrAt("preferred",1,"nil","true")
loo_Xml.UpdateAttrAt("min-commit",1,"type","decimal")
loo_Xml.UpdateChildContent("min-commit","0.00")
loo_Xml.UpdateAttrAt("max-commit",1,"type","decimal")
loo_Xml.UpdateChildContent("max-commit","0.00")
loo_Xml.UpdateChildContent("supplier-account","")
loo_Xml.UpdateAttrAt("use-order-windows",1,"type","boolean")
loo_Xml.UpdateChildContent("use-order-windows","false")
loo_Xml.UpdateChildContent("order-window-tz","Asia/Kolkata")
loo_Xml.UpdateChildContent("requisition-message","")
loo_Xml.UpdateChildContent("po-message","")
loo_Xml.UpdateAttrAt("legal-agreement-url",1,"nil","true")
loo_Xml.UpdateAttrAt("current-approval",1,"nil","true")
loo_Xml.UpdateAttrAt("used-for-buying",1,"type","boolean")
loo_Xml.UpdateChildContent("used-for-buying","true")
loo_Xml.UpdateAttrAt("strict-invoicing-rules",1,"type","boolean")
loo_Xml.UpdateChildContent("strict-invoicing-rules","false")
loo_Xml.UpdateAttrAt("term-type",1,"nil","true")
loo_Xml.UpdateAttrAt("auto-extend-end-date-for-renewal",1,"type","boolean")
loo_Xml.UpdateChildContent("auto-extend-end-date-for-renewal","false")
loo_Xml.UpdateAttrAt("terminated",1,"type","boolean")
loo_Xml.UpdateChildContent("terminated","false")
loo_Xml.UpdateAttrAt("termination-notice",1,"nil","true")
loo_Xml.UpdateAttrAt("termination-notice-length-unit",1,"nil","true")
loo_Xml.UpdateAttrAt("termination-notice-length-value",1,"nil","true")
loo_Xml.UpdateAttrAt("consent",1,"nil","true")
loo_Xml.UpdateAttrAt("no-of-renewals",1,"nil","true")
loo_Xml.UpdateAttrAt("renewal-length-unit",1,"nil","true")
loo_Xml.UpdateAttrAt("renewal-length-value",1,"nil","true")
loo_Xml.UpdateAttrAt("length-of-notice-unit",1,"nil","true")
loo_Xml.UpdateAttrAt("length-of-notice-value",1,"nil","true")
loo_Xml.UpdateAttrAt("source-id",1,"nil","true")
loo_Xml.UpdateAttrAt("source-type",1,"nil","true")
loo_Xml.UpdateAttrAt("source",1,"nil","true")
loo_Xml.UpdateAttrAt("amended-contract-type",1,"nil","true")
loo_Xml.UpdateAttrAt("quote-response-id",1,"nil","true")
loo_Xml.UpdateChildContent("description","")
loo_Xml.UpdateAttrAt("execution-date",1,"nil","true")
loo_Xml.UpdateChildContentInt("supplier|number",123456)
loo_Xml.UpdateChildContent("currency|code","USD")
loo_Xml.UpdateAttrAt("content-groups",1,"type","array")
loo_Xml.UpdateChildContent("content-groups|content-group|name","Everyone")
loo_Xml.UpdateAttrAt("reason-insight-events",1,"type","array")
loo_Xml.UpdateChildContent("schedule|day0","anytime")
loo_Xml.UpdateChildContent("schedule|day1","anytime")
loo_Xml.UpdateChildContent("schedule|day2","anytime")
loo_Xml.UpdateChildContent("schedule|day3","anytime")
loo_Xml.UpdateChildContent("schedule|day4","anytime")
loo_Xml.UpdateChildContent("schedule|day5","anytime")
loo_Xml.UpdateChildContent("schedule|day6","anytime")
loo_Xml.UpdateAttrAt("contract-terms",1,"type","array")
loo_Xml.UpdateChildContent("submitter|login","coupasam")
loo_Xml.UpdateAttrAt("tags",1,"type","array")
loo_Xml.UpdateAttrAt("taggings",1,"type","array")
loo_Xml.UpdateChildContent("contract-owner|login","coupasam")

// Adds the "Authorization: Bearer <access_token>" header.
loo_Http.AuthToken = "<access_token>"

loo_SbRequestBody = create oleobject
li_rc = loo_SbRequestBody.ConnectToNewObject("Chilkat_9_5_0.StringBuilder")

loo_Xml.GetXmlSb(loo_SbRequestBody)

loo_Resp = loo_Http.PTextSb("POST","https://domain.com/contracts/",loo_SbRequestBody,"utf-8","application/xml",0,0)
if loo_Http.LastMethodSuccess = 0 then
    Write-Debug loo_Http.LastErrorText
    destroy loo_Http
    destroy loo_Xml
    destroy loo_SbRequestBody
    return
end if

Write-Debug string(loo_Resp.StatusCode)
Write-Debug loo_Resp.BodyStr
destroy loo_Resp


destroy loo_Http
destroy loo_Xml
destroy loo_SbRequestBody

Curl Command

curl -X POST
	-H "Authorization: Bearer <access_token>"
	-d '<?xml version="1.0" encoding="UTF-8"?>
<contract>
    <name>Test API Contract 159753</name>
    <number>159753</number>
    <type>Equipment Lease</type>
    <version type="integer">1</version>
    <start-date type="dateTime">2021-12-20T00:00:00+05:30</start-date>
    <end-date type="dateTime">2022-12-20T00:00:00+05:30</end-date>
    <status>draft</status>
    <minimum-value type="decimal">100.00</minimum-value>
    <maximum-value type="decimal">2000.00</maximum-value>
    <stop-spend-based-on-max-value>Yes</stop-spend-based-on-max-value>
    <terms>Annual</terms>
    <savings-pct>10</savings-pct>
    <supplier-invoiceable type="boolean">true</supplier-invoiceable>
    <is-default type="boolean">true</is-default>
    <preferred nil="true"/>
    <min-commit type="decimal">0.00</min-commit>
    <max-commit type="decimal">0.00</max-commit>
    <supplier-account></supplier-account>
    <use-order-windows type="boolean">false</use-order-windows>
    <order-window-tz>Asia/Kolkata</order-window-tz>
    <requisition-message></requisition-message>
    <po-message></po-message>
    <legal-agreement-url nil="true"/>
    <current-approval nil="true"/>
    <used-for-buying type="boolean">true</used-for-buying>
    <strict-invoicing-rules type="boolean">false</strict-invoicing-rules>
    <term-type nil="true"/>
    <auto-extend-end-date-for-renewal type="boolean">false</auto-extend-end-date-for-renewal>
    <terminated type="boolean">false</terminated>
    <termination-notice nil="true"/>
    <termination-notice-length-unit nil="true"/>
    <termination-notice-length-value nil="true"/>
    <consent nil="true"/>
    <no-of-renewals nil="true"/>
    <renewal-length-unit nil="true"/>
    <renewal-length-value nil="true"/>
    <length-of-notice-unit nil="true"/>
    <length-of-notice-value nil="true"/>
    <source-id nil="true"/>
    <source-type nil="true"/>
    <source nil="true"/>
    <amended-contract-type nil="true"/>
    <quote-response-id nil="true"/>
    <description></description>
    <execution-date nil="true"/>
    <supplier>
        <number>123456</number>
    </supplier>
    <currency>
        <code>USD</code>
    </currency>
    <content-groups type="array">
        <content-group>
            <name>Everyone</name>
        </content-group>
    </content-groups>
    <reason-insight-events type="array"/>
    <schedule>
        <day0>anytime</day0>
        <day1>anytime</day1>
        <day2>anytime</day2>
        <day3>anytime</day3>
        <day4>anytime</day4>
        <day5>anytime</day5>
        <day6>anytime</day6>
    </schedule>
    <contract-terms type="array"/>
    <submitter>
        <login>coupasam</login>
    </submitter>
    <tags type="array"/>
    <taggings type="array"/>
    <contract-owner>
        <login>coupasam</login>
    </contract-owner>
</contract>'
https://domain.com/contracts/

Postman Collection Item JSON

{
  "name": "Create a Contract",
  "request": {
    "method": "POST",
    "header": [
    ],
    "body": {
      "mode": "raw",
      "raw": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<contract>\n    <name>Test API Contract 159753</name>\n    <number>159753</number>\n    <type>Equipment Lease</type>\n    <version type=\"integer\">1</version>\n    <start-date type=\"dateTime\">2021-12-20T00:00:00+05:30</start-date>\n    <end-date type=\"dateTime\">2022-12-20T00:00:00+05:30</end-date>\n    <status>draft</status>\n    <minimum-value type=\"decimal\">100.00</minimum-value>\n    <maximum-value type=\"decimal\">2000.00</maximum-value>\n    <stop-spend-based-on-max-value>Yes</stop-spend-based-on-max-value>\n    <terms>Annual</terms>\n    <savings-pct>10</savings-pct>\n    <supplier-invoiceable type=\"boolean\">true</supplier-invoiceable>\n    <is-default type=\"boolean\">true</is-default>\n    <preferred nil=\"true\"/>\n    <min-commit type=\"decimal\">0.00</min-commit>\n    <max-commit type=\"decimal\">0.00</max-commit>\n    <supplier-account></supplier-account>\n    <use-order-windows type=\"boolean\">false</use-order-windows>\n    <order-window-tz>Asia/Kolkata</order-window-tz>\n    <requisition-message></requisition-message>\n    <po-message></po-message>\n    <legal-agreement-url nil=\"true\"/>\n    <current-approval nil=\"true\"/>\n    <used-for-buying type=\"boolean\">true</used-for-buying>\n    <strict-invoicing-rules type=\"boolean\">false</strict-invoicing-rules>\n    <term-type nil=\"true\"/>\n    <auto-extend-end-date-for-renewal type=\"boolean\">false</auto-extend-end-date-for-renewal>\n    <terminated type=\"boolean\">false</terminated>\n    <termination-notice nil=\"true\"/>\n    <termination-notice-length-unit nil=\"true\"/>\n    <termination-notice-length-value nil=\"true\"/>\n    <consent nil=\"true\"/>\n    <no-of-renewals nil=\"true\"/>\n    <renewal-length-unit nil=\"true\"/>\n    <renewal-length-value nil=\"true\"/>\n    <length-of-notice-unit nil=\"true\"/>\n    <length-of-notice-value nil=\"true\"/>\n    <source-id nil=\"true\"/>\n    <source-type nil=\"true\"/>\n    <source nil=\"true\"/>\n    <amended-contract-type nil=\"true\"/>\n    <quote-response-id nil=\"true\"/>\n    <description></description>\n    <execution-date nil=\"true\"/>\n    <supplier>\n        <number>123456</number>\n    </supplier>\n    <currency>\n        <code>USD</code>\n    </currency>\n    <content-groups type=\"array\">\n        <content-group>\n            <name>Everyone</name>\n        </content-group>\n    </content-groups>\n    <reason-insight-events type=\"array\"/>\n    <schedule>\n        <day0>anytime</day0>\n        <day1>anytime</day1>\n        <day2>anytime</day2>\n        <day3>anytime</day3>\n        <day4>anytime</day4>\n        <day5>anytime</day5>\n        <day6>anytime</day6>\n    </schedule>\n    <contract-terms type=\"array\"/>\n    <submitter>\n        <login>coupasam</login>\n    </submitter>\n    <tags type=\"array\"/>\n    <taggings type=\"array\"/>\n    <contract-owner>\n        <login>coupasam</login>\n    </contract-owner>\n</contract>",
      "options": {
        "raw": {
          "language": "xml"
        }
      }
    },
    "url": {
      "raw": "{{URL}}/contracts/",
      "host": [
        "{{URL}}"
      ],
      "path": [
        "contracts",
        ""
      ]
    }
  },
  "response": [
  ]
}