APX — PARCS Starter Profile (0.16.0)

Download OpenAPI specification:

APX Standard Working Group (stewarded by Umojo): rneubauer@umojo.com License: MIT

An open companion standard to APDS 4.1

The MINIMUM APX surface for a PARCS vendor: apx-data + apx-events + apx-control, plus the read side of apx-site-config (equipment and comms points). A subset of the full APX specification (apx-v1) — every path and schema here is identical to the full spec. See docs/parcs-starter-profile.md for the build order.

Discovery

Where every integration starts. A partner needs exactly one thing to begin: a hostname.

GET /.well-known/apx-configuration is unauthenticated and served at the host root. It answers where to get a token, which optional conformance classes this server implements, and where its code-list registries are published. GET /v1/discovery then answers the narrower and more useful question: what can this credential do? The document it returns is the intersection of the server's classes with the caller's scopes and place grants.

Discovery is contractual, not advertising: everything the document lists will work for the caller, and anything it omits will refuse with a clean 403. That is what makes onboarding a new vendor a matter of issuing a credential rather than exchanging PDFs.

Written standard: Part 16.

Bootstrap configuration document

Unauthenticated bootstrap document. Advertises the token endpoint, the APDS version this implementation extends, supported APX conformance classes, and code-list registry locations.

Served at the server root (NOT under /v1), per RFC 8615.

Responses

Response samples

Content type
application/json
{
  • "apxVersion": "0.1.0",
  • "edition": "0.16.0",
  • "apdsVersion": "4.1",
  • "tokenEndpoint": "http://example.com",
  • "conformanceClasses": [
    ],
  • "features": [
    ],
  • "registries": {},
  • "registryVersions": {
    },
  • "extensions": {
    }
}

Data

Reading and writing parking data, and staying in sync.

The data routes themselves are APDS 4.1's own, mounted verbatim: /places, /sessions, /rates, /rights/specs, /rights/assigned, /observations, /contacts, /quotes. APX invents nothing here on purpose, because data exchange is the part the industry already agreed on.

What APX adds is a profile over those routes, all of it additive and invisible to a client that ignores it: full versus change update semantics, tombstones for deletions, and a cursor-based change feed that is ordered, gapless, and exactly-once, so a partner that goes offline for an hour replays precisely what it missed. Partial writes make null mean clear this field and omission mean leave it alone, which retires the oldest bug in data integration.

The one net-new read here is the occupancy snapshot: how full a garage, level, or zone is right now, without walking the whole Place hierarchy.

Two decorations on the APDS Session carry what other systems decided about a stay: the pairing of reads behind it (session-detail), and the compliance outcome an engine scored for it (stay-compliance), which is served only under its own scope.

Written standard: Part 5.

Current occupancy snapshot for a place element

"How full is it right now" for one HierarchyElement, without pulling the Place hierarchy. A pure convenience READ over the APDS occupancy model (Supply + DemandTable) — the Place payload remains the source of truth. Fields the implementation does not know are simply absent. Threshold crossings publish apx.data.occupancy.v1 and SHOULD raise an occupancyThresholdExceeded alert (Part 7). Scope apx.data:read; the place grant must cover the element.

Authorizations:
apxOAuth
path Parameters
id
required
string <uuid>

HierarchyElement UUID (Place, Level, Area, …).

Responses

Response samples

Content type
application/json
{
  • "place": {
    },
  • "computedAt": "2026-08-25T17:45:00Z",
  • "supply": {
    },
  • "demand": {
    },
  • "available": 59
}

Subscription

Push instead of poll. A superset-compatible profile of the APDS 4.1 /webhooks endpoint: stock APDS subscription bodies work here unmodified.

Webhooks without rules are where integrations go to die, so the delivery contract is normative rather than best-effort. Every delivery is one uniform envelope, HMAC-signed so the receiver can prove it is genuine, carrying a stable event id so duplicates are detectable. Failed deliveries follow a published retry schedule before the subscription is marked failed, which itself raises an alert. The delivery ledger records every attempt and its result.

Subscriptions filter by place and by severity, so a partner receives only its own world, and an event whose place cannot be resolved is dropped rather than leaked. Server-sent events carry the same envelopes for consumers that cannot host a public endpoint.

Written standard: Part 8.

Subscribe to event topics (APDS-compatible superset)

Creates a subscription. A stock APDS 4.1 EventSubscription ({endpoint, topics[]} with EventTypeEnum values) is a valid body; APX fields (transport, filters, secret) are additive.

Response negotiation (normative, Part 8 §8.1): the stock APDS 4.1 response contract is preserved — a request WITHOUT Prefer: return=representation receives the native APDS 200/202 with ResponseStatus, exactly as APDS documents. An APX client sends Prefer: return=representation and receives 201 with the full subscription INCLUDING the signing secret (returned exactly once, in that response only; webhook transport only).

Refusals at creation (Part 8 §8.1): a topic the credential could not read synchronously is 403 insufficient-scope (Part 9 §9.6(4)); a filters.places entry outside the token's apx_places grant is 403 insufficient-grant. Send Idempotency-Key to make a retried create safe.

Authorizations:
apxOAuthoAuth
header Parameters
Prefer
string
Value: "return=representation"

RFC 7240. return=representation selects the APX-rich 201 response (subscription + one-time secret). Absent, the server answers with the stock APDS 200/202 ResponseStatus contract.

Idempotency-Key
string

When given, the operation is idempotent per Part 4 §4.2a: a replay with the same body returns the current representation (200), a different body is 409 idempotency-conflict. Clients that retry SHOULD send it.

Request Body schema: application/json
required
id
string <uuid>

Assigned at creation; used with DELETE/PATCH /webhooks/{id}.

version
integer >= 1
endpoint
string (Url)

Client endpoint URL for webhook deliveries (required for transport=webhook).

topics
required
Array of strings non-empty

APDS EventTypeEnum values (e.g. SessionCreated) and/or APX topics (apx...vN) — freely mixed.

transport
string
Default: "webhook"
Enum: "webhook" "sse"
object (SubscriptionFilters)

Server-side delivery filtering.

secret
string

HMAC signing secret (≥32 bytes of entropy, used as raw UTF-8 key material; shorter is 400 invalid-request). For transport: webhook only: server-generated when absent and returned EXACTLY ONCE — in the Prefer=representation creation response. Never present in GET/PATCH responses. An SSE subscription has nothing to sign and gets no secret (Part 8 §8.1).

secretRef
string

Identifier of an out-of-band-exchanged secret (Part 9 §9.4) — supply INSTEAD of secret when key material must never transit the API. Never a secret value itself.

keyId
string

Identifier the client chooses for the key it supplies with secret or secretRef; deliveries signed with that key carry it in APX-Key-Id. Server-assigned when absent (Part 8 §8.1).

retireKeyIds
Array of strings

PATCH only: key ids to retire now, ending a rotation overlap early. Retiring the last active key is 400 invalid-request. Without it, the server retires the superseded key 24 hours after the rotation (Part 8 §8.1).

status
string
Enum: "active" "paused" "failed"

active delivers; paused holds matching events for up to 24 hours and delivers them in order on resume (Part 8 §8.1); failed is server-assigned when the retry schedule is exhausted (a client setting it is 400 invalid-request). PATCH status: active to resume a paused or failed subscription.

object (RecordInfo)

Provenance metadata for an APX resource, aligned to the APDS Information Model's RecordType (creationTime/creator/lastUpdate). All timestamps are RFC 3339 (APDS DateTime).

object (Extensions)

The official APDS extension container (Use Case Document §C.2.5). Keys MUST follow apds-ext:<namespace>:<class>@<major>.<minor>. Implementations MUST preserve unknown extension keys on round-trip (tolerant reader, faithful writer). An APX decoration key, wherever the container appears, MUST carry a value valid against that decoration's schema (Part 4 §4.3); other keys are any object.

Responses

Request samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "version": 1,
  • "topics": [
    ],
  • "transport": "webhook",
  • "filters": {
    },
  • "secret": "string",
  • "secretRef": "string",
  • "keyId": "string",
  • "retireKeyIds": [
    ],
  • "status": "active",
  • "recordInfo": {
    },
  • "extensions": {
    }
}

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 0,
  • "message": "string",
  • "ids": [
    ]
}

List subscriptions (APX additive operation)

Lists subscriptions visible to the caller. Secrets are never returned.

Authorizations:
apxOAuthoAuth
query Parameters
page
integer >= 1

The page number for paginated responses.

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": [
    ]
}

Read one subscription (APX additive operation)

Returns one subscription the caller may see — its status, activeKeyIds, and filters — without paging through GET /webhooks. Secrets are never returned. Readable in every state, including failed (Part 8 §8.1).

Authorizations:
apxOAuthoAuth
path Parameters
id
required
string

Unique identifier for the existing subscription

Responses

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "version": 1,
  • "topics": [
    ],
  • "transport": "webhook",
  • "filters": {
    },
  • "secret": "string",
  • "activeKeyIds": [
    ],
  • "status": "active",
  • "recordInfo": {
    },
  • "extensions": {
    }
}

Update a subscription (APX additive operation)

Update topics, endpoint, filters, or status (pause, resume a paused or failed subscription), or rotate the secret. The body is a JSON Merge Patch over the subscription: send only what changes (Part 8 §8.1). The precondition is If-Match or the body version; a stale one is 409 version-conflict (Part 4 §4.2a). While the subscription is failed, the only PATCH accepted is one that sets status: active; any other is 410 subscription-failed.

Authorizations:
apxOAuthoAuth
path Parameters
id
required
string

Unique identifier for the existing subscription

header Parameters
If-Match
string
Examples: "7"

The version the client last read, as an entity tag ("7"). A stale value is 409 version-conflict; nothing is written (Part 4 §4.2a). Equivalent to sending version in the body.

Request Body schema: application/json
required
version
integer >= 1

The version the client last read.

endpoint
string (Url)

Represents a Url for an internet accessible resource.

topics
Array of strings non-empty
transport
string
Enum: "webhook" "sse"
object (SubscriptionFilters)

Replaces the stored filters; {} removes every filter.

secret
string

A new signing secret; starts a rotation overlap (Part 8 §8.1).

secretRef
string
keyId
string
retireKeyIds
Array of strings
status
string
Enum: "active" "paused" "failed"

active or paused — the client-settable states. failed is server-assigned; a PATCH setting it is 400 invalid-request.

object (Extensions)

The official APDS extension container (Use Case Document §C.2.5). Keys MUST follow apds-ext:<namespace>:<class>@<major>.<minor>. Implementations MUST preserve unknown extension keys on round-trip (tolerant reader, faithful writer). An APX decoration key, wherever the container appears, MUST carry a value valid against that decoration's schema (Part 4 §4.3); other keys are any object.

Responses

Request samples

Content type
application/json
{
  • "version": 1,
  • "topics": [
    ],
  • "transport": "webhook",
  • "filters": {
    },
  • "secret": "string",
  • "secretRef": "string",
  • "keyId": "string",
  • "retireKeyIds": [
    ],
  • "status": "active",
  • "extensions": {
    }
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "version": 1,
  • "topics": [
    ],
  • "transport": "webhook",
  • "filters": {
    },
  • "secret": "string",
  • "activeKeyIds": [
    ],
  • "status": "active",
  • "recordInfo": {
    },
  • "extensions": {
    }
}

Revoke (delete) existing subscription

Native APDS 4.1 operation, unchanged (APDS ResponseStatus shape).

Authorizations:
apxOAuthoAuth
path Parameters
id
required
string

Unique identifier for the existing subscription

Responses

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 0,
  • "message": "string",
  • "ids": [
    ]
}

Delivery ledger for a subscription

Returns the delivery records for auditing: one per (event, subscription), with the attempt count, status, last HTTP code, and the per-attempt history (attemptHistory: each attempt's APX-Delivery-Id, time, and code — Part 8 §8.3). Newest first. Readable in every subscription state. An event held while the subscription is paused has no record until its first attempt.

Authorizations:
apxOAuthoAuth
path Parameters
id
required
string
query Parameters
page
integer >= 1

The page number for paginated responses.

status
string
Enum: "delivered" "retrying" "failed"

Only records in this delivery status.

eventId
string <uuid>

Only the record of this EventEnvelope.id.

since
string <date-time>

Only records whose latest attempt is at or after this instant (RFC 3339).

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": [
    ]
}

Alerts

Knowing something is wrong. A net-new domain: APDS has no alert, event, or notification class.

One Alert resource covers the operational conditions an attendant or a monitoring system acts on: a device fault, a blocked lane, a vehicle in a space it should not be, an occupancy threshold crossed, a payment exception. Alert types are an open vocabulary, seeded from the APDS use-case exception list and extensible by any implementer through their own code list. Severity, by contrast, is a closed five-level scale, because filtering on it has to mean the same thing everywhere.

The lifecycle is raised, acknowledged, resolved, with an immutable audit of every transition.

Written standard: Part 7.

Control

Doing things in the real world. APDS inventories devices and marks access-controlled places but defines no actuation. This is it.

Everything physical goes through one audited command plane rather than scattered verbs: vend a gate, hold it open, close a lane, issue a lost ticket, push a rate table, apply a validation, set a device state, display a message, restart a device. Commands are idempotent (a retry must not vend the gate twice), perishable (a vend requested ten minutes ago must not fire now), and audited end to end.

Two optional features close open tickets at the exit lane without touching the deck. Negotiated rates: a RateTable flagged negotiable (the apds-ext:apx:ratepolicy@1.0 decoration, which rides with the table on every /rates sync) may be pushed to the one car in the lane, and the command names the agent who chose it. Ticket matching: when no ticket is in the machine the lane inquiry offers the open sessions that plausibly belong to the vehicle — by plate read, credential, account phone, or reservation — and matchTicket binds the exit to the real entry, priced from the real entry time, with the agent on the record. The lost-ticket fee becomes the fallback, not the default.

The response is deliberately not a success boolean. It is a command resource whose confirmationLevel distinguishes accepted from the device acknowledged it from the outcome was physically verified. A consumer, an AI agent especially, must not claim a stronger outcome than that level supports.

Also here: the lane inquiry that populates a call-center screen-pop, the validation-provider list for a place, and live device status.

Written standard: Part 6.

Execute a command (idempotent, perishable, audited)

Requests an operational action (vendGate, lostTicket, pushRate, applyValidation, …). Idempotency-Key REQUIRED. Returns 202 with the Command; poll GET /v1/commands/{id} or subscribe to apx.control.command.status.v1. Requires scope apx.control:execute AND a place grant covering the target.

Authorizations:
apxOAuth
header Parameters
Idempotency-Key
required
string
Request Body schema: application/json
required
commandType
required
string

definedValue from apx-command-types (vendGate, lostTicket, pushRate, applyValidation, pushNegotiatedRate, matchTicket, …).

required
object (Reference) = 1 properties

Reference to the target — SupplementalEquipment (device) or a VehicularAccess/Place HierarchyElement (lane/place scope).

parameters
object

Command-type-specific parameters. Normative parameter schemas per commandType are given in Part 6 (e.g. lostTicket.method, pushRate.rateTable VersionedReference, applyValidation.ticket + provider, displayMessage.message, setDeviceState.state, pushNegotiatedRate.rateTable VersionedReference to a RateTable flagged negotiable, or pushNegotiatedRate.amount AmountInCurrency (any amount the agent states, where the host offers the negotiatedAmounts feature), matchTicket.session + evidence, resetPassback/forceIn/forceOut.credential, courtesyExit.holder).

object (Reference) = 1 properties

