Back to Collection Items
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkHttpResponse.pb"
IncludeFile "CkXml.pb"
Procedure ChilkatExample()
; This example assumes the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
http.i = CkHttp::ckCreate()
If http.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success.i
; 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>
;
xml.i = CkXml::ckCreate()
If xml.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkXml::setCkTag(xml, "contract")
CkXml::ckUpdateChildContent(xml,"name","Test API Contract 159753")
CkXml::ckUpdateChildContentInt(xml,"number",159753)
CkXml::ckUpdateChildContent(xml,"type","Equipment Lease")
CkXml::ckUpdateAttrAt(xml,"version",1,"type","integer")
CkXml::ckUpdateChildContentInt(xml,"version",1)
CkXml::ckUpdateAttrAt(xml,"start-date",1,"type","dateTime")
CkXml::ckUpdateChildContent(xml,"start-date","2021-12-20T00:00:00+05:30")
CkXml::ckUpdateAttrAt(xml,"end-date",1,"type","dateTime")
CkXml::ckUpdateChildContent(xml,"end-date","2022-12-20T00:00:00+05:30")
CkXml::ckUpdateChildContent(xml,"status","draft")
CkXml::ckUpdateAttrAt(xml,"minimum-value",1,"type","decimal")
CkXml::ckUpdateChildContent(xml,"minimum-value","100.00")
CkXml::ckUpdateAttrAt(xml,"maximum-value",1,"type","decimal")
CkXml::ckUpdateChildContent(xml,"maximum-value","2000.00")
CkXml::ckUpdateChildContent(xml,"stop-spend-based-on-max-value","Yes")
CkXml::ckUpdateChildContent(xml,"terms","Annual")
CkXml::ckUpdateChildContentInt(xml,"savings-pct",10)
CkXml::ckUpdateAttrAt(xml,"supplier-invoiceable",1,"type","boolean")
CkXml::ckUpdateChildContent(xml,"supplier-invoiceable","true")
CkXml::ckUpdateAttrAt(xml,"is-default",1,"type","boolean")
CkXml::ckUpdateChildContent(xml,"is-default","true")
CkXml::ckUpdateAttrAt(xml,"preferred",1,"nil","true")
CkXml::ckUpdateAttrAt(xml,"min-commit",1,"type","decimal")
CkXml::ckUpdateChildContent(xml,"min-commit","0.00")
CkXml::ckUpdateAttrAt(xml,"max-commit",1,"type","decimal")
CkXml::ckUpdateChildContent(xml,"max-commit","0.00")
CkXml::ckUpdateChildContent(xml,"supplier-account","")
CkXml::ckUpdateAttrAt(xml,"use-order-windows",1,"type","boolean")
CkXml::ckUpdateChildContent(xml,"use-order-windows","false")
CkXml::ckUpdateChildContent(xml,"order-window-tz","Asia/Kolkata")
CkXml::ckUpdateChildContent(xml,"requisition-message","")
CkXml::ckUpdateChildContent(xml,"po-message","")
CkXml::ckUpdateAttrAt(xml,"legal-agreement-url",1,"nil","true")
CkXml::ckUpdateAttrAt(xml,"current-approval",1,"nil","true")
CkXml::ckUpdateAttrAt(xml,"used-for-buying",1,"type","boolean")
CkXml::ckUpdateChildContent(xml,"used-for-buying","true")
CkXml::ckUpdateAttrAt(xml,"strict-invoicing-rules",1,"type","boolean")
CkXml::ckUpdateChildContent(xml,"strict-invoicing-rules","false")
CkXml::ckUpdateAttrAt(xml,"term-type",1,"nil","true")
CkXml::ckUpdateAttrAt(xml,"auto-extend-end-date-for-renewal",1,"type","boolean")
CkXml::ckUpdateChildContent(xml,"auto-extend-end-date-for-renewal","false")
CkXml::ckUpdateAttrAt(xml,"terminated",1,"type","boolean")
CkXml::ckUpdateChildContent(xml,"terminated","false")
CkXml::ckUpdateAttrAt(xml,"termination-notice",1,"nil","true")
CkXml::ckUpdateAttrAt(xml,"termination-notice-length-unit",1,"nil","true")
CkXml::ckUpdateAttrAt(xml,"termination-notice-length-value",1,"nil","true")
CkXml::ckUpdateAttrAt(xml,"consent",1,"nil","true")
CkXml::ckUpdateAttrAt(xml,"no-of-renewals",1,"nil","true")
CkXml::ckUpdateAttrAt(xml,"renewal-length-unit",1,"nil","true")
CkXml::ckUpdateAttrAt(xml,"renewal-length-value",1,"nil","true")
CkXml::ckUpdateAttrAt(xml,"length-of-notice-unit",1,"nil","true")
CkXml::ckUpdateAttrAt(xml,"length-of-notice-value",1,"nil","true")
CkXml::ckUpdateAttrAt(xml,"source-id",1,"nil","true")
CkXml::ckUpdateAttrAt(xml,"source-type",1,"nil","true")
CkXml::ckUpdateAttrAt(xml,"source",1,"nil","true")
CkXml::ckUpdateAttrAt(xml,"amended-contract-type",1,"nil","true")
CkXml::ckUpdateAttrAt(xml,"quote-response-id",1,"nil","true")
CkXml::ckUpdateChildContent(xml,"description","")
CkXml::ckUpdateAttrAt(xml,"execution-date",1,"nil","true")
CkXml::ckUpdateChildContentInt(xml,"supplier|number",123456)
CkXml::ckUpdateChildContent(xml,"currency|code","USD")
CkXml::ckUpdateAttrAt(xml,"content-groups",1,"type","array")
CkXml::ckUpdateChildContent(xml,"content-groups|content-group|name","Everyone")
CkXml::ckUpdateAttrAt(xml,"reason-insight-events",1,"type","array")
CkXml::ckUpdateChildContent(xml,"schedule|day0","anytime")
CkXml::ckUpdateChildContent(xml,"schedule|day1","anytime")
CkXml::ckUpdateChildContent(xml,"schedule|day2","anytime")
CkXml::ckUpdateChildContent(xml,"schedule|day3","anytime")
CkXml::ckUpdateChildContent(xml,"schedule|day4","anytime")
CkXml::ckUpdateChildContent(xml,"schedule|day5","anytime")
CkXml::ckUpdateChildContent(xml,"schedule|day6","anytime")
CkXml::ckUpdateAttrAt(xml,"contract-terms",1,"type","array")
CkXml::ckUpdateChildContent(xml,"submitter|login","coupasam")
CkXml::ckUpdateAttrAt(xml,"tags",1,"type","array")
CkXml::ckUpdateAttrAt(xml,"taggings",1,"type","array")
CkXml::ckUpdateChildContent(xml,"contract-owner|login","coupasam")
; Adds the "Authorization: Bearer <access_token>" header.
CkHttp::setCkAuthToken(http, "<access_token>")
sbRequestBody.i = CkStringBuilder::ckCreate()
If sbRequestBody.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkXml::ckGetXmlSb(xml,sbRequestBody)
resp.i = CkHttp::ckPTextSb(http,"POST","https://domain.com/contracts/",sbRequestBody,"utf-8","application/xml",0,0)
If CkHttp::ckLastMethodSuccess(http) = 0
Debug CkHttp::ckLastErrorText(http)
CkHttp::ckDispose(http)
CkXml::ckDispose(xml)
CkStringBuilder::ckDispose(sbRequestBody)
ProcedureReturn
EndIf
Debug Str(CkHttpResponse::ckStatusCode(resp))
Debug CkHttpResponse::ckBodyStr(resp)
CkHttpResponse::ckDispose(resp)
CkHttp::ckDispose(http)
CkXml::ckDispose(xml)
CkStringBuilder::ckDispose(sbRequestBody)
ProcedureReturn
EndProcedure
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": [
]
}