# Pull API: Plate Validation

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

<span data-colorid="jxyfufcemk">Use this API to obtain details related to a plate. Plate details include permits, alerts and DNTT status.</span>

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

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

### Raw Request

<div class="columnLayout single" data-layout="single" id="bkmrk-post-%2Fapi%2Fv1%2Fvalidat"><div class="cell normal" data-type="normal"><div class="innerCell"><div class="sectionColumnWrapper conf-macro output-block" data-hasbody="true" data-macro-id="d503d80b-2e42-4b16-9900-62109b8a9ac4" data-macro-name="section"><div class="sectionMacroWithBorder"><div class="sectionMacroRow"><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="e0f00b72-fb34-406b-8191-44548c0c6a03" data-macro-name="code"><div class="codeContent panelContent pdl"><div><div class="syntaxhighlighter sh-midnight nogutter  text" id="bkmrk-post-%2Fapi%2Fv1%2Fvalidat-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/v1/validate/plate HTTP/1.1`</div><div class="line number2 index1 alt1">`Host: service.OPSCOM.com`</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">`    ``"api_token": "YOUR-API-TOKEN",`</div><div class="line number9 index8 alt2">`    ``"client": "<client ID>",`</div><div class="line number10 index9 alt1">`    ``"plate": "<plate to validate>"`</div><div class="line number11 index10 alt2">`}`</div></div></td></tr></tbody></table>

</div></div></div></div></div></div></div></div></div></div></div>### JavaScript Request