The organisation requesting the action (defaults to the token's apx_org).

agent
string

Opaque principal of the human or AI agent who initiated the command (mirrors SupportInteraction.agent, Part 17 §17.6). Distinct from requestedBy (the organisation) and from approval.approvedBy (the approver). REQUIRED for pushNegotiatedRate and matchTicket (Part 6 §6.6–6.7): who selected the rate, who made the match.

agentType
string
Enum: "human" "ai"

Whether agent is a person or an AI agent (mirrors SupportInteraction.agentType).

reason
string

Free-text or code-list reason for the action (audit).

object (Reference) = 1 properties

The ResolutionContext this command resolves (Part 17) — links the action into the interaction's audit chain.

correlationId
string <uuid>

Correlation chain id (Part 17 §17.7) — one id connects call → context → command → events → support interaction.

object (Approval)

Approval evidence, REQUIRED on a write whose AllowedAction said requiresApproval (Part 17 §17.3). Servers MUST reject a requires-approval action without it (403 approval-required). One shared shape for control commands and domain actions (e.g. refunds).

expiryTime
string <date-time> (DateTime)

Commands are perishable — MUST NOT be dispatched after this instant.

priority
string
Default: "normal"
Enum: "normal" "high"
Array of objects

Immutable, append-only lifecycle audit — THE audit trail (Part 4 §4.2).

object (RecordInfo)

Provenance metadata for an APX resource, aligned to the APDS Information Model's RecordType (creationTime/creator/lastUpdate). All timestamps are RFC 3339 (APDS DateTime).

object (Extensions)

The official APDS extension container (Use Case Document §C.2.5). Keys MUST follow apds-ext:<namespace>:<class>@<major>.<minor>. Implementations MUST preserve unknown extension keys on round-trip (tolerant reader, faithful writer). An APX decoration key, wherever the container appears, MUST carry a value valid against that decoration's schema (Part 4 §4.3); other keys are any object.

Responses

Request samples

Content type
application/json
{
  • "id": "5e8d7c6b-4a39-4281-b0f1-2e3d4c5b6a70",
  • "version": 5,
  • "commandType": "vendGate",
  • "target": {
    },
  • "requestedBy": {
    },
  • "reason": "customer assistance — cinema validation applied, remainder waived per policy",
  • "expiryTime": "2026-08-06T18:16:00Z",
  • "status": "succeeded",
  • "statusHistory": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "5e8d7c6b-4a39-4281-b0f1-2e3d4c5b6a70",
  • "version": 5,
  • "commandType": "vendGate",
  • "target": {
    },
  • "requestedBy": {
    },
  • "reason": "customer assistance — cinema validation applied, remainder waived per policy",
  • "expiryTime": "2026-08-06T18:16:00Z",
  • "status": "succeeded",
  • "statusHistory": [
    ]
}

List and filter commands (the audit query)

The commands the caller may see, newest first by the time the command was received, each with its full statusHistory (Part 6 §6.1b). Only commands whose target lies inside the token's apx_places grant are returned; naming a place outside the grant is 403 insufficient-grant. All filters combine with AND.

Authorizations:
apxOAuth
query Parameters
mode
string
Default: "full"
Enum: "full" "change"

APX change feed (Part 5 §5.2): full (default — the route's ordinary list; on a native APDS route, exactly stock APDS 4.1) or change (the changes after cursor: a ChangeFeedPage on a native route, the route's own list envelope with the change-page members on an APX list route, rule 8; on an APX list route without a cursor, an empty page holding the current head cursor).

cursor
string

Opaque change-feed cursor from a previous change page. Only meaningful with mode=change; a refused cursor is 404 target-not-found (Part 5 §5.2 rules 2 and 5).

target
string <uuid>

Commands whose target.id is this device, lane, or place.

place
Array of strings <uuid> [ items <uuid > ]

Comma-separated HierarchyElement ids; subtree-inclusive (a command at a lane matches its parent Place).

commandType
string

An apx-command-types value (or an implementer's own).

status
string
Enum: "received" "accepted" "rejected" "dispatched" "executing" "succeeded" "failed" "expired" "cancelled"
agent
string

Commands whose agent equals this principal.

since
string <date-time>

Received at or after this instant (the first statusHistory entry).

until
string <date-time>

Received before this instant.

page
integer >= 1

The page number for paginated responses.

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": [
    ],
  • "updateMode": "change",
  • "cursor": "string",
  • "deleted": [
    ],
  • "grantAdditions": [
    ],
  • "next": "../dictionary"
}

Read a command (lifecycle + audit trail)

Returns the Command including its immutable statusHistory.

Authorizations:
apxOAuth
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "id": "5e8d7c6b-4a39-4281-b0f1-2e3d4c5b6a70",
  • "version": 5,
  • "commandType": "vendGate",
  • "target": {
    },
  • "requestedBy": {
    },
  • "reason": "customer assistance — cinema validation applied, remainder waived per policy",
  • "expiryTime": "2026-08-06T18:16:00Z",
  • "status": "succeeded",
  • "statusHistory": [
    ]
}

Cancel a command before dispatch

Allowed in received/accepted states; afterwards 409 command-not-cancellable.

Authorizations:
apxOAuth
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "id": "5e8d7c6b-4a39-4281-b0f1-2e3d4c5b6a70",
  • "version": 5,
  • "commandType": "vendGate",
  • "target": {
    },
  • "requestedBy": {
    },
  • "reason": "customer assistance — cinema validation applied, remainder waived per policy",
  • "expiryTime": "2026-08-06T18:16:00Z",
  • "status": "succeeded",
  • "statusHistory": [
    ]
}

Lane inquiry — current transaction context (screen-pop)

The ticket/credential currently in the machine at this lane, amount due, applied validations, latest LPR read, and monthly-credential context including the last 10 activity events. When no ticket is in the machine — or when a lookup parameter is given — also matchCandidates[]: the open sessions at the place that plausibly belong to the vehicle in the lane (Part 6 §6.7), for a driver who has lost the ticket.

Authorizations:
apxOAuth
path Parameters
id
required
string <uuid>

VehicularAccess (lane) UUID.

query Parameters
plate
string

Ticket-matching override — the plate as the driver reads it, when the camera missed or misread (Part 6 §6.7).

phone
string

Ticket-matching override — a permit holder's phone number, resolved through the account registry (Part 13 §13.1); never a call-routing identifier (Part 17 §17.1).

credential
string

Ticket-matching override — a credential identification (card number, tag) the driver names.

Responses

Response samples

Content type
application/json
{
  • "lane": {
    },
  • "currentTicket": {
    },
  • "monthlyCredential": {
    }
}

List validation providers for a place

The venues allowed to validate tickets at the place.

Authorizations:
apxOAuth
query Parameters
place
required
string <uuid>
page
integer >= 1

The page number for paginated responses.

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": [
    ]
}

List device status overlays

Live DeviceStatus for every SupplementalEquipment the caller may see, optionally narrowed by place and state (Part 6 §6.4). Naming a place outside the token's apx_places grant is 403 insufficient-grant.

Authorizations:
apxOAuth
query Parameters
place
Array of strings <uuid> [ items <uuid > ]

Comma-separated HierarchyElement ids; subtree-inclusive (a device on a lane matches its parent Place).

deviceState
string

An apx-device-states value, e.g. fault for everything in fault.

page
integer >= 1

The page number for paginated responses.

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": [
    ]
}

Read one device's status overlay

DeviceStatus keyed by the SupplementalEquipment id.

Authorizations:
apxOAuth
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "device": {
    },
  • "deviceState": "fault",
  • "lastCommunication": "2026-08-06T18:16:55Z",
  • "stateChangedTime": "2026-08-06T18:17:40Z"
}

Accounts

Money. Account and balance lookup, taking a payment, refunds, voids and captures, accounting write-back, and payment history.

APDS models a Payment but not the act of taking one. The APX PaymentRecord is that action record: addressable, idempotent, and reconcilable, and every approved one is materialized as an APDS Payment so downstream APDS consumers see it without speaking APX.

Two rules shape this domain. Full card numbers never appear anywhere. And because one endpoint often fronts many facilities, every payment names the place it belongs to, so revenue stays attributable and a grant cannot leak across sites.

APDS publishes no payment events, which leaves financial analytics blind; APX closes that with a payment-recorded topic.

Written standard: Part 13.

LPR

Plates. A camera read is an APDS Observation, so ingest is the standard data route every integration already uses. No bespoke ingestion API.

The genuinely new need is the join: which ticket goes with this plate, and which plate with this ticket. That is the one endpoint this domain adds, answering with the session, the confidence score, and an access-controlled image link.

Modern engines know more than a plate string, so a read may also carry per-attribute confidence for plate, state, make, model, colour and class, the runner-up plate strings the engine rejected, how many frames and plates it read, which face of the vehicle it saw, and whether the vehicle was moving toward the camera, away from it, or stopped. The LPR system then says what the read was: an entry or an exit. APX derives nothing — each lane's cameras, and which way each faces, are described on the lane, and a Session is simply the entry and exit reads of one visit.

Written standard: Part 13.

Reservations

Booking ahead, expressed as conventions over native APDS routes rather than a parallel booking system.

Quote through the APDS quote route, book by creating an AssignedRight carrying the APX reservation extension, amend and cancel through the same surface, and check in by linking the arrival to the right. The reservation is therefore a first-class APDS object any APDS consumer can read, not an APX-only record that has to be synchronized.

The hard parts this domain pins down are the ones integrations usually get wrong: how a prepaid booking binds to the session the vehicle actually starts, what happens when the plate is misread, and when a no-show is declared.

Written standard: Part 14.

Permits

Pooled permits: issuing from a finite allocation, over the APDS right-specification and right-pool model.

The cases that matter are the ones a naive implementation breaks on: a pool that runs out, a household or company credential valid for several vehicles, and issuance that must stay attributable when allocations are audited later.

Written standard: Part 14.

Tolling

Toll transactions, a net-new domain: APDS has no toll entity.

Everything is still built to APDS conventions. A toll point is equipment in the place hierarchy, the reads are native Observations, money is the APDS amount shape, and settlement links a Payment reference. A transaction runs created, priced, paid, and a dispute can move any non-voided transaction aside for resolution.

Creation is idempotent, because gantries retry in storms.

Written standard: Part 15.

Resolution

When a customer presses the intercom. The agent, human or AI, should not have to log into another system, find the facility, find the lane, find the transaction, and reconstruct what happened.

One call assembles the context from whatever identifiers the caller has: a phone number, a lane, a plate, a ticket, a credential, a reservation code. The server resolves every relationship it can and does not fail because some identifiers are missing.

The important design decision is that the server, not the agent, decides what may be done. The context returns the allowed actions, already evaluated against policy, including which ones require supervisor approval. Writes then go through the existing command plane rather than a second one. A refund an agent should not offer is simply not in the list.

Written standard: Part 17.

Support

What happened on the last call. Support-interaction history for a resolution context: who spoke to the customer, through which channel, about what, and what was done.

It exists so the second call is not the first call again, and so an action taken during an interaction can be traced back to the conversation that prompted it.

Written standard: Part 17.

Violations

Enforcement, from camera to citation to appeal. A net-new domain, and the one with the most legal exposure.

One Violation resource covers tickets, notices, and citations alike, through detection (automated, guided, or manual), review, issuance, settlement by Payment reference, appeal, and void. Guided enforcement is supported by an eligibility check a handheld calls before an officer writes anything, composed from the rights and sessions that remain authoritative.

What makes this domain unusual is that the law at the location is data. A per-place enforcement policy records which notice methods are lawful, the penalty cap, and the escalation schedule, and the server enforces it: an issuance by a method the jurisdiction does not permit, past the notice deadline, above the cap, or at a place whose required signage was not posted, is refused. The posted signage itself is on file, with its text and photograph, as it stood at the moment of the finding.

Written standard: Part 19.

Validations

The merchant side, from enrolment to invoice.

The lane-side act of applying a validation is a command in the control plane. This domain is everything around it: enrolling a merchant at a place with a benefit and its rules, issuing instrument stock (codes, QR, stamps), the redemption ledger every channel writes to, and closable billing statements.

The ledger is the point. A validation applied at a pay station, by an agent console, or through a merchant's own app lands in one place, so the month-end statement is a query rather than a reconciliation. Closed statements are immutable, and a reversal after closing appears as a credit on the next one.

A merchant-confined scope lets a venue check codes, issue its own stock, and read its own statements without seeing anyone else's.

Written standard: Part 20.

Credentials

The card, the fob, the tag, the phone. The lifecycle of anything presented at a lane: issue, activate, suspend, resume, report lost, revoke, replace, plus access-event history.

The rule that makes this domain worth having is materialization: an active credential record MUST appear on the holder's APDS assigned right, and MUST be removed when it is suspended, lost, revoked, or expired. A lane that speaks only APDS therefore refuses the lost card at six o'clock because the office replaced it at noon. There is no second list to keep in sync.

APDS has no access events, so granted and denied presentations with their reasons are recorded here and published as a topic.

Written standard: Part 21.

Valet

Custody. A net-new domain: APDS has no valet entity, only a restriction flag.

The stay and the money remain the APDS session. What APDS has no words for is who has the keys, where the car is, when it was asked for, who it was handed to, and what condition it was in. A ticket records drop-off with a condition report (notes, per-panel damage entries, walk-around photographs, and the customer's acknowledgement), the parked position and key location, the retrieval request and its ETA, staging, and a verified handback.

Retrieval works from a text, an app, a web page, a voice bot, a kiosk, or the stand, through one customer-facing scope confined to the caller's own ticket and minimized so it exposes status and ETA but never where the car or the keys are.

The acknowledged drop-off report is what answers "that scratch wasn't there" a week later.

Written standard: Part 22.

UI launch

The vendor's own screen, without breaking the record. Most actions in a call centre still happen in a vendor's portal in another window, and the two systems never agree afterwards. A vendor will take years to implement every APX module, but it already has good screens.

A host opens one of those screens for an agent in two ways. In the handshake, it posts a launch with its normal APX token and gets back a single-use URL that logs the agent in, valid for sixty seconds, which also serves vendors who want header-based authentication, since a browser cannot add headers to a page it opens. In the signed-token mode, the host signs a short-lived token and sends it to the vendor's launch address by form post or URL fragment.

The rule that makes this worth having is the loopback: whatever the agent does in the screen MUST come back as the module's own resource or Command, carrying the launch's correlation id. Only when the implementation has no APX operation for the action does it record a UiActionRecord instead, with the fields the host asked for. Defined once; every module adds screens through the apx-ui-surfaces registry.

Written standard: Part 25.

Site configuration

A location, described by APX alone. Before a call, an agent or a system should be able to learn what a site has without data from any other system: which hardware is on each lane and what each piece does, what it is, what runs on it, where the cameras are and what they see, how a parker reaches help from each lane or door, and who to escalate to.

APDS already models the place, its lanes and its equipment. This domain adds what APDS leaves open: a fixed list of equipment roles (gate, exit verifier, access door, camera, intercom…), the make, model, firmware, serial and MAC of every unit, where it is by area and level, what it is built into and what it controls; a camera description for any camera on the site, with views issued as short-lived links so a password never leaves the site; a comms point for every way help is reached, whether an intercom, an analog dialer, a posted number or a QR code; typed external ids so other systems' identifiers resolve to APX records; display records, the proof that a sign showed a message for a read or a stay, written by whichever system drove the sign; and change topics so a copy of the setup stays current. IP addresses and SIP details are deliberately left out.

Written standard: Part 26.

List a place's equipment with its roles, makes, versions and areas

Every SupplementalEquipment at the place, each with its apds-ext:apx:equipment-detail@1.0 decoration, so a reader learns what the site has from APX alone (Part 26 §26.1). Distinct from GET /v1/devices, which serves live state; this serves the description. mode=change&cursor= serves the Part 5 §5.2 feed, so an edge or call-centre system keeps a local copy current. Naming a place outside the grant is 403 insufficient-grant.

Authorizations:
apxOAuth
query Parameters
mode
string
Default: "full"
Enum: "full" "change"

APX change feed (Part 5 §5.2): full (default — the route's ordinary list; on a native APDS route, exactly stock APDS 4.1) or change (the changes after cursor: a ChangeFeedPage on a native route, the route's own list envelope with the change-page members on an APX list route, rule 8; on an APX list route without a cursor, an empty page holding the current head cursor).

cursor
string

Opaque change-feed cursor from a previous change page. Only meaningful with mode=change; a refused cursor is 404 target-not-found (Part 5 §5.2 rules 2 and 5).

place
required
string <uuid>

The HierarchyElement subtree root.

role
string

An apx-equipment-roles value.

area
string

An apx-area-types value.

lane
string <uuid>

Equipment serving this VehicularAccess.

level
string
page
integer >= 1

The page number for paginated responses.

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": [
    ],
  • "updateMode": "change",
  • "cursor": "string",
  • "deleted": [
    ],
  • "grantAdditions": [
    ],
  • "next": "../dictionary"
}

