Back to Collection Items
#import <CkoHttp.h>
#import <CkoXml.h>
#import <CkoStringBuilder.h>
#import <CkoHttpResponse.h>
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
CkoHttp *http = [[CkoHttp alloc] init];
BOOL success;
// 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>
//
CkoXml *xml = [[CkoXml alloc] init];
xml.Tag = @"contract";
[xml UpdateChildContent: @"name" value: @"Test API Contract 159753"];
[xml UpdateChildContentInt: @"number" value: [NSNumber numberWithInt: 159753]];
[xml UpdateChildContent: @"type" value: @"Equipment Lease"];
[xml UpdateAttrAt: @"version" autoCreate: YES attrName: @"type" attrValue: @"integer"];
[xml UpdateChildContentInt: @"version" value: [NSNumber numberWithInt: 1]];
[xml UpdateAttrAt: @"start-date" autoCreate: YES attrName: @"type" attrValue: @"dateTime"];
[xml UpdateChildContent: @"start-date" value: @"2021-12-20T00:00:00+05:30"];
[xml UpdateAttrAt: @"end-date" autoCreate: YES attrName: @"type" attrValue: @"dateTime"];
[xml UpdateChildContent: @"end-date" value: @"2022-12-20T00:00:00+05:30"];
[xml UpdateChildContent: @"status" value: @"draft"];
[xml UpdateAttrAt: @"minimum-value" autoCreate: YES attrName: @"type" attrValue: @"decimal"];
[xml UpdateChildContent: @"minimum-value" value: @"100.00"];
[xml UpdateAttrAt: @"maximum-value" autoCreate: YES attrName: @"type" attrValue: @"decimal"];
[xml UpdateChildContent: @"maximum-value" value: @"2000.00"];
[xml UpdateChildContent: @"stop-spend-based-on-max-value" value: @"Yes"];
[xml UpdateChildContent: @"terms" value: @"Annual"];
[xml UpdateChildContentInt: @"savings-pct" value: [NSNumber numberWithInt: 10]];
[xml UpdateAttrAt: @"supplier-invoiceable" autoCreate: YES attrName: @"type" attrValue: @"boolean"];
[xml UpdateChildContent: @"supplier-invoiceable" value: @"true"];
[xml UpdateAttrAt: @"is-default" autoCreate: YES attrName: @"type" attrValue: @"boolean"];
[xml UpdateChildContent: @"is-default" value: @"true"];
[xml UpdateAttrAt: @"preferred" autoCreate: YES attrName: @"nil" attrValue: @"true"];
[xml UpdateAttrAt: @"min-commit" autoCreate: YES attrName: @"type" attrValue: @"decimal"];
[xml UpdateChildContent: @"min-commit" value: @"0.00"];
[xml UpdateAttrAt: @"max-commit" autoCreate: YES attrName: @"type" attrValue: @"decimal"];
[xml UpdateChildContent: @"max-commit" value: @"0.00"];
[xml UpdateChildContent: @"supplier-account" value: @""];
[xml UpdateAttrAt: @"use-order-windows" autoCreate: YES attrName: @"type" attrValue: @"boolean"];
[xml UpdateChildContent: @"use-order-windows" value: @"false"];
[xml UpdateChildContent: @"order-window-tz" value: @"Asia/Kolkata"];
[xml UpdateChildContent: @"requisition-message" value: @""];
[xml UpdateChildContent: @"po-message" value: @""];
[xml UpdateAttrAt: @"legal-agreement-url" autoCreate: YES attrName: @"nil" attrValue: @"true"];
[xml UpdateAttrAt: @"current-approval" autoCreate: YES attrName: @"nil" attrValue: @"true"];
[xml UpdateAttrAt: @"used-for-buying" autoCreate: YES attrName: @"type" attrValue: @"boolean"];
[xml UpdateChildContent: @"used-for-buying" value: @"true"];
[xml UpdateAttrAt: @"strict-invoicing-rules" autoCreate: YES attrName: @"type" attrValue: @"boolean"];
[xml UpdateChildContent: @"strict-invoicing-rules" value: @"false"];
[xml UpdateAttrAt: @"term-type" autoCreate: YES attrName: @"nil" attrValue: @"true"];
[xml UpdateAttrAt: @"auto-extend-end-date-for-renewal" autoCreate: YES attrName: @"type" attrValue: @"boolean"];
[xml UpdateChildContent: @"auto-extend-end-date-for-renewal" value: @"false"];
[xml UpdateAttrAt: @"terminated" autoCreate: YES attrName: @"type" attrValue: @"boolean"];
[xml UpdateChildContent: @"terminated" value: @"false"];
[xml UpdateAttrAt: @"termination-notice" autoCreate: YES attrName: @"nil" attrValue: @"true"];
[xml UpdateAttrAt: @"termination-notice-length-unit" autoCreate: YES attrName: @"nil" attrValue: @"true"];
[xml UpdateAttrAt: @"termination-notice-length-value" autoCreate: YES attrName: @"nil" attrValue: @"true"];
[xml UpdateAttrAt: @"consent" autoCreate: YES attrName: @"nil" attrValue: @"true"];
[xml UpdateAttrAt: @"no-of-renewals" autoCreate: YES attrName: @"nil" attrValue: @"true"];
[xml UpdateAttrAt: @"renewal-length-unit" autoCreate: YES attrName: @"nil" attrValue: @"true"];
[xml UpdateAttrAt: @"renewal-length-value" autoCreate: YES attrName: @"nil" attrValue: @"true"];
[xml UpdateAttrAt: @"length-of-notice-unit" autoCreate: YES attrName: @"nil" attrValue: @"true"];
[xml UpdateAttrAt: @"length-of-notice-value" autoCreate: YES attrName: @"nil" attrValue: @"true"];
[xml UpdateAttrAt: @"source-id" autoCreate: YES attrName: @"nil" attrValue: @"true"];
[xml UpdateAttrAt: @"source-type" autoCreate: YES attrName: @"nil" attrValue: @"true"];
[xml UpdateAttrAt: @"source" autoCreate: YES attrName: @"nil" attrValue: @"true"];
[xml UpdateAttrAt: @"amended-contract-type" autoCreate: YES attrName: @"nil" attrValue: @"true"];
[xml UpdateAttrAt: @"quote-response-id" autoCreate: YES attrName: @"nil" attrValue: @"true"];
[xml UpdateChildContent: @"description" value: @""];
[xml UpdateAttrAt: @"execution-date" autoCreate: YES attrName: @"nil" attrValue: @"true"];
[xml UpdateChildContentInt: @"supplier|number" value: [NSNumber numberWithInt: 123456]];
[xml UpdateChildContent: @"currency|code" value: @"USD"];
[xml UpdateAttrAt: @"content-groups" autoCreate: YES attrName: @"type" attrValue: @"array"];
[xml UpdateChildContent: @"content-groups|content-group|name" value: @"Everyone"];
[xml UpdateAttrAt: @"reason-insight-events" autoCreate: YES attrName: @"type" attrValue: @"array"];
[xml UpdateChildContent: @"schedule|day0" value: @"anytime"];
[xml UpdateChildContent: @"schedule|day1" value: @"anytime"];
[xml UpdateChildContent: @"schedule|day2" value: @"anytime"];
[xml UpdateChildContent: @"schedule|day3" value: @"anytime"];
[xml UpdateChildContent: @"schedule|day4" value: @"anytime"];
[xml UpdateChildContent: @"schedule|day5" value: @"anytime"];
[xml UpdateChildContent: @"schedule|day6" value: @"anytime"];
[xml UpdateAttrAt: @"contract-terms" autoCreate: YES attrName: @"type" attrValue: @"array"];
[xml UpdateChildContent: @"submitter|login" value: @"coupasam"];
[xml UpdateAttrAt: @"tags" autoCreate: YES attrName: @"type" attrValue: @"array"];
[xml UpdateAttrAt: @"taggings" autoCreate: YES attrName: @"type" attrValue: @"array"];
[xml UpdateChildContent: @"contract-owner|login" value: @"coupasam"];
// Adds the "Authorization: Bearer <access_token>" header.
http.AuthToken = @"<access_token>";
CkoStringBuilder *sbRequestBody = [[CkoStringBuilder alloc] init];
[xml GetXmlSb: sbRequestBody];
CkoHttpResponse *resp = [http PTextSb: @"POST" url: @"https://domain.com/contracts/" textData: sbRequestBody charset: @"utf-8" contentType: @"application/xml" md5: NO gzip: NO];
if (http.LastMethodSuccess == NO) {
NSLog(@"%@",http.LastErrorText);
return;
}
NSLog(@"%d",[resp.StatusCode intValue]);
NSLog(@"%@",resp.BodyStr);
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": [
]
}