<div class="columnLayout single" data-layout="single" id="bkmrk-var%C2%A0request-%3D%C2%A0new%C2%A0xm"><div class="cell normal" data-type="normal"><div class="innerCell"><div class="sectionColumnWrapper conf-macro output-block" data-hasbody="true" data-macro-id="d503d80b-2e42-4b16-9900-62109b8a9ac4" data-macro-name="section"><div class="sectionMacroWithBorder"><div class="sectionMacroRow"><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="27c0aef3-a976-47d7-8822-ce06e320ad25" data-macro-name="code"><div class="codeContent panelContent pdl"><div><div class="syntaxhighlighter sh-midnight nogutter  js" id="bkmrk-var%C2%A0request-%3D%C2%A0new%C2%A0xm-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">`var` `request = ``new` `XMLHttpRequest();`</div><div class="line number2 index1 alt1"> </div><div class="line number3 index2 alt2">`request.open(``'POST'``, ``'<a href="https://service.OPSCOM.com/api/v1/validate/plate'">https://service.OPSCOM.com/api/v1/validate/plate'</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">`    ``"api_token"``: ``"YOUR-API-TOKEN"``,`</div><div class="line number19 index18 alt2">`    ``"client"``: ``"<client ID>"``,`</div><div class="line number20 index19 alt1">`    ``"plate"``: ``"<plate to validate>"`</div><div class="line number21 index20 alt2">`}`</div><div class="line number22 index21 alt1">`request.send(JSON.stringify(body));`</div></div></td></tr></tbody></table>

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

<div class="columnLayout single" data-layout="single" id="bkmrk-api_token-string-50-"><div class="cell normal" data-type="normal"><div class="innerCell"><div class="table-wrap"><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"></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row"><td class="confluenceTd" colspan="1">api\_token</td><td class="confluenceTd" colspan="1">String</td><td class="confluenceTd" colspan="1">50-character alphanumeric including dashes.

</td><td class="confluenceTd" colspan="1">  
</td><td class="confluenceTd" colspan="1">**(Required)** Your supplied API Token.</td></tr><tr role="row"><td class="confluenceTd" colspan="1">client</td><td class="confluenceTd" colspan="1">String</td><td class="confluenceTd" colspan="1">client identifier</td><td class="confluenceTd" colspan="1">  
</td><td class="confluenceTd" colspan="1">**Required**</td></tr><tr role="row"><td class="confluenceTd" colspan="1">plate</td><td class="confluenceTd" colspan="1">String</td><td class="confluenceTd" colspan="1">vehicle plate</td><td class="confluenceTd" colspan="1">  
</td><td class="confluenceTd" colspan="1">**Required**</td></tr></tbody></table>

</div></div></div></div>## Response Values

<div class="columnLayout single" data-layout="single" id="bkmrk-error-integer-error-"><div class="cell normal" data-type="normal"><div class="innerCell"><div class="table-wrap"><table class="confluenceTable tablesorter tablesorter-default" role="grid"><colgroup><col></col><col></col><col></col><col></col></colgroup><thead><tr class="tablesorter-headerRow" role="row"></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row"><td class="confluenceTd" colspan="1">error</td><td class="confluenceTd" colspan="1">integer</td><td class="confluenceTd" colspan="1">error code</td><td class="confluenceTd" colspan="1">0=success</td></tr><tr role="row"><td class="confluenceTd" colspan="1">data</td><td class="confluenceTd" colspan="1">JSON bundle</td><td class="confluenceTd" colspan="1">returned data</td><td class="confluenceTd" colspan="1">  
</td></tr><tr role="row"><td class="confluenceTd">data.response</td><td class="confluenceTd">String</td><td class="confluenceTd">{permits}\\n\\nALARM: {alarm}\\n\\n DNTT: {DNTT}

</td><td class="confluenceTd" colspan="1">empty if no data</td></tr><tr role="row"><td class="confluenceTd">data.plate</td><td class="confluenceTd">String</td><td class="confluenceTd">plate validated</td><td class="confluenceTd" colspan="1">  
</td></tr><tr role="row"><td class="confluenceTd" colspan="1">data.responseJSON</td><td class="confluenceTd" colspan="1">JSON bundle</td><td class="confluenceTd" colspan="1">response in JSON</td><td class="confluenceTd" colspan="1">  
</td></tr><tr role="row"><td class="confluenceTd" colspan="1">data.responseJSON.permits</td><td class="confluenceTd" colspan="1">Array</td><td class="confluenceTd" colspan="1">array of permits

- type, (lot) shortName, expires

</td><td class="confluenceTd" colspan="1">all elements: String</td></tr><tr role="row"><td class="confluenceTd" colspan="1">data.responseJSON.dntt</td><td class="confluenceTd" colspan="1">Array</td><td class="confluenceTd" colspan="1">array of DNTT (do not ticket tow) results

- notes, location, start, end

</td><td class="confluenceTd" colspan="1">all elements: String</td></tr><tr role="row"><td class="confluenceTd" colspan="1">data.responseJSON.alarm</td><td class="confluenceTd" colspan="1">String</td><td class="confluenceTd" colspan="1">alarm associated with plate</td><td class="confluenceTd" colspan="1">or linked driver</td></tr><tr role="row"><td class="confluenceTd" colspan="1">message</td><td class="confluenceTd" colspan="1">String</td><td class="confluenceTd" colspan="1">system error message</td><td class="confluenceTd" colspan="1">  
</td></tr></tbody></table>

</div>---

</div></div></div>### Successful Response

The response will be a json object.

Content-Type: application/json

<div class="columnLayout single" data-layout="single" id="bkmrk-%2F%2A-%C2%A0%C2%A0%C2%A0%C2%A0the-below-res"><div class="cell normal" data-type="normal"><div class="innerCell"><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-id="db38aafe-8712-40c9-8a94-4303ba5151c0" data-macro-name="code"><div class="codeContent panelContent pdl"><div><div class="syntaxhighlighter sh-midnight nogutter  js" id="bkmrk-%2F%2A-%C2%A0%C2%A0%C2%A0%C2%A0the-below-res-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">`    ``The below response is a merged example of different fields that may be in the response.`</div><div class="line number3 index2 alt2">`    ``- 'type' may be: standard, temp, Validated, T2, HotSpot, or any other "origin"`</div><div class="line number4 index3 alt1">`*/`</div><div class="line number5 index4 alt2"> </div><div class="line number6 index5 alt1">`/* sample response with many included details */`</div><div class="line number7 index6 alt2">`{`</div><div class="line number8 index7 alt1">`    ``"error"``: 0,`</div><div class="line number9 index8 alt2">`    ``"data"``: {`</div><div class="line number10 index9 alt1"> </div><div class="line number11 index10 alt2">`        ``/* 'response' is a string concatenated list of all values carriage return delineated */`</div><div class="line number12 index11 alt1">`        ``"response"``: ``"standard: BIKE\n Expires: 2025-04-30 23:59:59\nstandard: MOTO-S\n Expires: 2025-04-30 23:59:59\n\nALARM: Wanted to talk with.\n\nDNTT: Main Campus\n2024-11-15 00:00:00-2024-11-15 23:59:00 \nCLEAR FOR ANY PAY AREA\n\n"``,`</div><div class="line number13 index12 alt2"> </div><div class="line number14 index13 alt1">`        ``"plate"``: ``"ABC123"``,`</div><div class="line number15 index14 alt2"> </div><div class="line number16 index15 alt1">`        ``"responseJSON"``: {`</div><div class="line number17 index16 alt2">`            ``"permits"``: [`</div><div class="line number18 index17 alt1">`                ``{`</div><div class="line number19 index18 alt2">`                    ``"expires"``: ``"2025-04-30 23:59:59"``,`</div><div class="line number20 index19 alt1">`                    ``"type"``: ``"standard"``,`</div><div class="line number21 index20 alt2">`                    ``"shortName"``: ``"BIKE"`</div><div class="line number22 index21 alt1">`                ``},`</div><div class="line number23 index22 alt2">`                ``{`</div><div class="line number24 index23 alt1">`                    ``"expires"``: ``"2025-04-30 23:59:59"``,`</div><div class="line number25 index24 alt2">`                    ``"type"``: ``"standard"``,`</div><div class="line number26 index25 alt1">`                    ``"shortName"``: ``"MOTO-S"`</div><div class="line number27 index26 alt2">`                ``}`</div><div class="line number28 index27 alt1">`            ``],`</div><div class="line number29 index28 alt2"> </div><div class="line number30 index29 alt1">`            ``/* like 'permits', 'dntt' (do not ticket or tow) could be an array of values */`</div><div class="line number31 index30 alt2">`            ``"dntt"``: [{`</div><div class="line number32 index31 alt1">`                ``"notes"``: ``"CLEAR FOR ANY PAY AREA"``,`</div><div class="line number33 index32 alt2">`                ``"start"``: ``"2024-11-15 00:00:00"``,`</div><div class="line number34 index33 alt1">`                ``"location"``: ``"Main Campus"``,`</div><div class="line number35 index34 alt2">`                ``"end"``: ``"2024-11-15 23:59:00"`</div><div class="line number36 index35 alt1">`            ``}],`</div><div class="line number37 index36 alt2"> </div><div class="line number38 index37 alt1">`            ``"alarm"``:``"Wanted to talk with."`</div><div class="line number39 index38 alt2">`        ``},`</div><div class="line number40 index39 alt1">`    ``}`</div><div class="line number41 index40 alt2">`    ``"message"``: ``""`</div><div class="line number42 index41 alt1">`}`</div></div></td></tr></tbody></table>

</div></div></div></div></div></div></div>### Response Samples

Any response listed below could be merged with any other. This is a list of possible responses to demonstrate responses with data.

<div class="columnLayout single" data-layout="single" id="bkmrk-%2F%2A-no-data-%2A%2F-%7B-%C2%A0%C2%A0%C2%A0%C2%A0"><div class="cell normal" data-type="normal"><div class="innerCell"><div class="code panel pdl conf-macro output-block" data-hasbody="true" data-macro-id="93050983-cc38-43ec-9e07-606dacba6ecd" data-macro-name="code"><div class="codeContent panelContent pdl"><div><div class="syntaxhighlighter sh-midnight nogutter  js" id="bkmrk-%2F%2A-no-data-%2A%2F-%7B-%C2%A0%C2%A0%C2%A0%C2%A0-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">`/* No data */`</div><div class="line number2 index1 alt1">`{`</div><div class="line number3 index2 alt2">`    ``"error"``: 0,`</div><div class="line number4 index3 alt1">`    ``"data"``: {`</div><div class="line number5 index4 alt2">`        ``"response"``: ``""``,`</div><div class="line number6 index5 alt1">`        ``"plate"``: ``"ABC123"``,`</div><div class="line number7 index6 alt2">`        ``"responseJSON"``: {}`</div><div class="line number8 index7 alt1">`    ``},`</div><div class="line number9 index8 alt2">`    ``"message"``: ``""`</div><div class="line number10 index9 alt1">`}`</div><div class="line number11 index10 alt2"> </div><div class="line number12 index11 alt1">`/* standard (temp, Validated, T2, HotSpot, ...) */`</div><div class="line number13 index12 alt2">`{`</div><div class="line number14 index13 alt1">`    ``"error"``: 0,`</div><div class="line number15 index14 alt2">`    ``"data"``: {`</div><div class="line number16 index15 alt1">`            ``"response"``: ``"standard: LOT3\n Expires: 2025-04-30 23:59:59\nstandard: MOTO-S\n Expires: 2025-04-30 23:59:59\n\n"``,`</div><div class="line number17 index16 alt2">`            ``"plate"``: ``"ABC890"``,`</div><div class="line number18 index17 alt1">`            ``"responseJSON"``: {`</div><div class="line number19 index18 alt2">`                ``"permits"``: [`</div><div class="line number20 index19 alt1">`                    ``{`</div><div class="line number21 index20 alt2">`                        ``"expires"``: ``"2025-04-30 23:59:59"``,`</div><div class="line number22 index21 alt1">`                        ``"type"``: ``"standard"``,`</div><div class="line number23 index22 alt2">`                        ``"shortName"``: ``"BIKE"`</div><div class="line number24 index23 alt1">`                    ``},`</div><div class="line number25 index24 alt2">`                    ``{`</div><div class="line number26 index25 alt1">`                        ``"expires"``: ``"2025-04-30 23:59:59"``,`</div><div class="line number27 index26 alt2">`                        ``"type"``: ``"standard"``,`</div><div class="line number28 index27 alt1">`                        ``"shortName"``: ``"MOTO-S"`</div><div class="line number29 index28 alt2">`                    ``}`</div><div class="line number30 index29 alt1">`            ``],`</div><div class="line number31 index30 alt2">`        ``}`</div><div class="line number32 index31 alt1">`    ``},`</div><div class="line number33 index32 alt2">`    ``"message"``: ``""`</div><div class="line number34 index33 alt1">`}`</div><div class="line number35 index34 alt2"> </div><div class="line number36 index35 alt1">`/* plate with alarm */`</div><div class="line number37 index36 alt2">`{`</div><div class="line number38 index37 alt1">`    ``"error"``: 0,`</div><div class="line number39 index38 alt2">`    ``"data"``: {`</div><div class="line number40 index39 alt1">`            ``"response"``: ``"ALARM: 15-AS123 Lex Luthor (08 JUL 84) wanted by OPS.\r\n\r\n*** Violence / Weapons ***\n\n"``,`</div><div class="line number41 index40 alt2">`            ``"plate"``: ``"ABC456"``,`</div><div class="line number42 index41 alt1">`            ``"responseJSON"``: {`</div><div class="line number43 index42 alt2">`                ``"alarm"``: ``"15-AS123 Lex Luthor (08 JUL 84) wanted by OPS.\r\n\r\n*** Violence / Weapons ***"`</div><div class="line number44 index43 alt1">`        ``}`</div><div class="line number45 index44 alt2">`    ``},`</div><div class="line number46 index45 alt1">`    ``"message"``: ``""`</div><div class="line number47 index46 alt2">`}`</div><div class="line number48 index47 alt1"> </div><div class="line number49 index48 alt2">`/* DNTT: do not ticket or tow */`</div><div class="line number50 index49 alt1">`{`</div><div class="line number51 index50 alt2">`    ``"error"``: 0,`</div><div class="line number52 index51 alt1">`    ``"data"``: {`</div><div class="line number53 index52 alt2">`        ``"response"``: ``"DNTT: Lot 6\n2024-10-23 00:00:00-2025-04-30 23:59:00 \nHertz truck has permission to park overnight in lot 6. Rental for We-Move-It Services\n\n"``,`</div><div class="line number54 index53 alt1">`        ``"plate"``: ``"DEF123"``,`</div><div class="line number55 index54 alt2">`        ``"responseJSON"``: {`</div><div class="line number56 index55 alt1">`            ``"permits"``: [],`</div><div class="line number57 index56 alt2">`            ``"dntt"``: [`</div><div class="line number58 index57 alt1">`                ``{`</div><div class="line number59 index58 alt2">`                    ``"notes"``: ``"Hertz truck has permission to park overnight in lot 6. Rental for We-Move-It Services"``,`</div><div class="line number60 index59 alt1">`                    ``"start"``: ``"2024-10-23 00:00:00"``,`</div><div class="line number61 index60 alt2">`                    ``"location"``: ``"Lot 6"``,`</div><div class="line number62 index61 alt1">`                    ``"end"``: ``"2025-04-30 23:59:00"`</div><div class="line number63 index62 alt2">`                ``}`</div><div class="line number64 index63 alt1">`            ``],`</div><div class="line number65 index64 alt2">`            ``"active"``: ``"1"`</div><div class="line number66 index65 alt1">`        ``}`</div><div class="line number67 index66 alt2">`    ``},`</div><div class="line number68 index67 alt1">`    ``"message"``: ``""`</div><div class="line number69 index68 alt2">`}`</div></div></td></tr></tbody></table>

</div></div></div></div></div></div></div>