Read one piece of equipment

The SupplementalEquipment with its APX decorations (Part 26 §26.1).

Authorizations:
apxOAuth
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
Example
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "type": "campus",
  • "name": [
    ],
  • "description": [
    ],
  • "aliases": [
    ],
  • "operatorDefinedReference": {
    },
  • "parentId": {
    },
  • "childIds": [
    ],
  • "layer": 0,
  • "rightSpecifications": [
    ],
  • "hierarchyElementRecord": {
    },
  • "hierarchyElementReference": {
    },
  • "occupancyLevel": {
    },
  • "responsibilityRoleAssignments": [
    ],
  • "extensions": {
    }
}

List or look up comms points

The ways a parker reaches help at the caller's places (Part 26 §26.4). A call platform finds the comms point of an inbound contact with callerId, dialedNumber or commsDeviceId; the answer carries the lane, or the place only. mode=change&cursor= serves the Part 5 §5.2 feed.

Authorizations:
apxOAuth
query Parameters
mode
string
Default: "full"
Enum: "full" "change"

APX change feed (Part 5 §5.2): full (default — the route's ordinary list; on a native APDS route, exactly stock APDS 4.1) or change (the changes after cursor: a ChangeFeedPage on a native route, the route's own list envelope with the change-page members on an APX list route, rule 8; on an APX list route without a cursor, an empty page holding the current head cursor).

cursor
string

Opaque change-feed cursor from a previous change page. Only meaningful with mode=change; a refused cursor is 404 target-not-found (Part 5 §5.2 rules 2 and 5).

place
string <uuid>
lane
string <uuid>
type
string

An apx-comms-point-types value.

callerId
string

E.164; matches callerId.

dialedNumber
string

E.164; matches phoneNumber.

commsDeviceId
string
page
integer >= 1

The page number for paginated responses.

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": [
    ],
  • "updateMode": "change",
  • "cursor": "string",
  • "deleted": [
    ],
  • "grantAdditions": [
    ],
  • "next": "../dictionary"
}

Read a comms point

The comms point with the lane or place it serves and the barrier an agent opens for it (Part 26 §26.4).

Authorizations:
apxOAuth
path Parameters
id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "id": "c3000000-0000-4000-8000-000000000001",
  • "version": 1,
  • "type": "intercom",
  • "place": {
    },
  • "lane": {
    },
  • "equipment": {
    },
  • "serves": {
    },
  • "callerId": "+15555550199",
  • "commsDeviceId": "dev-51cc-ae16",
  • "coverage": [
    ]
}

Signed APX event delivery Webhook

Every webhook delivery POSTs one EventEnvelope with headers APX-Signature (v1=HMAC-SHA256(secret, timestamp + "." + body)), APX-Timestamp (RFC 3339, ±5 min replay window), APX-Delivery-Id (unique per attempt; envelope id is stable across retries), and APX-Key-Id (REQUIRED during secret-rotation overlap windows — Part 9 §9.4). Respond 2xx to acknowledge; anything else triggers the normative retry schedule (Part 8).

Every attempt is signed afresh (normative, Part 8 §8.3): APX-Timestamp is the time of that attempt and APX-Signature is computed over it and the unchanged body, so a retry an hour later still falls inside the receiver's ±5-minute window. The body — and with it the envelope id and time — is byte-identical across attempts.

The typed entries below (apx-native-event and one per APX topic whose data schema lives outside its own domain) name the data schema each topic carries (Part 8 §8.7); they are the same POST.

Authorizations:
apxOAuth
Request Body schema: application/json
id
required
string <uuid>

Unique event id (delivery-stable; retries reuse it).

type
required
string

Event topic. Either an APX topic (apx.<domain>.<event>.vN) or an APDS EventTypeEnum value (e.g. SessionCreated).

source
required
string <uri-reference>

Identifies the publishing implementation/site.

time
required
string <date-time> (DateTime)

ISO-8601 format definition of a date and time - format YYYY-MM-DDTHH:MM:SSZ.

object (Reference) = 1 properties

The entity this event is about.

dataschema
string <uri>

Optional URI of the schema that data validates against.

data
required
object

Event payload. For APDS EventTypeEnum topics this is the APDS EventData shape.

object (Extensions)

The official APDS extension container (Use Case Document §C.2.5). Keys MUST follow apds-ext:<namespace>:<class>@<major>.<minor>. Implementations MUST preserve unknown extension keys on round-trip (tolerant reader, faithful writer). An APX decoration key, wherever the container appears, MUST carry a value valid against that decoration's schema (Part 4 §4.3); other keys are any object.

Responses

Request samples

Content type
application/json
{
  • "id": "3b4c5d6e-7f8a-4b9c-8d0e-1f2a3b4c5d6e",
  • "type": "apx.reservation.noshow.v1",
  • "subject": {
    },
  • "time": "2026-08-14T19:30:00Z",
  • "data": {
    }
}

APDS EventTypeEnum topic delivery Webhook

A delivery on an APDS 4.1 topic (SessionCreated, PlaceUpdated, …): type is an APDS EventTypeEnum value, data the APDS EventData shape (the created/updated entity; for a *Deleted topic the last state), and subject references the entity (Part 5 §5.4, Part 8 §8.2). Signed and retried like every delivery.

Authorizations:
apxOAuth
header Parameters
APX-Signature
required
string^v1=[0-9a-f]{64}$

v1= + hex HMAC-SHA256(secret, APX-Timestamp + "." + raw body), computed per attempt.

APX-Timestamp
required
string <date-time>

RFC 3339 time of THIS attempt (not of the event or of the first attempt).

APX-Delivery-Id
required
string <uuid>

UUID unique per attempt; the envelope id is the dedup key.

APX-Key-Id
string

The signing key's id — REQUIRED during a rotation overlap (Part 9 §9.4).

Request Body schema: application/json
id
required
string <uuid>

Unique event id (delivery-stable; retries reuse it).

type
required
string (EventTypeEnum)
Enum: "AssignedRightCreated" "AssignedRightUpdated" "AssignedRightDeleted" "SessionCreated" "SessionUpdated" "SessionDeleted" "PlaceCreated" "PlaceUpdated" "PlaceDeleted" "RightSpecificationCreated" "RightSpecificationUpdated" "RightSpecificationDeleted" "RateCreated" "RateUpdated" "RateDeleted" "OrganisationCreated" "OrganisationUpdated" "OrganisationDeleted"

Event topic. Either an APX topic (apx.<domain>.<event>.vN) or an APDS EventTypeEnum value (e.g. SessionCreated).

source
required
string <uri-reference>

Identifies the publishing implementation/site.

time
required
string <date-time> (DateTime)

ISO-8601 format definition of a date and time - format YYYY-MM-DDTHH:MM:SSZ.

object (Reference) = 1 properties

The entity this event is about.

dataschema
string <uri>

Optional URI of the schema that data validates against.

required
HierarchyElement (object) or RightSpecification (object) or RateTable (object) or AssignedRight (object) or Session (object) or Contact (object) (EventData)

Event payload. For APDS EventTypeEnum topics this is the APDS EventData shape.

object (Extensions)

The official APDS extension container (Use Case Document §C.2.5). Keys MUST follow apds-ext:<namespace>:<class>@<major>.<minor>. Implementations MUST preserve unknown extension keys on round-trip (tolerant reader, faithful writer). An APX decoration key, wherever the container appears, MUST carry a value valid against that decoration's schema (Part 4 §4.3); other keys are any object.

Responses

Request samples

Content type
application/json
{
  • "id": "3b4c5d6e-7f8a-4b9c-8d0e-1f2a3b4c5d6e",
  • "type": "AssignedRightCreated",
  • "subject": {
    },
  • "time": "2026-08-14T19:30:00Z",
  • "data": {
    }
}

A subscription exhausted its retry schedule Webhook

Published when a subscription enters failed (Part 8 §8.3). subject references the subscription (className ApxEventSubscription); data is a SubscriptionFailure. Delivered to other subscriptions of the same apx_org that list the topic, never to the failed one.

Authorizations:
apxOAuth
header Parameters
APX-Signature
required
string^v1=[0-9a-f]{64}$

v1= + hex HMAC-SHA256(secret, APX-Timestamp + "." + raw body), computed per attempt.

APX-Timestamp
required
string <date-time>

RFC 3339 time of THIS attempt (not of the event or of the first attempt).

APX-Delivery-Id
required
string <uuid>

UUID unique per attempt; the envelope id is the dedup key.

APX-Key-Id
string

The signing key's id — REQUIRED during a rotation overlap (Part 9 §9.4).

Request Body schema: application/json
id
required
string <uuid>

Unique event id (delivery-stable; retries reuse it).

type
required
string

Event topic. Either an APX topic (apx.<domain>.<event>.vN) or an APDS EventTypeEnum value (e.g. SessionCreated).

Value: "apx.subscription.failed.v1"
source
required
string <uri-reference>

Identifies the publishing implementation/site.

time
required
string <date-time> (DateTime)

ISO-8601 format definition of a date and time - format YYYY-MM-DDTHH:MM:SSZ.

object (Reference) = 1 properties

The entity this event is about.

dataschema
string <uri>

Optional URI of the schema that data validates against.

required
object (SubscriptionFailure)

Event payload. For APDS EventTypeEnum topics this is the APDS EventData shape.

object (Extensions)

The official APDS extension container (Use Case Document §C.2.5). Keys MUST follow apds-ext:<namespace>:<class>@<major>.<minor>. Implementations MUST preserve unknown extension keys on round-trip (tolerant reader, faithful writer). An APX decoration key, wherever the container appears, MUST carry a value valid against that decoration's schema (Part 4 §4.3); other keys are any object.

Responses

Request samples

Content type
application/json
{
  • "id": "3b4c5d6e-7f8a-4b9c-8d0e-1f2a3b4c5d6e",
  • "type": "apx.subscription.failed.v1",
  • "subject": {
    },
  • "time": "2026-08-14T19:30:00Z",
  • "data": {
    }
}

An Observation was ingested Webhook

One event per ingested read. data is the APDS ObservationElement (an ingested ObservationSet yields one event per element); subject references it with className ObservationElement; publishers MUST populate elementIds with the observing lane or place, which is the event's place binding (Part 8 §8.5). Plate values are subject to Part 9 §9.6.

Authorizations:
apxOAuth
header Parameters
APX-Signature
required
string^v1=[0-9a-f]{64}$

v1= + hex HMAC-SHA256(secret, APX-Timestamp + "." + raw body), computed per attempt.

APX-Timestamp
required
string <date-time>

RFC 3339 time of THIS attempt (not of the event or of the first attempt).

APX-Delivery-Id
required
string <uuid>

UUID unique per attempt; the envelope id is the dedup key.

APX-Key-Id
string

The signing key's id — REQUIRED during a rotation overlap (Part 9 §9.4).

Request Body schema: application/json
id
required
string <uuid>

Unique event id (delivery-stable; retries reuse it).

type
required
string

Event topic. Either an APX topic (apx.<domain>.<event>.vN) or an APDS EventTypeEnum value (e.g. SessionCreated).

Value: "apx.data.observation.created.v1"
source
required
string <uri-reference>

Identifies the publishing implementation/site.

time
required
string <date-time> (DateTime)

ISO-8601 format definition of a date and time - format YYYY-MM-DDTHH:MM:SSZ.

object (Reference) = 1 properties

The entity this event is about.

dataschema
string <uri>

Optional URI of the schema that data validates against.

required
object (ObservationElement)

Event payload. For APDS EventTypeEnum topics this is the APDS EventData shape.

object (Extensions)

The official APDS extension container (Use Case Document §C.2.5). Keys MUST follow apds-ext:<namespace>:<class>@<major>.<minor>. Implementations MUST preserve unknown extension keys on round-trip (tolerant reader, faithful writer). An APX decoration key, wherever the container appears, MUST carry a value valid against that decoration's schema (Part 4 §4.3); other keys are any object.

Responses

Request samples

Content type
application/json
{
  • "id": "3b4c5d6e-7f8a-4b9c-8d0e-1f2a3b4c5d6e",
  • "type": "apx.data.observation.created.v1",
  • "subject": {
    },
  • "time": "2026-08-14T19:30:00Z",
  • "data": {
    }
}

An ingested Observation was replaced Webhook

Published whenever an ingested Observation changes — for example the LPR system revising accessEvent through PUT /v1/lpr/reads/{observation}/access-event (Part 13 §13.3a(4), §13.4), or a reviewer's plate decision through PUT /v1/lpr/reads/{observation}/plate (§13.3a(4a)). data is the APDS ObservationElement as it now stands; subject and the place binding (elementIds) are as for apx.data.observation.created.v1. Consumers key on the Observation id and keep the highest version. Plate values are subject to Part 9 §9.6.

Authorizations:
apxOAuth
header Parameters
APX-Signature
required
string^v1=[0-9a-f]{64}$

v1= + hex HMAC-SHA256(secret, APX-Timestamp + "." + raw body), computed per attempt.

APX-Timestamp
required
string <date-time>

RFC 3339 time of THIS attempt (not of the event or of the first attempt).

APX-Delivery-Id
required
string <uuid>

UUID unique per attempt; the envelope id is the dedup key.

APX-Key-Id
string

The signing key's id — REQUIRED during a rotation overlap (Part 9 §9.4).

Request Body schema: application/json
id
required
string <uuid>

Unique event id (delivery-stable; retries reuse it).

type
required
string

Event topic. Either an APX topic (apx.<domain>.<event>.vN) or an APDS EventTypeEnum value (e.g. SessionCreated).

Value: "apx.data.observation.updated.v1"
source
required
string <uri-reference>

Identifies the publishing implementation/site.

time
required
string <date-time> (DateTime)

ISO-8601 format definition of a date and time - format YYYY-MM-DDTHH:MM:SSZ.

object (Reference) = 1 properties

The entity this event is about.

dataschema
string <uri>

Optional URI of the schema that data validates against.

required
object (ObservationElement)

Event payload. For APDS EventTypeEnum topics this is the APDS EventData shape.

object (Extensions)

The official APDS extension container (Use Case Document §C.2.5). Keys MUST follow apds-ext:<namespace>:<class>@<major>.<minor>. Implementations MUST preserve unknown extension keys on round-trip (tolerant reader, faithful writer). An APX decoration key, wherever the container appears, MUST carry a value valid against that decoration's schema (Part 4 §4.3); other keys are any object.

Responses

Request samples

Content type
application/json
{
  • "id": "3b4c5d6e-7f8a-4b9c-8d0e-1f2a3b4c5d6e",
  • "type": "apx.data.observation.updated.v1",
  • "subject": {
    },
  • "time": "2026-08-14T19:30:00Z",
  • "data": {
    }
}

A reservation reached its no-show condition Webhook

data is a ReservationSummary (reservation, reservationState noShow, plannedStart); subject references the AssignedRight (Part 14 §14.1, Part 8 §8.7).

Authorizations:
apxOAuth
header Parameters
APX-Signature
required
string^v1=[0-9a-f]{64}$

