Skip to main content

Push API: Permit Create

The Push API: Permit Create allows OPSCOM administrators to integrate external parking systems directly with the OPSCOM Controller. This RESTful integration automatically synchronizes paid or temporary permit details from third-party hardware and software, such as parking meters, pay stations, and mobile parking applications. By pushing active parking instances into the centralized database, administrators ensure real-time compliance tracking and seamless enforcement across all connected devices.

Setup and Configuration

Before third-party systems can transmit transaction data into the system, specific environmental settings and authorization keys must be established.

API access is a premium paid feature andthat requires licensing activation. Organizations must becontact grantedtheir by OPSCOM. Email yourOPSCOM Account Executive to negotiate access.access and enable the endpoint interface for their environment.

Admin Side Configuration

  1. Secure an authenticated API token from your OPS-COM technical representative.

  2. Confirm that all target parking zones match your external hardware naming conventions. Review configuration rules on the Parking Zone Administration page to avoid disconnected reporting errors.

  3. Distribute the production endpoint URL and unique alphanumeric token to your third-party integration developers or vendors (e.g., HotSpot).

Using this Feature

The OPSCOMintegration Controllerrelies provideson an external system triggering HTTP POST requests to the centralized server. The endpoint accepts a simplestandard structured JSON basedpayload APIcontaining toauthorization, integratevehicle with.identity, Clientsand usetime thisboundaries.

API

Endpoint toAddress

directly

POST feed[https://controller.operationscommander.io/api/OC-TOMA/v1/permits/push](https://controller.operationscommander.io/api/OC-TOMA/v1/permits/push)

paid

Request permitHeader detailsRequirements

into OPSCOM from other

External systems suchmust as Parking Meters.  Any permit types whether Validator, Temporary or Standard can be feed to OPSCOM using this API

Make sure you setsupply the following exact headers within every network transmission:

  • Content-Type: application/json

  • Accept: application/json

Request Payload Examples

Raw HTTP Content-TypeRequest

header
HTTP
to be application/json.

Making API Requests

Raw Request:

POST /api/OC-TOMA/v1/permits/push HTTP/1.1
Host: controller.operationscommander.io
Accept: application/json
Content-Type: application/json
Cache-Control: no-cache
{
{
    "apiToken": "YOUR-API-TOKEN",
    "Amount": "14.50",
    "CurrencyID": "CAD",
    "LicencePlate": "PL8RDR",
    "zone": "Lot 4",
    "permitNo": "L4-1138",
    "startTime": "2018-07-02T09:00:00",
    "endTime": "2018-07-02T09:30:00"
,
"promoCode": "DISCOUNT20" }

JavaScript Request:

JavaScript XMLHttpRequest Example

JavaScript

var request = new XMLHttpRequest();
 
 
request.setRequestHeader('Content-Type', 'application/json');
request.setRequestHeader('Accept', 'application/json');
 
request.onreadystatechange = function () {
if if (this.this.readyState === 4) {
    console.log('Status:', this.this.status);
    console.log('Headers:', this.this.getAllResponseHeaders());
    console.log('Body:', this.this.responseText);
} }
};
var
 
var body = {
    "apiToken": "YOUR-API-TOKEN",
    "Amount": "14.50",
    "CurrencyID": "CAD",
    "LicencePlate": "PL8RDR",
    "zone": "Lot 4",
    "permitNo": "L4-1138",
    "startTime": "2018-07-02T09:00:00",
    "endTime": "2018-07-02T09:30:00"
,
"promoCode": "DISCOUNT20" }
;
request.send(JSON.stringify(body));

Request Object Attributes

The endpoint processes incoming data objects using strict key names. Use the definitions below to map external database variables correctly.

Your CAD,
Attribute Type Limits Possible NamesRequired / Optional Description
apiToken String

50-character alphanumeric including dashes

apiToken (Required)Required The unique system token supplied APIby Token.OPSCOM for validation.
LicensePlateString25-characters

plate

LicencePlate

RequiredThe license plate of the vehicle receiving the parking permission.
Amount String 9-character decimal

amount

Amount

(Optional)Optional

Transaction amountamount. This mustMust 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.

CurrencyCurrencyID String 10-characters

currency

CurrencyID

(Optional)Optional Transaction USDcurrency type. Supported defaults include CAD or USD.

Start Date

String

20-characters

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

startTime

StartDateUtc

(Required)Required

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

End Date String

20-characters

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

endTime

EndDateUtc

(Required)Required

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

License PlatepermitNo String 25-50-characters

plate

LicencePlatepermitNo

(Required)Optional The platepermit ofidentifier theor vehicle.unique receipt ID
Ticket Number String 50-characters

permitNo

TicketNumber

(Optional)OptionalThe ticket identifier or unique receipt ID
Zone Namezone String 200-characters

zone

ParkingZoneName

(Optional)Optional

The localized parking area identifier. This should match an explicit string name inside the system. If thethe zone does not match a zone in our system, it will be a disconnected record and may not report properly.

promoCodeString50-characters

promoCode

Optional

Alphanumeric validation string detailing applied customer discounts, validation codes, or free parking promotional campaigns (e.g., HotSpot promo keys).

API Server Responses

Successful Response

Upon successfully accepting and writing a record to the database, the server transmits an HTTP status code 200 OK along with a tracking object.

Successful Response

The response will be a json object.

Content-Type: application/json

JSON

{
    "status": "success",
    "reference_id": "1a9b5375-cb75-4c71-9939-eeae550b09ac",
    "InternalReferenceID": "1a9b5375-cb75-4c71-9939-eeae550b09ac"
}

Best Practices and Considerations

  • Audit third-party zone names precisely. Ensure that zone names passed into the zone parameter exactly match your current system setup. If an external pay station pushes a value that does not correspond with a recognized lot name, it registers as a disconnected record and fails to populate correctly within enforcement reports.

  • Validate promotional campaign metrics. When working with mobile applications like HotSpot, instruct vendors to map their promotional parameters to the promoCode field. Administrators can track usage and verify free or discounted transaction validity by auditing the dedicated promotional code column found on the Paystation Status page.

  • Adhere strictly to UTC string constraints. Confirm that your developers match the ISO-8601 date formatting style explicitly for startTime and endTime. For technical validation, reference the PHP Date Formatting development rules.

{
    "status""success",
    "reference_id""1a9b5375-cb75-4c71-9939-eeae550b09ac",
    "InternalReferenceID""1a9b5375-cb75-4c71-9939-eeae550b09ac"
}