Doc Ref: 9D-GDT-WS-1.1

B1 Web Services Integration Specification (GDT)

Technical architecture and interface specification for bidirectional integration between B1 Connect and the General Directorate of Traffic (GDT). Governs real-time plate manufacturing ingestion, order reconciliation, and fitting completion callbacks in alignment with GDT Integration Guide v1.1.

Milestones

Implementation Status

ImplementedInbound Ingestion (GDT → B1)Active endpoints, API key verification, payload schema validation, idempotency checks, and full transaction logging.
ImplementedOutbound Confirmation (B1 → GDT)Triggered automatically upon branch installation sign-off, backed by an exponential retry pipeline.
VerifiedCI / Test AutomationFull test suite passing across all payload conditions, edge cases, and deduplication scenarios.
Pending GDTJoint Staging ValidationAwaiting GDT staging endpoint URI, authorization credentials, and status confirmation mapping.
PendingProduction DeploymentFinal DNS routing and TLS certificate bindings on production ingress nodes.
Architecture

Transaction Lifecycle

GDT Traffic Management Core B1 Connect Branch & Production Operations 1 · POST /plate-installations (New Order) ACK: B1-000 (Success) + b1Reference 2 · Outbound Webhook (Plates Fitted) Target GDT URI · Automated retry pipeline
Network & Firewalls

Connection & Routing Topology

Dedicated static endpoints provisioned for the GDT interface. Inbound orders route to B1 Ingress; fitting confirmation callbacks originate from B1 Egress nodes.

EnvironmentB1 Ingress (GDT → B1)B1 Egress (B1 → GDT)Ports & Transport
Production20.254.20.129131.145.152.225443 / HTTPS (80 redirects to 443)
Staging / DEV4.255.163.23172.215.238.40443 / HTTPS (80 redirects to 443)
GDT Host(s)Static public calling IPs and target callback URIs to be provided by GDT for ingress whitelisting.443 / HTTPS

Strict TLS 1.3 enforced across all environments. Inbound traffic on port 80 is automatically redirected to port 443; plain HTTP traffic is rejected.

Security Protocols

Authentication & Access Controls

Service 01 · Inbound Ingestion

Plate Installation Request

POST/api/gdt/v1/plate-installations

Synchronous ingestion endpoint. Receives single-order JSON payloads from GDT, performs schema validation and deduplication, and returns an immediate acknowledgment reference. Field mapping is tolerant to case and underscore formatting variations.

Payload Schema

FieldRequirementValidation Rule
requestNumberRequiredUnique external reference ID issued by GDT.
requestTypeCodeRequiredTransaction type code. Preserved and echoed in completion callback.
requestTypeDescriptionEn / ArRequiredBilingual classification descriptions.
requestDateRequiredISO Date format: YYYY-MM-DD.
requestStatusCodeRequiredEnumerated: PPAY (Branch payment pending) or PINS (Prepaid online). Other values trigger B1-006.
requestStatusDescriptionEn / ArRequiredBilingual status descriptors.
isFromBlockchainRequiredBoolean (Accepts true/false, 1/0, Y/N).
chassisNumber, engineNumberRequiredAlphanumeric identifiers.
make / model / color DescriptionEn / ArRequiredBilingual vehicle spec fields (6 strings).
yearOfMakeRequiredInteger (1900 to current year + 1).
plateNumberRequired1–10 alphanumeric characters.
plateTypeCodeRequiredStandard code list (PRV, ORG, YEL, MCY, POL, DIP, DWN, EXP, INS, SPC, SPT).
plateTypeDescriptionEn / ArRequiredBilingual plate category descriptions.
numberOfLongPlates / Short / VeryShortRequiredInteger (0–9); cumulative total must be ≥ 1.
b1OfficeLocationCodeOptionalTarget installation branch; re-assignable by customer via self-service app.
requestorIdNumberRequiredCPR (9 digits) or CR (6–8 digits). Required for customer verification.
requestorNameEn / ArRequiredBilingual customer identity strings.

Sample Request