v1= + hex HMAC-SHA256(secret, APX-Timestamp + "." + raw body), computed per attempt.

APX-Timestamp
required
string <date-time>

RFC 3339 time of THIS attempt (not of the event or of the first attempt).

APX-Delivery-Id
required
string <uuid>

UUID unique per attempt; the envelope id is the dedup key.

APX-Key-Id
string

The signing key's id — REQUIRED during a rotation overlap (Part 9 §9.4).

Request Body schema: application/json
id
required
string <uuid>

Unique event id (delivery-stable; retries reuse it).

type
required
string

Event topic. Either an APX topic (apx.<domain>.<event>.vN) or an APDS EventTypeEnum value (e.g. SessionCreated).

Value: "apx.reservation.noshow.v1"
source
required
string <uri-reference>

Identifies the publishing implementation/site.

time
required
string <date-time> (DateTime)

ISO-8601 format definition of a date and time - format YYYY-MM-DDTHH:MM:SSZ.

object (Reference) = 1 properties

The entity this event is about.

dataschema
string <uri>

Optional URI of the schema that data validates against.

required
object (ReservationSummary)

Event payload. For APDS EventTypeEnum topics this is the APDS EventData shape.

object (Extensions)

The official APDS extension container (Use Case Document §C.2.5). Keys MUST follow apds-ext:<namespace>:<class>@<major>.<minor>. Implementations MUST preserve unknown extension keys on round-trip (tolerant reader, faithful writer). An APX decoration key, wherever the container appears, MUST carry a value valid against that decoration's schema (Part 4 §4.3); other keys are any object.

Responses

Request samples

Content type
application/json
{
  • "id": "3b4c5d6e-7f8a-4b9c-8d0e-1f2a3b4c5d6e",
  • "type": "apx.reservation.noshow.v1",
  • "subject": {
    },
  • "time": "2026-08-14T19:30:00Z",
  • "data": {
    }
}

Places

List Places

Returns a list of places potentially filtered by a combination of :

  • latitude, longitude and radius : retrieve all places within a geographic area,
  • types : retrieve all places of the given type,
  • right_type : retrieve all places associated with the right specification type,
  • structure_type : retrieve all places associated with the specified structure type,
  • structure_grade : retrieve all places associated with the specified structure grade,
  • name : retrieve all places which match the name of the facilities,
  • layer : specify the maximum hierarchy element layer desired,
  • operator : the id of the operator of this location
  • modified_since : retrieve all places that have changed from that given instant onwards,
  • expand : a comma-separated list of optional object attributes associated to a place that should be included in the result set.
Authorizations:
oAuth
query Parameters
latitude
number <float>

Location latitude to use as filter (mandatory if longitude and radius are defined)

longitude
number <float>

Location longitude to use as filter (mandatory if latitude and radius are defined)

radius
integer >= 0

Number of metres to use as search filter from given position (mandatory if latitude and longitude are defined)

type
Array of strings (HierarchyElementTypeEnum)
Items Enum: "campus" "identifiedArea" "place" "space" "subplaceElement" "specificArea" "vehicularAccess" "electricChargingEquipment" "supplementalEquipment" "supplementalServiceFacility"

Comma-separated list of place types to consider. All will be assumed if parameter is not used or left blank.

right_type
Array of strings (RightTypeEnum)
Items Enum: "accessPermission" "loadingUnloading" "oneTimeUseParking" "permitParking" "setdownPickup" "waiting"

Comma-separated list of right specification types to consider. All will be assumed if parameter is not used or left blank.

structure_type
Array of strings (StructureTypeEnum)
Items Enum: "offStreetStructure" "offStreetSurface" "onStreet"

Comma-separated list of types of structure in the hierarchy to consider (all will be assumed if parameter is not used or left blank)

structure_grade
Array of strings (StructureGradeEnum)
Items Enum: "aboveGround" "groundLevel" "underground"

Comma-separated list of Structure grades in the hierarchy to consider (all will be assumed if parameter is not used or left blank)

name
string

Name of place hierarchy element (in any of its supported languages)

layer
integer

Most detailed (lower-level) layer of data desired. 0 (zero) being the first level (and higher numbers correspond to lower-levels of information). If left empty, the entire place hierarchy that matches the remaining parameters will be returned.

operator
string

id of the parking operator in charge of the location(s)

modified_since
integer >= 0

Unix epoch instant to filter results that have changed or have been deleted after the given instant. If expand attributes are requested, then this parameter will also apply to those objects. When this attribute is used, the result set will also include a list of deleted references to avoid storing stale data.

expand
Array of strings
Items Enum: "all" "none" "rightSpecifications" "occupancy" "areaLocation" "pointLocation" "contacts" "operatingRestrictions" "characteristics" "paymentMethods" "openingTimes" "streetAddress"

Comma-separated list of optional object attributes associated to a place hierarchy element that should be included in the result set.

page
integer >= 1

The page number for paginated responses.

mode
string
Default: "full"
Enum: "full" "change"

APX change feed (Part 5 §5.2): full (default — the route's ordinary list; on a native APDS route, exactly stock APDS 4.1) or change (the changes after cursor: a ChangeFeedPage on a native route, the route's own list envelope with the change-page members on an APX list route, rule 8; on an APX list route without a cursor, an empty page holding the current head cursor).

cursor
string

Opaque change-feed cursor from a previous change page. Only meaningful with mode=change; a refused cursor is 404 target-not-found (Part 5 §5.2 rules 2 and 5).

place
Array of strings

Comma-separated list of unique place ids according to the requested types.

Responses

Response samples

Content type
application/json
Example
{
  • "meta": {
    },
  • "deletedReferences": [
    ],
  • "data": [
    ]
}

Create Place

Create a new place.

Authorizations:
oAuth
Request Body schema: application/json
required
id
required
string non-empty

Unique identifier for the object.

version
required
integer >= 1

Positive integer representing the object version.

type
required
string (HierarchyElementTypeEnum)

Defines the supported lists of types of parking hierarchy elements permissible

  • campus : a data structure holding information about a large, often ill-defined area, which may contain many parking structures.
  • identifiedArea : a data structure holding information about a coherent feature, such as a set of parking spaces that all share the same characteristics.
  • place : a data structure holding information about a single identifiable parking place.
  • space : a data structure holding information about a single space for parking, usually designed for one vehicle, which may be denoted by painted or other road surface markers.
  • subplaceElement : a sub-division of a place for the convenience of the operator that may be used for parking related or other purposes.
  • specificArea : a specialisation of an identified area that denotes a specific geographic area in a place that has a common physical infrastructure purpose and common characteristics.
  • vehicularAccess : a specialisation of an identified area defining vehicular access areas.
  • electricChargingEquipment : a specialisation of a supplemental facility for electric charging areas.
  • supplementalEquipment : a specialisation of a supplemental facility which is available on some site, for example on a rest area.
  • supplementalServiceFacility : a specialisation of a supplemental facility to specify the type and number of available sub-facilities, for example 20 restaurants.
required
Array of objects (MultilingualString) non-empty

Array of SpecificLanguageString objects representing multi language text.

Array of objects (MultilingualString) non-empty

Array of SpecificLanguageString objects representing multi language text.

Array of objects (MultilingualString) [ items non-empty ]

Alternative names for the hierarchy element.

object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

layer
required
integer >= 0

Indicator of the position of this hierarchy element in the specific hierarchy, with the top of the hierarchy numbered layer 0.

object (HierarchyElementReference)

A class providing a unique reference identifier for a discrete part of the parking place hierarchy. This can indicate a campus, parking place, hierarchy element, identifiable area or space.

object (OccupancyLevel)

Defines an occupancy level as specified by the data supplier.

Array of objects (ResponsibilityRoleAssignment)

roles and responsibilities

object (Extensions)

The APDS extension container (Use Case Document §C.2.5; Part 4 §4.3). Undeclared on APDS 4.1 entities (APX erratum 010).

Responses

Request samples

Content type
application/json
Example
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "type": "campus",
  • "name": [
    ],
  • "description": [
    ],
  • "aliases": [
    ],
  • "operatorDefinedReference": {
    },
  • "parentId": {
    },
  • "layer": 0,
  • "hierarchyElementRecord": {
    },
  • "hierarchyElementReference": {
    },
  • "occupancyLevel": {
    },
  • "responsibilityRoleAssignments": [
    ],
  • "extensions": {
    }
}

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 201,
  • "message": "Place created successfully."
}

Get Place

Returns the latest version of a given place by its identifier (or a specific version provided as a query parameter).

Authorizations:
oAuth
path Parameters
id
required
string

Unique identifier for the place.

query Parameters
version
integer >= 1

Previous version number. Useful when a reference to a resource version is found in another dataset, and that version is no longer the latest one. Latest version is assumed when this parameter is not used.

expand
Array of strings
Items Enum: "all" "none" "rightSpecifications" "occupancy" "areaLocation" "pointLocation" "contacts" "operatingRestrictions" "characteristics" "paymentMethods" "openingTimes" "streetAddress"

Comma-separated list of optional object attributes associated to a place hierarchy element that should be included in the result set.

Responses

Response samples

Content type
application/json
Example
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "type": "campus",
  • "name": [
    ],
  • "description": [
    ],
  • "aliases": [
    ],
  • "operatorDefinedReference": {
    },
  • "parentId": {
    },
  • "childIds": [
    ],
  • "layer": 0,
  • "rightSpecifications": [
    ],
  • "hierarchyElementRecord": {
    },
  • "hierarchyElementReference": {
    },
  • "occupancyLevel": {
    },
  • "responsibilityRoleAssignments": [
    ],
  • "extensions": {
    }
}

Update Place

Update an existing place using its identifier.

Authorizations:
oAuth
path Parameters
id
required
string

Unique identifier for the place.

header Parameters
APX-Update-Mode
string
Default: full
Enum: "full" "change"

APX data profile (Part 5 §5.1). full (default, stock APDS behavior): the body is the complete current state. change: the body is a ChangePayload — identity plus only the changed members; absent = unchanged, explicit null = clear. A stale version in change mode is 409 version-conflict.

Request Body schema: application/json
required
Any of
id
required
string non-empty

Unique identifier for the object.

version
required
integer >= 1

Positive integer representing the object version.

type
required
string (HierarchyElementTypeEnum)
Enum: "campus" "identifiedArea" "place" "space" "subplaceElement" "specificArea" "vehicularAccess" "electricChargingEquipment" "supplementalEquipment" "supplementalServiceFacility"

Defines the supported lists of types of parking hierarchy elements permissible

  • campus : a data structure holding information about a large, often ill-defined area, which may contain many parking structures.
  • identifiedArea : a data structure holding information about a coherent feature, such as a set of parking spaces that all share the same characteristics.
  • place : a data structure holding information about a single identifiable parking place.
  • space : a data structure holding information about a single space for parking, usually designed for one vehicle, which may be denoted by painted or other road surface markers.
  • subplaceElement : a sub-division of a place for the convenience of the operator that may be used for parking related or other purposes.
  • specificArea : a specialisation of an identified area that denotes a specific geographic area in a place that has a common physical infrastructure purpose and common characteristics.
  • vehicularAccess : a specialisation of an identified area defining vehicular access areas.
  • electricChargingEquipment : a specialisation of a supplemental facility for electric charging areas.
  • supplementalEquipment : a specialisation of a supplemental facility which is available on some site, for example on a rest area.
  • supplementalServiceFacility : a specialisation of a supplemental facility to specify the type and number of available sub-facilities, for example 20 restaurants.
required
Array of objects (MultilingualString) non-empty

Array of SpecificLanguageString objects representing multi language text.

Array of objects (MultilingualString) non-empty

Array of SpecificLanguageString objects representing multi language text.

Array of objects (MultilingualString) [ items non-empty ]

Alternative names for the hierarchy element.

object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

layer
required
integer >= 0

Indicator of the position of this hierarchy element in the specific hierarchy, with the top of the hierarchy numbered layer 0.

object (HierarchyElementReference)

A class providing a unique reference identifier for a discrete part of the parking place hierarchy. This can indicate a campus, parking place, hierarchy element, identifiable area or space.

object (OccupancyLevel)

Defines an occupancy level as specified by the data supplier.

Array of objects (ResponsibilityRoleAssignment)

roles and responsibilities

object (Extensions)

The APDS extension container (Use Case Document §C.2.5; Part 4 §4.3). Undeclared on APDS 4.1 entities (APX erratum 010).

Responses

Request samples

Content type
application/json
Example
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "type": "campus",
  • "name": [
    ],
  • "description": [
    ],
  • "aliases": [
    ],
  • "operatorDefinedReference": {
    },
  • "parentId": {
    },
  • "layer": 0,
  • "hierarchyElementRecord": {
    },
  • "hierarchyElementReference": {
    },
  • "occupancyLevel": {
    },
  • "responsibilityRoleAssignments": [
    ],
  • "extensions": {
    }
}

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 200,
  • "message": "Place updated successfully."
}

Delete Place

Delete an existing place using its identifier.

Authorizations:
oAuth
path Parameters
id
required
string

Unique identifier for the place.

Responses

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 200,
  • "message": "Place deleted successfully."
}

Observation

get list of recorded observations

Lists Observations and allows searching/filtering by:

  • latitude, longitude, radius: to check for Observations within a geographic area
  • a list of Places, to retrieve all Observations within a set of parking locations
  • start_before: to get observations starting before a given instant
  • end_before: to get observations ending before a given instant
  • start_after: to get observations starting after a given instant
  • end_after: to get observations ending after a given instant
  • a modification instant: to only display changed resources from that point onwards

Additionally, supports providing a comma-separated list of optional object attributes associated to an Observation that should be included in the result set. If unused or left blank, none will be assumed.

Authorizations:
apxOAuth
query Parameters
place
Array of strings

Comma-separated list of unique place ids according to the requested types.

latitude
number <float>

Location latitude to use as filter (mandatory if longitude and radius are defined)

longitude
number <float>

Location longitude to use as filter (mandatory if latitude and radius are defined)

radius
integer >= 0

Number of metres to use as search filter from given position (mandatory if latitude and longitude are defined)

modified_since
integer >= 0

Unix epoch instant to filter results that have changed or have been deleted after the given instant. If expand attributes are requested, then this parameter will also apply to those objects. When this attribute is used, the result set will also include a list of deleted references to avoid storing stale data.

start_before
integer >= 0

Unix epoch instant to filter results starting before the given instant.

end_before
integer >= 0

Unix epoch instant to filter results ending before the given instant.

start_after
integer >= 0

Unix epoch instant to filter results starting after the given instant.

end_after
integer >= 0

Unix epoch instant to filter results ending after the given instant.

mode
string
Default: "full"
Enum: "full" "change"

APX change feed (Part 5 §5.2): full (default — the route's ordinary list; on a native APDS route, exactly stock APDS 4.1) or change (the changes after cursor: a ChangeFeedPage on a native route, the route's own list envelope with the change-page members on an APX list route, rule 8; on an APX list route without a cursor, an empty page holding the current head cursor).

cursor
string

Opaque change-feed cursor from a previous change page. Only meaningful with mode=change; a refused cursor is 404 target-not-found (Part 5 §5.2 rules 2 and 5).

Responses

Response samples

Content type
application/json
Example
{
  • "referenceInstant": 1709840615,
  • "offset": 0,
  • "pageSize": 100,
  • "total": 1,
  • "data": [
    ]
}

create an Observation or Observation Set

create a singular Observation or an Observation Set

Authorizations:
apxOAuth
Request Body schema: application/json
required
One of
id
required
string non-empty

Unique identifier for the object.

version
required
integer >= 1

Positive integer representing the object version.

method
required
string (ObservationTypeEnum)
Enum: "anpr" "chalk" "rfTransponder" "scanner" "visual"

