# Push API: Permit Update

<p class="callout info"><span data-colorid="h5go72n8lk">API access is a paid feature and must be granted by OPSCOM. Email your Account Executive to negotiate access. </span></p>

The OPSCOM Controller provides a simple JSON based API to integrate with. Clients use this API to directly feed paid permit details into OPSCOM from other systems such as Parking Apps.

Make sure you set the HTTP Content-Type header to be application/json.

## <span data-colorid="i82mzfit94">Making API Requests</span>

### Raw Request:

<div class="sectionMacroRow" id="bkmrk-post-%2Fapi%2Foc-toma%2Fv1"><div class="columnMacro conf-macro output-block" data-hasbody="true" data-macro-id="d82683ac-7548-4419-a8f9-4dd2f5a2e52e" data-macro-name="column"><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-id="3628c7b8-0e3b-4ad3-8cd3-23cd3d72d42d" data-macro-name="code"><div class="codeContent panelContent pdl"><div><div class="syntaxhighlighter sh-midnight nogutter  text" id="bkmrk-post-%2Fapi%2Foc-toma%2Fv1-1"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container" title="Hint: double-click to select code"><div class="line number1 index0 alt2">`POST /api/OC-TOMA/v1/permits/update HTTP/1.1`</div><div class="line number2 index1 alt1">`Host: controller.operationscommander.io`</div><div class="line number3 index2 alt2">`Accept: application/json`</div><div class="line number4 index3 alt1">`Content-Type: application/json`</div><div class="line number5 index4 alt2">`Cache-Control: no-cache`</div><div class="line number6 index5 alt1"> </div><div class="line number7 index6 alt2">`{`</div><div class="line number8 index7 alt1">`    ``"apiToken": "YOUR-API-TOKEN",`</div><div class="line number9 index8 alt2">`    ``"referenceID": "PREVIOUS-REFERENCE-ID",`</div><div class="line number10 index9 alt1">`    ``"plate": "PL8RDR",`</div><div class="line number11 index10 alt2">`    ``"Amount": "14.50",`</div><div class="line number12 index11 alt1">`    ``"currency": "CAD",`</div><div class="line number13 index12 alt2">`    ``"endTime": "2018-07-02T09:30:00"`</div><div class="line number14 index13 alt1">`}`</div></div></td></tr></tbody></table>

</div></div></div></div></div><div class="columnMacro conf-macro output-block" data-hasbody="true" data-macro-id="96733877-01a7-4c30-9e62-30b67dd186b6" data-macro-name="column">  
</div></div>### JavaScript Request:

<div class="sectionMacroRow" id="bkmrk-var%C2%A0request-%3D%C2%A0new%C2%A0xm"><div class="columnMacro conf-macro output-block" data-hasbody="true" data-macro-id="96733877-01a7-4c30-9e62-30b67dd186b6" data-macro-name="column"><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-id="b10a8ba8-3a1d-4764-9a4e-c63537336cd5" data-macro-name="code"><div class="codeContent panelContent pdl"><div><div class="syntaxhighlighter sh-midnight nogutter  js"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container" title="Hint: double-click to select code"><div class="line number1 index0 alt2">`var` `request = ``new` `XMLHttpRequest();`</div><div class="line number2 index1 alt1"> </div><div class="line number3 index2 alt2">`request.open(``'POST'``, ``'<a href="https://controller.operationscommander.io/api/OC-TOMA/v1/permits/update'">https://controller.operationscommander.io/api/OC-TOMA/v1/permits/update'</a>``);`</div><div class="line number4 index3 alt1"> </div><div class="line number5 index4 alt2">`request.setRequestHeader(``'Content-Type'``, ``'application/json'``);`</div><div class="line number6 index5 alt1">`request.setRequestHeader(``'Accept'``, ``'application/json'``);`</div><div class="line number7 index6 alt2"> </div><div class="line number8 index7 alt1">`request.onreadystatechange = ``function` `() {`</div><div class="line number9 index8 alt2">`  ``if` `(``this``.readyState === 4) {`</div><div class="line number10 index9 alt1">`    ``console.log(``'Status:'``, ``this``.status);`</div><div class="line number11 index10 alt2">`    ``console.log(``'Headers:'``, ``this``.getAllResponseHeaders());`</div><div class="line number12 index11 alt1">`    ``console.log(``'Body:'``, ``this``.responseText);`</div><div class="line number13 index12 alt2">`  ``}`</div><div class="line number14 index13 alt1">`};`</div><div class="line number15 index14 alt2"> </div><div class="line number16 index15 alt1"> </div><div class="line number17 index16 alt2">`var` `body = {`</div><div class="line number18 index17 alt1">`    ``"apiToken"``: ``"YOUR-API-TOKEN"``,`</div><div class="line number19 index18 alt2">`    ``"referenceID"``: ``"PREVIOUS-REFERENCE-ID"``,`</div><div class="line number20 index19 alt1">`    ``"plate"``: ``"PL8RDR"``,`</div><div class="line number21 index20 alt2">`    ``"Amount"``: ``"14.50"``,`</div><div class="line number22 index21 alt1">`    ``"currency"``: ``"CAD"``,`</div><div class="line number23 index22 alt2">`    ``"endTime"``: ``"2018-07-02T09:30:00"`</div><div class="line number24 index23 alt1">`}`</div><div class="line number25 index24 alt2">`request.send(JSON.stringify(body));`</div></div></td></tr></tbody></table>