{
  "requestNumber": "TMS-26-0419001",
  "requestTypeCode": "NREG",
  "requestTypeDescriptionEn": "New registration",
  "requestTypeDescriptionAr": "تسجيل جديد",
  "requestDate": "2026-11-03",
  "requestStatusCode": "PINS",
  "requestStatusDescriptionEn": "Pending plate installation",
  "requestStatusDescriptionAr": "تركيب اللوحات",
  "isFromBlockchain": false,
  "chassisNumber": "JTMHV05J604123456",
  "engineNumber": "1VD-0823456",
  "makeDescriptionEn": "Toyota",
  "makeDescriptionAr": "تويوتا",
  "modelDescriptionEn": "Land Cruiser",
  "modelDescriptionAr": "لاند كروزر",
  "colorDescriptionEn": "White",
  "colorDescriptionAr": "أبيض",
  "yearOfMake": 2026,
  "plateNumber": "615216",
  "plateTypeCode": "PRV",
  "plateTypeDescriptionEn": "Private",
  "plateTypeDescriptionAr": "خصوصي",
  "numberOfLongPlates": 2,
  "numberOfShortPlates": 0,
  "numberOfVeryShortPlates": 0,
  "b1OfficeLocationCode": "",
  "requestorIdNumber": "880112345",
  "requestorNameEn": "Test Customer",
  "requestorNameAr": "عميل تجريبي"
}

Acknowledgement (HTTP 200)

{
  "statusCode": "B1-000",
  "statusMessage": "Success.",
  "b1Reference": "20187"
}

Client Error (HTTP 400)

{
  "statusCode": "B1-004",
  "statusMessage": "A mandatory field is missing: plateNumber."
}

Idempotency & State Handling

  • Unprocessed Orders: Full field update allowed on duplicate requestNumber.
  • Accepted Orders: Updates restricted to payment state and requestor metadata.
  • Payment Transition (PPAY → PINS): Order automatically updated to paid status.
  • Invalid State Reversal (PINS → PPAY): Rejected with B1-007.
  • Terminal State: Resubmissions for completed installations rejected with B1-008.
  • Manual Counter Reconciliation: Automatically linked with branch ticket; queued for verification.
Services 02 & 03 · Metadata Lookups

System Dictionaries & Branch Locations

GET/api/gdt/v1/office-locationsActive installation branch registry: facility codes, multilingual names, geo-coordinates, operating hours, and contact channels.
GET/api/gdt/v1/request-statusesSupported order state enumerations (PPAY, PINS) with bilingual labels.
Reference

API Response Code Matrix

CodeHTTPDescription
B1-000200 OKRequest processed and recorded successfully.
B1-001401 UnauthorizedAPI authentication key missing or invalid.
B1-002403 ForbiddenOrigin IP address rejected by access whitelist.
B1-003400 Bad RequestMalformed JSON payload syntax.
B1-004400 Bad RequestMandatory parameter absent from schema (field identified).
B1-005400 Bad RequestData type or value constraint violation (field identified).
B1-006400 Bad RequestInvalid status code enumeration; requires PPAY or PINS.
B1-007409 ConflictIllegal state transition: prepaid orders cannot revert to branch pay.
B1-008409 ConflictOrder has already completed its lifecycle.
B1-009503 Service UnavailableService unavailable; backoff and retry.
B1-010500 Internal ErrorInternal exception; includes transaction tracking reference.
Service 04 · Outbound Webhook

Installation Completion Callback (B1 → GDT)

Dispatched synchronously upon branch confirmation of plate installation. Target URIs, authentication schemes, and success schemas are managed in 9DIGITAL environment configuration.

Outbound Payload

POST {GDT_CONFIRMATION_URL}
Content-Type: application/json
Authorization: Basic … | Bearer …
{
  "gdtRequestNumber": "TMS-26-0419001",
  "gdtRequestTypeCode": "NREG",
  "isFromBlockchain": false
}

Delivery & Retry Policy

  • Success Condition: HTTP 2xx combined with application-level status matching the configured whitelist (e.g., 000, 0, 200, SUCCESS).
  • Request Timeout: 20 seconds standard threshold (configurable from 5–60s).
  • Retry Pipeline: Asynchronous retry intervals at 2m, 5m, 15m, 30m, and 60m backed by recurring health monitoring jobs.
  • Manual Branch Escalation: Orders originating from manual counter entry trigger administrative alerts after 3 delivery attempts to facilitate manual portal sync.
  • Diagnostics: Handshake utility available in administrative console using synthetic reference TEST-0000000.
Implementation Readiness

Action Items for Production Go-Live

Prerequisites from GDT Technical Team

  1. Confirmation webhook URIs for Staging and Production environments.
  2. Authentication credentials (HTTP Basic or Bearer token) and expected success payload schema.
  3. Static source public IP addresses for network allow-list provisioning.
  4. Production transaction type code definitions.
  5. Final confirmation of plate type code cross-mappings (4 pending confirmation).
  6. Operational approval on manual counter reconciliation workflow.

Deliverables from 9DIGITAL Engineering

  1. FQDN DNS provisioning and TLS certificate termination on production nodes.
  2. Dedicated staging endpoints and sandbox credentials for joint integration testing.
  3. Secure key distribution via encrypted enterprise credential exchange.
  4. End-to-end integration dry run across all error scenarios prior to live cutover.