A list of the supported observation types.

  • anpr: Automatic vehicle license plate recognition
  • chalk: Chalk-mark observation or similar
  • rfTransponder: Rf transponder radio frequency transponder device, for toll tag or similar radio based devices
  • scanner: Handheld or fixed scanning device (optical)
  • visual: Visual (human) observation
observer
string

The individual person making the observation recorded in this observation element.

type
string (CredentialTypeEnum)
Enum: "barcode" "bluetooth" "eticket" "hangtag" "licensePlate" "permit" "qrCode" "rfid" "ticket" "electronicID" "ticketcoupon" "vehicleplate"
  • barcode : barcode or QR digital print pattern, held on any physical media.
  • bluetooth : specific bluetooth or BLE identification chip used to associate a BLE receiver to a specific user. Used for both one time and permit uses.
  • eticket : digital equivalent of a paper ticket, often presentable via smartphone or similar device for control.
  • hangtag : visible, often removable, credential indicator, with visible markings
  • licensePlate : fixed plate, in a defined format, used to identify a specific vehicle- Normally a permanent fixture.
  • permit : issued credential, often in the form of an adhesive label, often placed on the windscreen, credential indicator, with visible markings
  • qrCode : quick Reference (QR) code
  • rfid : specific RF identification associated to an RFID-related account. Used for permit uses.
  • ticket : typically issued paper with printed details, often with magnetic strips; typically single use disposable.
  • electronicID : an identifier transmitted by electronic means
  • ticketcoupon : a visible printed or written paper-based ticket or coupon carrying an identifiable credential.
  • vehicleplate : a fixed identifier (registration plate) visible and fixed to a vehicle.
observedCredentialId
string

Specific identifier to the referenced observed credential.

observationStartTime
required
string <date-time>

The initial date and time of the observation.

observationEndTime
string <date-time>

The ending date and time of the observation, when it was continous since observationStartTime.

Array of objects (MultilingualString) non-empty

Array of SpecificLanguageString objects representing multi language text.

creationDateTime
required
string <date-time>

The date and time stamp for the creation of the observation element.

required
object (Location)

Positional information relating to an observation for both the observation target ('observed') and the source ('observer').

Array of objects (Image)

still or moving images observation evidence or a reference to such observation evidence

object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

object (VehicleAncillaryIdentification)

Information relating to a specific vehicle.

required
object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

object (Confidence)

overall confidence of the observation measurement

object (CharacterConfidence)

confidence of observation measurement

object (Extensions)

The APDS extension container (Use Case Document §C.2.5; Part 4 §4.3). Undeclared on APDS 4.1 entities (APX erratum 010).

Responses

Request samples

Content type
application/json
{
  • "type": "ObservationElement",
  • "method": "visual",
  • "observer": "Officer Peterson",
  • "observationStartTime": "2026-01-01T10:02:00Z",
  • "creationDateTime": "2026-01-01T10:04:00Z",
  • "observedCredentialId": "BD51 SMR",
  • "location": {
    },
  • "observerOrganisation": {
    }
}

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 0,
  • "message": "string",
  • "ids": [
    ]
}

get a specific observation element

get the latest version of a given Observation by its identifier (or a particular previous version when provided as a query parameter)

Authorizations:
apxOAuth
path Parameters
id
required
string

unique observation identifier

query Parameters
version
integer >= 1

Previous version number. Useful when a reference to a resource version is found in another dataset, and that version is no longer the latest one. Latest version is assumed when this parameter is not used.

Responses

Response samples

Content type
application/json
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "method": "anpr",
  • "observer": "string",
  • "type": "barcode",
  • "observedCredentialId": "string",
  • "observationStartTime": "2019-08-24T14:15:22Z",
  • "observationEndTime": "2019-08-24T14:15:22Z",
  • "description": [
    ],
  • "creationDateTime": "2019-08-24T14:15:22Z",
  • "location": {
    },
  • "images": [],
  • "elementIds": {
    },
  • "vehicleAncillaryIdentification": {
    },
  • "observerOrganisation": {
    },
  • "confidence": {
    },
  • "characterConfidence": {
    },
  • "extensions": {
    }
}

update a specific observation element

update the given Observation

Authorizations:
apxOAuth
path Parameters
id
required
string

unique observation identifier

header Parameters
APX-Update-Mode
string
Default: full
Enum: "full" "change"

APX data profile (Part 5 §5.1). full (default, stock APDS behavior): the body is the complete current state. change: the body is a ChangePayload — identity plus only the changed members; absent = unchanged, explicit null = clear. A stale version in change mode is 409 version-conflict.

Request Body schema: application/json
optional

The Observation as it now stands (full mode) or its identity plus the changed members (change mode). Undeclared in APDS 4.1 (candidate C-026, not yet filed).

Any of
id
required
string non-empty

Unique identifier for the object.

version
required
integer >= 1

Positive integer representing the object version.

method
required
string (ObservationTypeEnum)
Enum: "anpr" "chalk" "rfTransponder" "scanner" "visual"

A list of the supported observation types.

  • anpr: Automatic vehicle license plate recognition
  • chalk: Chalk-mark observation or similar
  • rfTransponder: Rf transponder radio frequency transponder device, for toll tag or similar radio based devices
  • scanner: Handheld or fixed scanning device (optical)
  • visual: Visual (human) observation
observer
string

The individual person making the observation recorded in this observation element.

type
string (CredentialTypeEnum)
Enum: "barcode" "bluetooth" "eticket" "hangtag" "licensePlate" "permit" "qrCode" "rfid" "ticket" "electronicID" "ticketcoupon" "vehicleplate"
  • barcode : barcode or QR digital print pattern, held on any physical media.
  • bluetooth : specific bluetooth or BLE identification chip used to associate a BLE receiver to a specific user. Used for both one time and permit uses.
  • eticket : digital equivalent of a paper ticket, often presentable via smartphone or similar device for control.
  • hangtag : visible, often removable, credential indicator, with visible markings
  • licensePlate : fixed plate, in a defined format, used to identify a specific vehicle- Normally a permanent fixture.
  • permit : issued credential, often in the form of an adhesive label, often placed on the windscreen, credential indicator, with visible markings
  • qrCode : quick Reference (QR) code
  • rfid : specific RF identification associated to an RFID-related account. Used for permit uses.
  • ticket : typically issued paper with printed details, often with magnetic strips; typically single use disposable.
  • electronicID : an identifier transmitted by electronic means
  • ticketcoupon : a visible printed or written paper-based ticket or coupon carrying an identifiable credential.
  • vehicleplate : a fixed identifier (registration plate) visible and fixed to a vehicle.
observedCredentialId
string

Specific identifier to the referenced observed credential.

observationStartTime
required
string <date-time>

The initial date and time of the observation.

observationEndTime
string <date-time>

The ending date and time of the observation, when it was continous since observationStartTime.

Array of objects (MultilingualString) non-empty

Array of SpecificLanguageString objects representing multi language text.

creationDateTime
required
string <date-time>

The date and time stamp for the creation of the observation element.

required
object (Location)

Positional information relating to an observation for both the observation target ('observed') and the source ('observer').

Array of objects (Image)

still or moving images observation evidence or a reference to such observation evidence

object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

object (VehicleAncillaryIdentification)

Information relating to a specific vehicle.

required
object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

object (Confidence)

overall confidence of the observation measurement

object (CharacterConfidence)

confidence of observation measurement

object (Extensions)

The APDS extension container (Use Case Document §C.2.5; Part 4 §4.3). Undeclared on APDS 4.1 entities (APX erratum 010).

Responses

Request samples

Content type
application/json
Example
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "method": "anpr",
  • "observer": "string",
  • "type": "barcode",
  • "observedCredentialId": "string",
  • "observationStartTime": "2019-08-24T14:15:22Z",
  • "observationEndTime": "2019-08-24T14:15:22Z",
  • "description": [
    ],
  • "creationDateTime": "2019-08-24T14:15:22Z",
  • "location": {
    },
  • "images": [],
  • "elementIds": {
    },
  • "vehicleAncillaryIdentification": {
    },
  • "observerOrganisation": {
    },
  • "confidence": {
    },
  • "characterConfidence": {
    },
  • "extensions": {
    }
}

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 0,
  • "message": "string",
  • "ids": [
    ]
}

delete a specific observation element

delete the given Observation

Authorizations:
apxOAuth
path Parameters
id
required
string

unique observation identifier

Responses

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 0,
  • "message": "string",
  • "ids": [
    ]
}

Organisations

Get List of Organisations (Contacts)

Returns the latest list of all organisations and their public ids

Authorizations:
oAuth
query Parameters
type
string (ContactPointTypeEnum)
Enum: "customerService" "emergencyContact" "enforcementSystemProvider" "operator" "owner" "propertyManager" "securityService" "serviceProvider"

filter by this type of organisation/contact

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "data": [
    ]
}

create a new contact

create a new contact point record which can then be referenced by other data elements

Authorizations:
apxOAuth
Request Body schema: application/json
required
contactType
required
string (ContactTypeEnum)

Defined the type of contact object.

  • ContactPoint: Contact detailed information.
  • ContactByReference: Reference to an exiting contact.
contactNotDefined
boolean

When true, there is currently no contact defined for the selected role and/or timeframe. Don't use the specialisations in this case.

contactUnknown
boolean

When true, the contact for the selected role and/or timeframe is unknown. Don't use the specialisations in this case.

shareWithPublic
boolean

When true, the details of this contact may be shared with the public. If false these contacts details are for internal purposes only.

object (OverallPeriod)

A continuous or discontinuous period of validity defined by overall bounding start and end times and the possible intersection of valid periods (potentially recurring) with the complement of exception periods (also potentially recurring).

id
required
string non-empty

Unique identifier for the object.

version
required
integer >= 1

Positive integer representing the object version.

Array of objects (MultilingualString) non-empty

Array of SpecificLanguageString objects representing multi language text.

type
required
string (ContactPointTypeEnum)
Enum: "customerService" "emergencyContact" "enforcementSystemProvider" "operator" "owner" "propertyManager" "securityService" "serviceProvider"

Defines the supported lists of types of contact.

  • customerService : Contact details for parking customer support for a facility or specific entity
  • emergencyContact : Contact details for emergency assistance or support for a facility or specific entity specifically related to parking operations
  • enforcementSystemProvider : Contact details for the provider of the enforcement system
  • operator : Contact details for the parking operator for a facility or specific entity
  • owner : Contact details for the owner of a facility or specific entity.
  • propertyManager : Contact details for the property manager of a facility or related facility.
  • securityService : Contact details for security services for a facility or specific entity
  • serviceProvider : Contact details for a parking service provider (e.g. pay-by-mobile provider)
Array of objects (Address)

Addresses.

Array of objects (ContactDetails)

Contact details.

Array of objects (EMailCommonData)

Email common data.

Array of objects (TelephoneContact)

Telephone contact.

Array of objects (GeoJsonObject)

Contact point location.

object (Extensions)

The APDS extension container (Use Case Document §C.2.5; Part 4 §4.3). Undeclared on APDS 4.1 entities (APX erratum 010).

Responses

Request samples

Content type
application/json
Example
{
  • "contactType": "contactPoint",
  • "contactNotDefined": true,
  • "contactUnknown": true,
  • "shareWithPublic": true,
  • "validityOfContact": {
    },
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "organisationName": [
    ],
  • "type": "customerService",
  • "address": [
    ],
  • "contactDetails": [
    ],
  • "eMailCommonData": [
    ],
  • "telephoneContacts": [
    ],
  • "pointLocations": [
    ],
  • "extensions": {
    }
}

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 0,
  • "message": "string",
  • "ids": [
    ]
}

get details of particular contact / organisation

returns the details of the contact identified by {contactId}

Authorizations:
oAuth
path Parameters
contactId
required
string

Unique identifier for the contact/organisation.

Responses

Response samples

Content type
application/json
{
  • "contactType": "contactPoint",
  • "id": "TESTCOUNCIL",
  • "version": 1,
  • "organisationName": [
    ],
  • "type": "operator"
}

update existing contact

update an existing contact point record which can then be referenced by other data elements

Authorizations:
apxOAuth
path Parameters
contactId
required
string

Unique identifier for the contact/organisation.

header Parameters
APX-Update-Mode
string
Default: full
Enum: "full" "change"

APX data profile (Part 5 §5.1). full (default, stock APDS behavior): the body is the complete current state. change: the body is a ChangePayload — identity plus only the changed members; absent = unchanged, explicit null = clear. A stale version in change mode is 409 version-conflict.

Request Body schema: application/json
required
Any of
contactType
required
string (ContactTypeEnum)
Enum: "contactPoint" "contactByReference"

Defined the type of contact object.

  • ContactPoint: Contact detailed information.
  • ContactByReference: Reference to an exiting contact.
contactNotDefined
boolean

When true, there is currently no contact defined for the selected role and/or timeframe. Don't use the specialisations in this case.

contactUnknown
boolean

When true, the contact for the selected role and/or timeframe is unknown. Don't use the specialisations in this case.

shareWithPublic
boolean

When true, the details of this contact may be shared with the public. If false these contacts details are for internal purposes only.

object (OverallPeriod)

A continuous or discontinuous period of validity defined by overall bounding start and end times and the possible intersection of valid periods (potentially recurring) with the complement of exception periods (also potentially recurring).

id
required
string non-empty

Unique identifier for the object.

version
required
integer >= 1

Positive integer representing the object version.

Array of objects (MultilingualString) non-empty

Array of SpecificLanguageString objects representing multi language text.

type
required
string (ContactPointTypeEnum)
Enum: "customerService" "emergencyContact" "enforcementSystemProvider" "operator" "owner" "propertyManager" "securityService" "serviceProvider"

Defines the supported lists of types of contact.

  • customerService : Contact details for parking customer support for a facility or specific entity
  • emergencyContact : Contact details for emergency assistance or support for a facility or specific entity specifically related to parking operations
  • enforcementSystemProvider : Contact details for the provider of the enforcement system
  • operator : Contact details for the parking operator for a facility or specific entity
  • owner : Contact details for the owner of a facility or specific entity.
  • propertyManager : Contact details for the property manager of a facility or related facility.
  • securityService : Contact details for security services for a facility or specific entity
  • serviceProvider : Contact details for a parking service provider (e.g. pay-by-mobile provider)
Array of objects (Address)

Addresses.

Array of objects (ContactDetails)

Contact details.

Array of objects (EMailCommonData)

Email common data.

Array of objects (TelephoneContact)

Telephone contact.

Array of objects (GeoJsonObject)

Contact point location.

object (Extensions)

The APDS extension container (Use Case Document §C.2.5; Part 4 §4.3). Undeclared on APDS 4.1 entities (APX erratum 010).

Responses

Request samples

Content type
application/json
Example
{
  • "contactType": "contactPoint",
  • "contactNotDefined": true,
  • "contactUnknown": true,
  • "shareWithPublic": true,
  • "validityOfContact": {
    },
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "organisationName": [
    ],
  • "type": "customerService",
  • "address": [
    ],
  • "contactDetails": [
    ],
  • "eMailCommonData": [
    ],
  • "telephoneContacts": [
    ],
  • "pointLocations": [
    ],
  • "extensions": {
    }
}

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 200,
  • "message": "contact 359e20ec-a836-4365-aa62-07de0993cb20 successfully updated"
}

delete existing contact

delete an existing contact point record

Authorizations:
apxOAuth
path Parameters
contactId
required
string

Unique identifier for the contact/organisation.

Responses

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 200,
  • "message": "contact 359e20ec-a836-4365-aa62-07de0993cb20 successfully deleted"
}

Right Specifications

List RightSpecifications