</div></div></div></div></div></div>## <span data-colorid="g19uwjzxss">Request Object Attributes</span>

<div class="table-wrap" id="bkmrk-attribute-type-limit"><table class="wrapped confluenceTable tablesorter tablesorter-default" role="grid"><colgroup><col></col><col></col><col></col><col></col><col></col></colgroup><thead><tr class="tablesorter-headerRow" role="row"><th aria-disabled="false" aria-label="Attribute: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" tabindex="0">Attribute</th><th aria-disabled="false" aria-label="Type: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" tabindex="0">Type</th><th aria-disabled="false" aria-label="Limits: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="2" role="columnheader" scope="col" tabindex="0">Limits</th><th aria-disabled="false" aria-label="Possible Names: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="3" role="columnheader" scope="col" tabindex="0">Possible Names</th><th aria-disabled="false" aria-label="Description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" colspan="1" data-column="4" role="columnheader" scope="col" tabindex="0">Description</th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row"><td class="confluenceTd" colspan="1">apiToken</td><td class="confluenceTd" colspan="1">String</td><td class="confluenceTd" colspan="1">50-character alphanumeric including dashes

</td><td class="confluenceTd" colspan="1">apiToken</td><td class="confluenceTd" colspan="1">**(Required)** Your supplied API Token.</td></tr><tr role="row"><td class="confluenceTd" colspan="1">Reference ID

</td><td class="confluenceTd" colspan="1">String</td><td class="confluenceTd" colspan="1">50-character alphanumeric including dashes</td><td class="confluenceTd" colspan="1">referenceid

referenceID

reference\_id

</td><td class="confluenceTd" colspan="1">**(Required)** This value is supplied to when the permit push api is successful.

e.g. 1a9b5375-cb75-4c71-9939-eeae550b09ac

</td></tr><tr role="row"><td class="confluenceTd" colspan="1">End Date</td><td class="confluenceTd" colspan="1">String</td><td class="confluenceTd" colspan="1">20-characters

Y-m-d\\TH:i:s format.

</td><td class="confluenceTd" colspan="1">endTime

EndDateUtc

</td><td class="confluenceTd" colspan="1">*(Optional)* Must be in the format of Y-m-d\\TH:i:s

e.g. 2000-05-30T14:38:22

For formatting help, see [PHP Date Formatting](http://php.net/manual/en/function.date.php)

</td></tr><tr role="row"><td class="confluenceTd" colspan="1">License Plate</td><td class="confluenceTd" colspan="1">String</td><td class="confluenceTd" colspan="1">25-characters</td><td class="confluenceTd" colspan="1">plate

LicencePlate

</td><td class="confluenceTd" colspan="1">*(Optional)* The plate of the vehicle.</td></tr><tr role="row"><td class="confluenceTd" colspan="1">Amount</td><td class="confluenceTd" colspan="1">String</td><td class="confluenceTd" colspan="1">9-character decimal</td><td class="confluenceTd" colspan="1">amount

Amount

</td><td class="confluenceTd" colspan="1">*(Optional)* Transaction amount This must contain at least 3 digits, two of which are penny values.

The minimum allowable value is $0.01, and the maximum allowable value is $999999.99.

</td></tr><tr role="row"><td class="confluenceTd" colspan="1">Currency</td><td class="confluenceTd" colspan="1">String</td><td class="confluenceTd" colspan="1">10-characters</td><td class="confluenceTd" colspan="1">currency

CurrencyID

</td><td class="confluenceTd" colspan="1">*(Optional)* CAD, USD</td></tr></tbody></table>

</div>## Successful Response

The response will be a json object. The same reference id will be returned.

Content-Type: application/json

<div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-id="81852e34-68eb-40c1-bbe1-6bea340375f6" data-macro-name="code" id="bkmrk-%7B-%C2%A0%C2%A0%C2%A0%C2%A0%22status%22%3A%C2%A0%22suc"><div class="codeContent panelContent pdl"><div><div class="syntaxhighlighter sh-midnight nogutter  js" id="bkmrk-%7B-%C2%A0%C2%A0%C2%A0%C2%A0%22status%22%3A%C2%A0%22suc-1"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container" title="Hint: double-click to select code"><div class="line number1 index0 alt2">`{`</div><div class="line number2 index1 alt1">`    ``"status"``: ``"success"``,`</div><div class="line number3 index2 alt2">`    ``"reference_id"``: ``"1a9b5375-cb75-4c71-9939-eeae550b09ac"``,`</div><div class="line number4 index3 alt1">`    ``"InternalReferenceID"``: ``"1a9b5375-cb75-4c71-9939-eeae550b09ac"`</div><div class="line number5 index4 alt2">`}`</div></div></td></tr></tbody></table>

</div></div></div></div><div class="sectionMacroRow" id="bkmrk-"><div class="columnMacro conf-macro output-block" data-hasbody="true" data-macro-id="96733877-01a7-4c30-9e62-30b67dd186b6" data-macro-name="column"><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-id="b10a8ba8-3a1d-4764-9a4e-c63537336cd5" data-macro-name="code"><div class="codeContent panelContent pdl"><div><div class="syntaxhighlighter sh-midnight nogutter  js" id="bkmrk--1"></div></div></div></div></div></div>