Returns a list of right specifications potentially filtered by a combination of :

  • latitude, longitude and radius : retrieve all right specifications used in a geographic area (via their associated place),
  • a list of Places : retrieve all right specifications connected to any of the given places,
  • issuer : the id of the entity that issued the right specification
  • modified_since : retrieve all right specifications that have changed from that given instant onwards,
  • expand : a comma-separated list of optional object attributes associated to a right specification that should be included in the result set.
Authorizations:
oAuth
query Parameters
latitude
number <float>

Location latitude to use as filter (mandatory if longitude and radius are defined)

longitude
number <float>

Location longitude to use as filter (mandatory if latitude and radius are defined)

radius
integer >= 0

Number of metres to use as search filter from given position (mandatory if latitude and longitude are defined)

place
Array of strings

Comma-separated list of unique place ids according to the requested types.

type
Array of strings (HierarchyElementTypeEnum)
Items Enum: "campus" "identifiedArea" "place" "space" "subplaceElement" "specificArea" "vehicularAccess" "electricChargingEquipment" "supplementalEquipment" "supplementalServiceFacility"

Comma-separated list of place types to consider. All will be assumed if parameter is not used or left blank.

modified_since
integer >= 0

Unix epoch instant to filter results that have changed or have been deleted after the given instant. If expand attributes are requested, then this parameter will also apply to those objects. When this attribute is used, the result set will also include a list of deleted references to avoid storing stale data.

issuer
string

id of the entity that issued the returned records

expand
Array of strings
Items Enum: "all" "none" "rateEligibility" "validity" "credentials" "rightPools"

Comma-separated list of optional object attributes associated to a right specification that should be included in the result set.

page
integer >= 1

The page number for paginated responses.

Responses

Response samples

Content type
application/json
{
  • "meta": {
    },
  • "deletedReferences": [
    ],
  • "data": [
    ]
}

Create RightSpecification

Create a new right specification.

Authorizations:
oAuth
Request Body schema: application/json
required
id
required
string non-empty

Unique identifier for the object.

version
required
integer >= 1

Positive integer representing the object version.

Array of objects (MultilingualString) non-empty

Array of SpecificLanguageString objects representing multi language text.

type
string (RightSpecificationTypeEnum)
Enum: "accessPermission" "loadingUnloading" "oneTimeUseParking" "permitParking" "setdownPickup" "waiting"

Defines the type of RightSpecification

  • accessPermission : intended grant access permission
  • loadingUnloading : intended granting permissions to load and unload vehicles.
  • oneTimeUseParking : intended for one time or limited parking usage
  • permitParking : intended for multi-use parking usage
  • setDownPickup : intended for passenger set down and pick up
  • waiting : intended to grant permission for an accompanied vehicle to wait
financialReference
string

Creator defined free-text reference to financial transactions associated to the specific Right Specification.

transferable
required
boolean
transferableConditions
boolean
credentials
Array of strings (CredentialTypeEnum)
Items Enum: "barcode" "bluetooth" "eticket" "hangtag" "licensePlate" "permit" "qrCode" "rfid" "ticket" "electronicID" "ticketcoupon" "vehicleplate"

The allowed credential types for this RightSpecification

required
object (Validity)

Specification of validity, either explicitly or by a validity time period specification which may be discontinuous.

expiry
string <date-time>

Date/time showing the timestamp for when a RightSpecification ceases to be valid.

Array of objects (RightPool)

Shares the number of AssignedRights that are available for use, are currently in use, or intended for use within a specific RightSpecification in specific date/time periods by a specific AssignedRightIssuer'

required
Array of objects (VersionedReference) non-empty

Reference to Places where this RightSpecification is available.

Array of objects (RateEligibility)

Defines the combination of Eligibility requirements with RateTables and associates this combination to a RightSpecification. RateEligibility enables a RightSpecification to have association to multiple RateTable(s) for a specific Eligibility ( or set of Qualifications). RateEligibility also defines if RateTables are Combinable. This is a Yes / No (Boolean) definition. Either all RateTables associated to a RightSpecification with a common Eligibility can be combined or they cannot.

object (RateTransition)

describes rate transition rules

object (Extensions)

The APDS extension container (Use Case Document §C.2.5; Part 4 §4.3). Undeclared on APDS 4.1 entities (APX erratum 010).

Responses

Request samples

Content type
application/json
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "description": [
    ],
  • "type": "accessPermission",
  • "financialReference": "string",
  • "transferable": true,
  • "transferableConditions": true,
  • "credentials": [
    ],
  • "validity": {
    },
  • "expiry": "2019-08-24T14:15:22Z",
  • "rightPools": [
    ],
  • "issuer": {
    },
  • "hierarchyElements": [
    ],
  • "rateEligibility": [
    ],
  • "rateTransition": {
    },
  • "extensions": {
    }
}

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 201,
  • "message": "RightSpecification created successfully."
}

Get RightSpecification

Returns the latest version of a given right specification by its identifier (or the specific version provided as a query parameter).

Authorizations:
oAuth
path Parameters
id
required
string

Unique identifier for the right specification.

query Parameters
version
integer >= 1

Previous version number. Useful when a reference to a resource version is found in another dataset, and that version is no longer the latest one. Latest version is assumed when this parameter is not used.

expand
Array of strings
Items Enum: "all" "none" "rateEligibility" "validity" "credentials" "rightPools"

Comma-separated list of optional object attributes associated to a right specification that should be included in the result set.

Responses

Response samples

Content type
application/json
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "description": [
    ],
  • "type": "accessPermission",
  • "financialReference": "string",
  • "transferable": true,
  • "transferableConditions": true,
  • "credentials": [
    ],
  • "validity": {
    },
  • "expiry": "2019-08-24T14:15:22Z",
  • "rightPools": [
    ],
  • "issuer": {
    },
  • "hierarchyElements": [
    ],
  • "rateEligibility": [
    ],
  • "rateTransition": {
    },
  • "extensions": {
    }
}

Update RightSpecification

Update an existing right specification

Authorizations:
oAuth
path Parameters
id
required
string

Unique identifier for the right specification.

header Parameters
APX-Update-Mode
string
Default: full
Enum: "full" "change"

APX data profile (Part 5 §5.1). full (default, stock APDS behavior): the body is the complete current state. change: the body is a ChangePayload — identity plus only the changed members; absent = unchanged, explicit null = clear. A stale version in change mode is 409 version-conflict.

Request Body schema: application/json
required
Any of
id
required
string non-empty

Unique identifier for the object.

version
required
integer >= 1

Positive integer representing the object version.

Array of objects (MultilingualString) non-empty

Array of SpecificLanguageString objects representing multi language text.

type
string (RightSpecificationTypeEnum)
Enum: "accessPermission" "loadingUnloading" "oneTimeUseParking" "permitParking" "setdownPickup" "waiting"

Defines the type of RightSpecification

  • accessPermission : intended grant access permission
  • loadingUnloading : intended granting permissions to load and unload vehicles.
  • oneTimeUseParking : intended for one time or limited parking usage
  • permitParking : intended for multi-use parking usage
  • setDownPickup : intended for passenger set down and pick up
  • waiting : intended to grant permission for an accompanied vehicle to wait
financialReference
string

Creator defined free-text reference to financial transactions associated to the specific Right Specification.

transferable
required
boolean
transferableConditions
boolean
credentials
Array of strings (CredentialTypeEnum)
Items Enum: "barcode" "bluetooth" "eticket" "hangtag" "licensePlate" "permit" "qrCode" "rfid" "ticket" "electronicID" "ticketcoupon" "vehicleplate"

The allowed credential types for this RightSpecification

required
object (Validity)

Specification of validity, either explicitly or by a validity time period specification which may be discontinuous.

expiry
string <date-time>

Date/time showing the timestamp for when a RightSpecification ceases to be valid.

Array of objects (RightPool)

Shares the number of AssignedRights that are available for use, are currently in use, or intended for use within a specific RightSpecification in specific date/time periods by a specific AssignedRightIssuer'

required
Array of objects (VersionedReference) non-empty

Reference to Places where this RightSpecification is available.

Array of objects (RateEligibility)

Defines the combination of Eligibility requirements with RateTables and associates this combination to a RightSpecification. RateEligibility enables a RightSpecification to have association to multiple RateTable(s) for a specific Eligibility ( or set of Qualifications). RateEligibility also defines if RateTables are Combinable. This is a Yes / No (Boolean) definition. Either all RateTables associated to a RightSpecification with a common Eligibility can be combined or they cannot.

object (RateTransition)

describes rate transition rules

object (Extensions)

The APDS extension container (Use Case Document §C.2.5; Part 4 §4.3). Undeclared on APDS 4.1 entities (APX erratum 010).

Responses

Request samples

Content type
application/json
Example
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "description": [
    ],
  • "type": "accessPermission",
  • "financialReference": "string",
  • "transferable": true,
  • "transferableConditions": true,
  • "credentials": [
    ],
  • "validity": {
    },
  • "expiry": "2019-08-24T14:15:22Z",
  • "rightPools": [
    ],
  • "issuer": {
    },
  • "hierarchyElements": [
    ],
  • "rateEligibility": [
    ],
  • "rateTransition": {
    },
  • "extensions": {
    }
}

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 200,
  • "message": "RightSpecification updated successfully."
}

Delete RightSpecification

Delete an existing right specification using its identifier.

Authorizations:
oAuth
path Parameters
id
required
string

Unique identifier for the right specification.

Responses

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 200,
  • "message": "RightSpecification deleted successfully."
}

Rate Tables

List RateTables

Returns a list of rate potentially filtered by a combination of :

  • latitude, longitude and radius : retrieve all rates used in a geographic area (via their associated assigned rights and place),
  • a list of places : retrieve all rates connected to assigned rights that belong to any of the given places,
  • a list of right specifications : retrieve all rates connected to any of the given right specifications,
  • issuer : the id of the rate responsible party (i.e. the issuer of the rate table)
  • modified_since : retrieve all rates that have changed from that given instant onwards,
  • expand : a comma-separated list of optional object attributes associated to a rate that should be included in the result set.
Authorizations:
oAuth
query Parameters
latitude
number <float>

Location latitude to use as filter (mandatory if longitude and radius are defined)

longitude
number <float>

Location longitude to use as filter (mandatory if latitude and radius are defined)

radius
integer >= 0

Number of metres to use as search filter from given position (mandatory if latitude and longitude are defined)

place
Array of strings

Comma-separated list of unique place ids according to the requested types.

right_spec
Array of strings

Comma-separated list of unique right specification ids according to the requested types.

modified_since
integer >= 0

Unix epoch instant to filter results that have changed or have been deleted after the given instant. If expand attributes are requested, then this parameter will also apply to those objects. When this attribute is used, the result set will also include a list of deleted references to avoid storing stale data.

expand
Array of strings
Items Enum: "all" "none" "rateLineCollections" "rateLineCollections.rateLines"

Comma-separated list of optional attributes associated to a rate that should be included in the result set.

issuer
string

id of the entity that issued the returned records

page
integer >= 1

The page number for paginated responses.

mode
string
Default: "full"
Enum: "full" "change"

APX change feed (Part 5 §5.2): full (default — the route's ordinary list; on a native APDS route, exactly stock APDS 4.1) or change (the changes after cursor: a ChangeFeedPage on a native route, the route's own list envelope with the change-page members on an APX list route, rule 8; on an APX list route without a cursor, an empty page holding the current head cursor).

cursor
string

Opaque change-feed cursor from a previous change page. Only meaningful with mode=change; a refused cursor is 404 target-not-found (Part 5 §5.2 rules 2 and 5).

Responses

Response samples

Content type
application/json
Example
{
  • "meta": {
    },
  • "deletedReferences": [
    ],
  • "data": [
    ]
}

Create RateTable

Create a new rate table.

Authorizations:
oAuth
Request Body schema: application/json
required
id
required
string non-empty

Unique identifier for the object.

version
required
integer >= 1

Positive integer representing the object version.

required
Array of objects (MultilingualString) non-empty

Array of SpecificLanguageString objects representing multi language text.

Array of objects (MultilingualString) non-empty

Array of SpecificLanguageString objects representing multi language text.

availability
required
string (RateAvailabilityTypeEnum)
Enum: "private" "public" "restricted"
  • private : Parking access is limited to known and authorized individuals.
  • public : Open to the public.
  • restricted : Open to the public but requires a direct purpose or permission to use from owner (e.g. Doctor's surgery, storefront...)"
object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

validation
boolean

Indicates if validations are accepted when using this RateTable.

rateType
string (RateTypeEnum)
Enum: "contract" "daily" "event" "hourly"

Describes the type of rates for a RateTable.

  • contract : Rate provided to contract holders only.
  • daily : Rate provided on a daily rate, per calendar day.
  • event : Rate provided in combination with a specific event.
  • hourly : Rate provided on an hourly basis.
additionalInformation
string (Url)

Represents a Url for an internet accessible resource.

object (Validity)

Specification of validity, either explicitly or by a validity time period specification which may be discontinuous.

required
Array of objects (RateLineCollection) non-empty

List of RateLineCollection that defines this RateTable.

object (Extensions)

The APDS extension container (Use Case Document §C.2.5; Part 4 §4.3). Undeclared on APDS 4.1 entities (APX erratum 010).

Responses

Request samples

Content type
application/json
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "rateTableName": [
    ],
  • "rateTableID": [
    ],
  • "availability": "private",
  • "rateResponsibleParty": {
    },
  • "rateSupersedeLink": {
    },
  • "validation": true,
  • "rateType": "contract",
  • "additionalInformation": "https://api.parking-data-standards.org",
  • "validity": {
    },
  • "rateLineCollections": [
    ],
  • "extensions": {
    }
}

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 0,
  • "message": "string",
  • "ids": [
    ]
}

Get RateTable

Returns the latest version of a given rate table by its identifier (or the specific version provided as a query parameter).

Authorizations:
oAuth
path Parameters
id
required
string

Unique identifier for the rate table.

query Parameters
version
integer >= 1

Previous version number. Useful when a reference to a resource version is found in another dataset, and that version is no longer the latest one. Latest version is assumed when this parameter is not used.

expand
Array of strings
Items Enum: "all" "none" "rateLineCollections" "rateLineCollections.rateLines"

Comma-separated list of optional attributes associated to a rate that should be included in the result set.

Responses

Response samples

Content type
application/json
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "rateTableName": [
    ],
  • "rateTableID": [
    ],
  • "availability": "private",
  • "rateResponsibleParty": {
    },
  • "rateSupersedeLink": {
    },
  • "validation": true,
  • "rateType": "contract",
  • "additionalInformation": "https://api.parking-data-standards.org",
  • "validity": {
    },
  • "rateLineCollections": [
    ],
  • "extensions": {
    }
}

Update RateTable

Update an existing rate table using its identifier, by providing new attributes.

Authorizations:
oAuth
path Parameters
id
required
string

Unique identifier for the rate table.

header Parameters
APX-Update-Mode
string
Default: full
Enum: "full" "change"

APX data profile (Part 5 §5.1). full (default, stock APDS behavior): the body is the complete current state. change: the body is a ChangePayload — identity plus only the changed members; absent = unchanged, explicit null = clear. A stale version in change mode is 409 version-conflict.

Request Body schema: application/json
required
Any of
id
required
string non-empty

Unique identifier for the object.

version
required
integer >= 1

Positive integer representing the object version.

required
Array of objects (MultilingualString) non-empty

Array of SpecificLanguageString objects representing multi language text.

Array of objects (MultilingualString) non-empty

Array of SpecificLanguageString objects representing multi language text.

availability
required
string (RateAvailabilityTypeEnum)
Enum: "private" "public" "restricted"
  • private : Parking access is limited to known and authorized individuals.
  • public : Open to the public.
  • restricted : Open to the public but requires a direct purpose or permission to use from owner (e.g. Doctor's surgery, storefront...)"
object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

validation
boolean

Indicates if validations are accepted when using this RateTable.

rateType
string (RateTypeEnum)
Enum: "contract" "daily" "event" "hourly"

Describes the type of rates for a RateTable.

  • contract : Rate provided to contract holders only.
  • daily : Rate provided on a daily rate, per calendar day.
  • event : Rate provided in combination with a specific event.
  • hourly : Rate provided on an hourly basis.
additionalInformation
string (Url)

Represents a Url for an internet accessible resource.

object (Validity)

Specification of validity, either explicitly or by a validity time period specification which may be discontinuous.

required
Array of objects (RateLineCollection) non-empty

List of RateLineCollection that defines this RateTable.

object (Extensions)

The APDS extension container (Use Case Document §C.2.5; Part 4 §4.3). Undeclared on APDS 4.1 entities (APX erratum 010).

Responses

Request samples

Content type
application/json
Example
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "rateTableName": [
    ],
  • "rateTableID": [
    ],
  • "availability": "private",
  • "rateResponsibleParty": {
    },
  • "rateSupersedeLink": {
    },
  • "validation": true,
  • "rateType": "contract",
  • "additionalInformation": "https://api.parking-data-standards.org",
  • "validity": {
    },
  • "rateLineCollections": [
    ],
  • "extensions": {
    }
}

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 0,
  • "message": "string",
  • "ids": [
    ]
}

Delete RateTable

Delete an existing rate table using its identifier.

Authorizations:
oAuth
path Parameters
id
required
string

Unique identifier for the rate table.

Responses

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 200,
  • "message": "Rate table deleted successfully."
}

Sessions

List Sessions

Returns a list of sessions potentially filtered by a combination of :

  • latitude, longitude and radius : retrieve all sessions occurring in a geographic area (via their associated place),
  • a list of Places : retrieve all sessions connected to any of the given places,
  • a list of RightSpecifications : retrieve all sessions with segments using any of the given right specifications,
  • a list of Credentials : retrieve all sessions linked to the given credentials,
  • start_before : retrieve all sessions starting before that given instant,
  • end_before : retrieve all sessions ending before that given instant,
  • start_after : retrieve all sessions starting after that given instant,
  • end_after : retrieve all sessions ending after that given instant,
  • modified_since : retrieve all sessions that have changed from that given instant onwards,
  • expand : a comma-separated list of optional object attributes associated to a session or its segment.s that should be included in the result set.
Authorizations:
oAuth
query Parameters
latitude
number <float>

Location latitude to use as filter (mandatory if longitude and radius are defined)

longitude
number <float>

Location longitude to use as filter (mandatory if latitude and radius are defined)

radius
integer >= 0

Number of metres to use as search filter from given position (mandatory if latitude and longitude are defined)

place
Array of strings

Comma-separated list of unique place ids according to the requested types.

type
Array of strings (HierarchyElementTypeEnum)
Items Enum: "campus" "identifiedArea" "place" "space" "subplaceElement" "specificArea" "vehicularAccess" "electricChargingEquipment" "supplementalEquipment" "supplementalServiceFacility"

Comma-separated list of place types to consider. All will be assumed if parameter is not used or left blank.

credential_id
Array of strings

Comma-separated list of unique credential ids according to the requested types.

credential_type
Array of strings (CredentialTypeEnum)
Items Enum: "barcode" "bluetooth" "eticket" "hangtag" "licensePlate" "permit" "qrCode" "rfid" "ticket" "electronicID" "ticketcoupon" "vehicleplate"

Comma-separated list of credential types to consider. All will be assumed if parameter is not used or left blank.

right_spec
Array of strings

Comma-separated list of unique right specification ids according to the requested types.

right_type
Array of strings (RightTypeEnum)
Items Enum: "accessPermission" "loadingUnloading" "oneTimeUseParking" "permitParking" "setdownPickup" "waiting"

Comma-separated list of right specification types to consider. All will be assumed if parameter is not used or left blank.

start_before
integer >= 0

Unix epoch instant to filter results starting before the given instant.

end_before
integer >= 0

Unix epoch instant to filter results ending before the given instant.

start_after
integer >= 0

Unix epoch instant to filter results starting after the given instant.

end_after
integer >= 0

Unix epoch instant to filter results ending after the given instant.

modified_since
integer >= 0

Unix epoch instant to filter results that have changed or have been deleted after the given instant. If expand attributes are requested, then this parameter will also apply to those objects. When this attribute is used, the result set will also include a list of deleted references to avoid storing stale data.

expand
Array of strings
Items Enum: "all" "none" "credentials" "vehicleAncillaryIdentification" "segments" "segments.space" "segments.assignedRight"

Comma-separated list of optional attributes associated to a session or its segment.s that should be included in the result set.

page
integer >= 1

The page number for paginated responses.

mode
string
Default: "full"
Enum: "full" "change"

APX change feed (Part 5 §5.2): full (default — the route's ordinary list; on a native APDS route, exactly stock APDS 4.1) or change (the changes after cursor: a ChangeFeedPage on a native route, the route's own list envelope with the change-page members on an APX list route, rule 8; on an APX list route without a cursor, an empty page holding the current head cursor).

cursor
string

Opaque change-feed cursor from a previous change page. Only meaningful with mode=change; a refused cursor is 404 target-not-found (Part 5 §5.2 rules 2 and 5).

Responses

Response samples

Content type
application/json
Example
{
  • "meta": {
    },
  • "deletedReferences": [
    ],
  • "data": [
    ]
}

Create Session

Creates a new session, along with one or more segment.s. It also allows the creation of assigned rights, for scenarios in which they must be created simultaneously (e.g. off-street and on-street short stays).

Authorizations:
oAuth
Request Body schema: application/json
required
id
required
string non-empty

Unique identifier for the object.

version
required
integer >= 1

Positive integer representing the object version.

actualStart
required
string <date-time>

The date/time of the start of the session.

actualEnd
string <date-time>

The date/time of the end of the session.

object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

required
Array of objects (CredentialAssigned) non-empty
required
Array of objects (Segment) non-empty
object (VehicleAncillaryIdentification)

Information relating to a specific vehicle.

object (Extensions)

The APDS extension container (Use Case Document §C.2.5; Part 4 §4.3). Undeclared on APDS 4.1 entities (APX erratum 010).

Responses

Request samples

Content type
application/json
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "actualStart": "2019-08-24T14:15:22Z",
  • "actualEnd": "2019-08-24T14:15:22Z",
  • "initiator": {
    },
  • "hierarchyElement": {
    },
  • "identifiedCredentials": [
    ],
  • "segments": [
    ],
  • "identifiedVehicle": {
    },
  • "extensions": {
    }
}

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 201,
  • "message": "Session created successfully."
}

Get Session

Returns the latest version of a given session by its identifier (or the specific version provided as a query parameter).

Authorizations:
oAuth
path Parameters
id
required
string

Unique identifier for the session.

query Parameters
version
integer >= 1

Previous version number. Useful when a reference to a resource version is found in another dataset, and that version is no longer the latest one. Latest version is assumed when this parameter is not used.

expand
Array of strings
Items Enum: "all" "none" "credentials" "vehicleAncillaryIdentification" "segments" "segments.space" "segments.assignedRight"

Comma-separated list of optional attributes associated to a session or its segment.s that should be included in the result set.

Responses

Response samples

Content type
application/json
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "actualStart": "2019-08-24T14:15:22Z",
  • "actualEnd": "2019-08-24T14:15:22Z",
  • "initiator": {
    },
  • "hierarchyElement": {
    },
  • "identifiedCredentials": [
    ],
  • "segments": [
    ],
  • "identifiedVehicle": {
    },
  • "extensions": {
    }
}

Update Session

Updates an existing session using its identifier, by providing new attributes. Segments may also be deleted by removing them from the list of segments in the session.

Authorizations:
oAuth
path Parameters
id
required
string

Unique identifier for the session.

header Parameters
APX-Update-Mode
string
Default: full
Enum: "full" "change"

APX data profile (Part 5 §5.1). full (default, stock APDS behavior): the body is the complete current state. change: the body is a ChangePayload — identity plus only the changed members; absent = unchanged, explicit null = clear. A stale version in change mode is 409 version-conflict.

Request Body schema: application/json
required
Any of
id
required
string non-empty

Unique identifier for the object.

version
required
integer >= 1

Positive integer representing the object version.

actualStart
required
string <date-time>

The date/time of the start of the session.

actualEnd
string <date-time>

The date/time of the end of the session.

object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

required
Array of objects (CredentialAssigned) non-empty
required
Array of objects (Segment) non-empty
object (VehicleAncillaryIdentification)

Information relating to a specific vehicle.

object (Extensions)

The APDS extension container (Use Case Document §C.2.5; Part 4 §4.3). Undeclared on APDS 4.1 entities (APX erratum 010).

Responses

Request samples

Content type
application/json
Example
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "actualStart": "2019-08-24T14:15:22Z",
  • "actualEnd": "2019-08-24T14:15:22Z",
  • "initiator": {
    },
  • "hierarchyElement": {
    },
  • "identifiedCredentials": [
    ],
  • "segments": [
    ],
  • "identifiedVehicle": {
    },
  • "extensions": {
    }
}

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 200,
  • "message": "Session updated successfully."
}

Delete Session

Deletes an existing session using its identifier. segments should be deleted by updating the session instead.

Authorizations:
oAuth
path Parameters
id
required
string

Unique identifier for the session.

Responses

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 200,
  • "message": "Session deleted successfully."
}

Assigned Rights

List AssignedRights

Returns a list of assigned rights potentially filtered by a combination of :

  • latitude, longitude and radius : retrieve all assigned rights occurring in a geographic area (via their associated place)
  • a list of places : retrieve all assigned rights connected to any of the given places,
  • a list of right specifications : retrieve all assigned rights with segments using any of the given right specifications,
  • a list of credentials : retrieve all assigned rights linked to the given credentials,
  • start_before : retrieve all assigned rights starting before that given instant,
  • end_before : retrieve all assigned rights ending before that given instant,
  • start_after : retrieve all assigned rights starting after that given instant,
  • end_after : retrieve all assigned rights ending after that given instant,
  • modified_since : retrieve all assigned rights that have changed from that given instant onwards,
  • expand : a comma-separated list of optional object attributes associated to an assigned right that should be included in the result set.
Authorizations:
oAuth
query Parameters
latitude
number <float>

Location latitude to use as filter (mandatory if longitude and radius are defined)

longitude
number <float>

Location longitude to use as filter (mandatory if latitude and radius are defined)

radius
integer >= 0

Number of metres to use as search filter from given position (mandatory if latitude and longitude are defined)

place
Array of strings

Comma-separated list of unique place ids according to the requested types.

type
Array of strings (HierarchyElementTypeEnum)
Items Enum: "campus" "identifiedArea" "place" "space" "subplaceElement" "specificArea" "vehicularAccess" "electricChargingEquipment" "supplementalEquipment" "supplementalServiceFacility"

Comma-separated list of place types to consider. All will be assumed if parameter is not used or left blank.

credential_id
Array of strings

Comma-separated list of unique credential ids according to the requested types.

credential_type
Array of strings (CredentialTypeEnum)
Items Enum: "barcode" "bluetooth" "eticket" "hangtag" "licensePlate" "permit" "qrCode" "rfid" "ticket" "electronicID" "ticketcoupon" "vehicleplate"

Comma-separated list of credential types to consider. All will be assumed if parameter is not used or left blank.

right_spec
Array of strings

Comma-separated list of unique right specification ids according to the requested types.

right_type
Array of strings (RightTypeEnum)
Items Enum: "accessPermission" "loadingUnloading" "oneTimeUseParking" "permitParking" "setdownPickup" "waiting"

Comma-separated list of right specification types to consider. All will be assumed if parameter is not used or left blank.

start_before
integer >= 0

Unix epoch instant to filter results starting before the given instant.

end_before
integer >= 0

Unix epoch instant to filter results ending before the given instant.

start_after
integer >= 0

Unix epoch instant to filter results starting after the given instant.

end_after
integer >= 0

Unix epoch instant to filter results ending after the given instant.

modified_since
integer >= 0

Unix epoch instant to filter results that have changed or have been deleted after the given instant. If expand attributes are requested, then this parameter will also apply to those objects. When this attribute is used, the result set will also include a list of deleted references to avoid storing stale data.

expand
Array of strings
Items Enum: "all" "none" "plannedUses" "assignedRightIssuer"

Comma-separated list of optional object attributes associated to an assigned right that should be included in the result set.

page
integer >= 1

The page number for paginated responses.

mode
string
Default: "full"
Enum: "full" "change"

APX change feed (Part 5 §5.2): full (default — the route's ordinary list; on a native APDS route, exactly stock APDS 4.1) or change (the changes after cursor: a ChangeFeedPage on a native route, the route's own list envelope with the change-page members on an APX list route, rule 8; on an APX list route without a cursor, an empty page holding the current head cursor).

cursor
string

Opaque change-feed cursor from a previous change page. Only meaningful with mode=change; a refused cursor is 404 target-not-found (Part 5 §5.2 rules 2 and 5).

Responses

Response samples

Content type
application/json
Example
{
  • "meta": {
    },
  • "deletedReferences": [
    ],
  • "data": [
    ]
}

Create AssignedRight

Create a new assigned right based on a given object.

Authorizations:
oAuth
Request Body schema: application/json
required

This method allows an issuer to assign a parking right specification to a holder

One of
id
required
string non-empty

Unique identifier for the object.

version
required
integer >= 1

Positive integer representing the object version.

required
object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

required
object (AssignedRightHolder)

Information concerning a specific holder of a granted right, corresponding to a defined RightSpecification.

issueMethod
string (IssueMethodTypeEnum)
Enum: "electronic" "ticket" "permit"

A list of the supported methods for issuing credentials.

  • electronic : electronically issued, traceable
  • permit : physical identifier, typically visibly mounted within vehicle
  • ticket : typically single use, paper based
issuanceTime
string <date-time>

The datetime this AssignedRight was issued.

minutesAvailable
number <float>

Number of decimal minutes that are remaining for use under a specified AssignedRight.

minutesUsed
number <float>

Number of decimal minutes that have been used under a specified AssignedRight.

totalMinutes
number <float>

Number of decimal minutes that have been issued under a specified AssignedRight.

object (AmountInCurrency)

A class supporting the definition of a unit of currency in a defined currency.

object (AmountInCurrency)

A class supporting the definition of a unit of currency in a defined currency.

instancesUsed
integer

The total number of instances that have been used under a specified RightSpecification.

instancesAvailable
integer

The total number of instances that are available for use under a specified RightSpecification.

totalInstances
integer

The total number of instances that have been issued under a specified AssignedRight.

expiry
string <date-time>

The datetime when the specific AssignedRight expires, and is not longer available for use.

Array of objects (PlannedUse)

Planned future uses of this AssignedRight.

Array of objects (Payment)

Payments made for this AssignedRight.

object (MonetaryValue)

Lightweight record of the monetary financial value of the associated AssignedRight (temporary). Service provider is entity responsible for selling/collecting fees associated to the AR.

object (Extensions)

The APDS extension container (Use Case Document §C.2.5; Part 4 §4.3). Undeclared on APDS 4.1 entities (APX erratum 010).

Responses

Request samples

Content type
application/json
Example
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "rightSpecification": {
    },
  • "rightHolder": {
    },
  • "assignedRightIssuer": {
    },
  • "issueMethod": "electronic",
  • "issuanceTime": "2019-08-24T14:15:22Z",
  • "minutesAvailable": 0.1,
  • "minutesUsed": 0.1,
  • "totalMinutes": 0.1,
  • "remainingValue": {
    },
  • "totalRightValue": {
    },
  • "instancesUsed": 0,
  • "instancesAvailable": 0,
  • "totalInstances": 0,
  • "expiry": "2019-08-24T14:15:22Z",
  • "plannedUses": [
    ],
  • "payments": [
    ],
  • "monetaryValue": {
    },
  • "extensions": {
    }
}

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 201,
  • "message": "Assigned right created successfully."
}

Get AssignedRight

Returns the latest version of a given assigned right by its identifier (or a specific version provided as a query parameter).

Authorizations:
oAuth
path Parameters
id
required
string

Unique identifier for the assigned right.

query Parameters
version
integer >= 1

Previous version number. Useful when a reference to a resource version is found in another dataset, and that version is no longer the latest one. Latest version is assumed when this parameter is not used.

expand
Array of strings
Items Enum: "all" "none" "plannedUses" "assignedRightIssuer"

Comma-separated list of optional object attributes associated to an assigned right that should be included in the result set.

Responses

Response samples

Content type
application/json
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "rightSpecification": {
    },
  • "rightHolder": {
    },
  • "assignedRightIssuer": {
    },
  • "issueMethod": "electronic",
  • "issuanceTime": "2019-08-24T14:15:22Z",
  • "minutesAvailable": 0.1,
  • "minutesUsed": 0.1,
  • "totalMinutes": 0.1,
  • "remainingValue": {
    },
  • "totalRightValue": {
    },
  • "instancesUsed": 0,
  • "instancesAvailable": 0,
  • "totalInstances": 0,
  • "expiry": "2019-08-24T14:15:22Z",
  • "plannedUses": [
    ],
  • "payments": [
    ],
  • "monetaryValue": {
    },
  • "extensions": {
    }
}

Update AssignedRight

Update an existing assigned right using its identifier, by providing new attributes. If the provided quote refers to a session extension, this request shall also update the referenced session.

Authorizations:
oAuth
path Parameters
id
required
string

Unique identifier for the assigned right.

header Parameters
APX-Update-Mode
string
Default: full
Enum: "full" "change"

APX data profile (Part 5 §5.1). full (default, stock APDS behavior): the body is the complete current state. change: the body is a ChangePayload — identity plus only the changed members; absent = unchanged, explicit null = clear. A stale version in change mode is 409 version-conflict.

Request Body schema: application/json
required
Any of
id
required
string non-empty

Unique identifier for the object.

version
required
integer >= 1

Positive integer representing the object version.

required
object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

required
object (AssignedRightHolder)

Information concerning a specific holder of a granted right, corresponding to a defined RightSpecification.

issueMethod
string (IssueMethodTypeEnum)
Enum: "electronic" "ticket" "permit"

A list of the supported methods for issuing credentials.

  • electronic : electronically issued, traceable
  • permit : physical identifier, typically visibly mounted within vehicle
  • ticket : typically single use, paper based
issuanceTime
string <date-time>

The datetime this AssignedRight was issued.

minutesAvailable
number <float>

Number of decimal minutes that are remaining for use under a specified AssignedRight.

minutesUsed
number <float>

Number of decimal minutes that have been used under a specified AssignedRight.

totalMinutes
number <float>

Number of decimal minutes that have been issued under a specified AssignedRight.

object (AmountInCurrency)

A class supporting the definition of a unit of currency in a defined currency.

object (AmountInCurrency)

A class supporting the definition of a unit of currency in a defined currency.

instancesUsed
integer

The total number of instances that have been used under a specified RightSpecification.

instancesAvailable
integer

The total number of instances that are available for use under a specified RightSpecification.

totalInstances
integer

The total number of instances that have been issued under a specified AssignedRight.

expiry
string <date-time>

The datetime when the specific AssignedRight expires, and is not longer available for use.

Array of objects (PlannedUse)

Planned future uses of this AssignedRight.

Array of objects (Payment)

Payments made for this AssignedRight.

object (MonetaryValue)

Lightweight record of the monetary financial value of the associated AssignedRight (temporary). Service provider is entity responsible for selling/collecting fees associated to the AR.

object (Extensions)

The APDS extension container (Use Case Document §C.2.5; Part 4 §4.3). Undeclared on APDS 4.1 entities (APX erratum 010).

Responses

Request samples

Content type
application/json
Example
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "rightSpecification": {
    },
  • "rightHolder": {
    },
  • "assignedRightIssuer": {
    },
  • "issueMethod": "electronic",
  • "issuanceTime": "2019-08-24T14:15:22Z",
  • "minutesAvailable": 0.1,
  • "minutesUsed": 0.1,
  • "totalMinutes": 0.1,
  • "remainingValue": {
    },
  • "totalRightValue": {
    },
  • "instancesUsed": 0,
  • "instancesAvailable": 0,
  • "totalInstances": 0,
  • "expiry": "2019-08-24T14:15:22Z",
  • "plannedUses": [
    ],
  • "payments": [
    ],
  • "monetaryValue": {
    },
  • "extensions": {
    }
}

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 200,
  • "message": "Assigned right updated successfully."
}

Delete AssignedRight

Delete an existing assigned right using its identifier.

Authorizations:
oAuth
path Parameters
id
required
string

Unique identifier for the assigned right.

Responses

Response samples

Content type
application/json
{
  • "status": "ok",
  • "code": 200,
  • "message": "Assigned right deleted successfully."
}

Quote

ReferenceToQuote

One of
object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

Example
{
  • "quoteResponseId": {
    },
  • "optionId": {
    }
}

QuoteRightRequest

id
required
string non-empty

Unique identifier for the object.

version
required
integer >= 1

Positive integer representing the object version.

object (Eligibility)

Defines one or several qualifications to be eligible to a specific RateTable.

Array of objects (ReferencedRightSpecification)
periodStart
required
string <date-time>

request date/time for the start of a proposed new transactions

periodEnd
string <date-time>

request date/time for the end of a proposed new transactions

requestTime
required
string <date-time>

date/time at which the request was made

timePeriods
Array of strings (Duration) [ items^P(?!$)(\d+Y)?(\d+M)?(\d+W)?(\d+D)?(T(?=\d)(\... ]

requested duration for the proposed new transaction

{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "eligibility": {
    },
  • "referencedRightSpecifications": [
    ],
  • "periodStart": "2019-08-24T14:15:22Z",
  • "periodEnd": "2019-08-24T14:15:22Z",
  • "requestTime": "2019-08-24T14:15:22Z",
  • "timePeriods": [
    ]
}

QuoteRightResponse

id
required
string non-empty

Unique identifier for the object.

version
required
integer >= 1

Positive integer representing the object version.

start
required
string <date-time>

date/time for the start of the proposed new transaction

end
required
string <date-time>

date/time for the end of the proposed new transaction

requestTime
required
string <date-time>

date/time at which the request for a quote was recorded/registered by the supplier

reason
string (ResponseReasonEnum)
Enum: "eligibilityRequirementNotMet" "noAvailability" "noMatchingSpecification" "other" "rightSpecificationNotAvailableAtRequestedTimes"

A list of supported reasons if a requested quote response is not provided

  • eligibilityRequirementNotMet: a stated eligibility requirement is not considered to be met
  • noAvailability: No availability for request
  • noMatchingSpecification: No matching rights specification found
  • other: other reason (reason not given)
  • rightSpecificationNotAvailableAtRequestedTimes: the requested specification is not available at the requested time
required
object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

responseTime
required
string <date-time>

date/time at which the response is made by the supplier

Array of objects (Option)
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "start": "2019-08-24T14:15:22Z",
  • "end": "2019-08-24T14:15:22Z",
  • "requestTime": "2019-08-24T14:15:22Z",
  • "reason": "eligibilityRequirementNotMet",
  • "quoteRequestId": {
    },
  • "responseTime": "2019-08-24T14:15:22Z",
  • "options": [
    ]
}

QuoteSessionExtensionRequest

id
required
string non-empty

Unique identifier for the object.

version
required
integer >= 1

Positive integer representing the object version.

requestedEndTime
required
string <date-time>

proposed date/time at which the proposed extended Session would end

requestTime
required
string <date-time>

reference date/time at which the request for a quote for a session extension is made

required
object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

required
object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "requestedEndTime": "2019-08-24T14:15:22Z",
  • "requestTime": "2019-08-24T14:15:22Z",
  • "sessionId": {
    },
  • "suppliedCredential": {
    }
}

QuoteSessionExtensionResponse

id
required
string non-empty

Unique identifier for the object.

version
required
integer >= 1

Positive integer representing the object version.

required
object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

required
object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

requestTime
required
string <date-time>

date/time at which the request for a quote was recorded/registered by the supplier

responseTime
required
string <date-time>

date/time at which the response is made by the supplier

revisedEndTime
required
string <date-time>

Date/time of the revised session end time

reason
string (QuoteRightResponseExtensionReasonEnum)
Enum: "existingSessionNotFound" "incorrectCredentialsSupplied" "noExtensionPossible"

A list of supported reasons if a requested session extension request is not provided

  • existingSessionNotFound: Error – the existing session referenced is not found
  • incorrectCredentialsSupplied: Error – credential details supplied are incorrect
  • noExtensionPossible: Error – the requested extension is not possible
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "requestSessionExtensionId": {
    },
  • "sessionId": {
    },
  • "requestTime": "2019-08-24T14:15:22Z",
  • "responseTime": "2019-08-24T14:15:22Z",
  • "revisedEndTime": "2019-08-24T14:15:22Z",
  • "reason": "existingSessionNotFound"
}

ReferenceQuoteExtension

object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

{
  • "quoteResponseId": {
    },
  • "optionId": {
    }
}

ReferenceQuoteNew

object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

{
  • "quoteResponseId": {
    },
  • "optionId": {
    }
}

ReferencedRightSpecification

object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

required
object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

{
  • "elementId": {
    },
  • "rightSpecificationId": {
    }
}

ResponseReasonEnum

string (ResponseReasonEnum)
Enum: "eligibilityRequirementNotMet" "noAvailability" "noMatchingSpecification" "other" "rightSpecificationNotAvailableAtRequestedTimes"

A list of supported reasons if a requested quote response is not provided

  • eligibilityRequirementNotMet: a stated eligibility requirement is not considered to be met
  • noAvailability: No availability for request
  • noMatchingSpecification: No matching rights specification found
  • other: other reason (reason not given)
  • rightSpecificationNotAvailableAtRequestedTimes: the requested specification is not available at the requested time
"eligibilityRequirementNotMet"

Option

id
required
string non-empty

Unique identifier for the object.

version
required
integer >= 1

Positive integer representing the object version.

object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

exact
boolean

indicates the supplied Option fully covers the time period requested

required
object (QuoteExpiration)

class defining conditions indicating the end of the validity of a quote

Array of objects (Identifiers) non-empty
required
object (FinancialQuote)

class containing information on financila value of a quote

{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "elementId": {
    },
  • "exact": true,
  • "quoteExpiration": {
    },
  • "identifiers": [
    ],
  • "financialQuote": {
    }
}

QuoteRightResponseExtensionReasonEnum

string (QuoteRightResponseExtensionReasonEnum)
Enum: "existingSessionNotFound" "incorrectCredentialsSupplied" "noExtensionPossible"

A list of supported reasons if a requested session extension request is not provided

  • existingSessionNotFound: Error – the existing session referenced is not found
  • incorrectCredentialsSupplied: Error – credential details supplied are incorrect
  • noExtensionPossible: Error – the requested extension is not possible
"existingSessionNotFound"

QuoteExpiration

expiresDateTime
string <date-time>
firstComeFirstServe
required
boolean

a Boolean value shows that the availability of an Option and thus FinancialQuote are available to the requester on a first come first served basis, with no assurance that the advertised RightSpecification will be available based on actual demand

{
  • "expiresDateTime": "2019-08-24T14:15:22Z",
  • "firstComeFirstServe": true
}

Identifiers

object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

required
object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

required
object (VersionedReference)

The quoted RateTable (the spelling Identifiers.required names). Publishers send this member; rateTableID is the APDS 4.1 declared spelling of the same reference and MAY accompany it (APX erratum 009).

{
  • "rateTableID": {
    },
  • "rightSpecificationId": {
    },
  • "rateTableId": {
    }
}

FinancialQuote

object (VersionedReference)

Represents a reference to an identifiable object where the combination of the identifier and version is unique. It is composed of an unique identifier, a version and potentially a string identifying the class of the referenced object.

taxIncluded
required
boolean

whether tax is included in the specified monetary value or not

transactionId
string

identifier for the transaction (e.g. reservation number) as agreed upon by the two entities sharing data

required
object (AmountInCurrency)

A class supporting the definition of a unit of currency in a defined currency.

{
  • "serviceProvider": {
    },
  • "taxIncluded": true,
  • "transactionId": "string",
  • "value": {
    }
}

get quotes

get quotes matching specified criteria

Authorizations:
apxOAuth
query Parameters
latitude
number <float>

Location latitude to use as filter (mandatory if longitude and radius are defined)

longitude
number <float>

Location longitude to use as filter (mandatory if latitude and radius are defined)

radius
integer >= 0

Number of metres to use as search filter from given position (mandatory if latitude and longitude are defined)

modified_since
integer >= 0

Unix epoch instant to filter results that have changed or have been deleted after the given instant. If expand attributes are requested, then this parameter will also apply to those objects. When this attribute is used, the result set will also include a list of deleted references to avoid storing stale data.

place
Array of strings

Comma-separated list of unique place ids according to the requested types.

right_spec
Array of strings

Comma-separated list of unique right specification ids according to the requested types.

quote_type
string
Enum: "QuoteRightRequest" "QuoteRightResponse" "QuoteSessionExtensionRequest" "QuoteSessionExtensionResponse"

type of quote element requested

Responses

Response samples

Content type
application/json
Example
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "eligibility": {
    },
  • "referencedRightSpecifications": [
    ],
  • "periodStart": "2019-08-24T14:15:22Z",
  • "periodEnd": "2019-08-24T14:15:22Z",
  • "requestTime": "2019-08-24T14:15:22Z",
  • "timePeriods": [
    ]
}

create quote request

submit a request for a quote

Authorizations:
apxOAuth
Request Body schema: application/json
optional

The quote request: a QuoteRightRequest (new right) or a QuoteSessionExtensionRequest (extend a session). Undeclared in APDS 4.1 (APX erratum 007).

One of
id
required
string non-empty

Unique identifier for the object.

version
required
integer >= 1

Positive integer representing the object version.

object (Eligibility)

Defines one or several qualifications to be eligible to a specific RateTable.

Array of objects (ReferencedRightSpecification)
periodStart
required
string <date-time>

request date/time for the start of a proposed new transactions

periodEnd
string <date-time>

request date/time for the end of a proposed new transactions

requestTime
required
string <date-time>

date/time at which the request was made

timePeriods
Array of strings (Duration) [ items^P(?!$)(\d+Y)?(\d+M)?(\d+W)?(\d+D)?(T(?=\d)(\... ]

requested duration for the proposed new transaction

Responses

Request samples

Content type
application/json
Example
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "eligibility": {
    },
  • "referencedRightSpecifications": [
    ],
  • "periodStart": "2019-08-24T14:15:22Z",
  • "periodEnd": "2019-08-24T14:15:22Z",
  • "requestTime": "2019-08-24T14:15:22Z",
  • "timePeriods": [
    ]
}

Response samples

Content type
application/json
{
  • "referenceInstant": 1709840615,
  • "offset": 0,
  • "pageSize": 100,
  • "total": 1,
  • "data": [
    ]
}

get details of a specific quote

get details of quote identified by id

Authorizations:
apxOAuth
path Parameters
id
required
string

unique id of the quote

Responses

Response samples

Content type
application/json
Example
{
  • "id": "98bccb9c-2ffe-4ca4-8e7f-eb1ae4439c29",
  • "version": 1,
  • "eligibility": {
    },
  • "referencedRightSpecifications": [
    ],
  • "periodStart": "2019-08-24T14:15:22Z",
  • "periodEnd": "2019-08-24T14:15:22Z",
  • "requestTime": "2019-08-24T14:15:22Z",
  • "timePeriods": [
    ]
}