{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/portbase/main/json-schema/portbase-get-road-voyage-updates-schema.json",
  "title": "GetRoadVoyageUpdates",
  "x-generated": "2026-10-18",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/portbase-hinterland-container-notification-openapi.yml#/components/schemas/GetRoadVoyageUpdates",
  "required": [
    "clientId"
  ],
  "type": "object",
  "properties": {
    "clientId": {
      "type": "string",
      "description": "Identifies different clients within a consumer. So this is a unique id for your tracking client software, which you can choose yourself.\nUnless you want to loadbalance, send the same clientId in every API request.\nIf you do wish to use multiple clients to loadbalance,\neach client should send a different clientId.\nUpdates will be loadbalanced between the active clientIds."
    },
    "maxSize": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Limits the amount of updates received (nr of road voyages) in each update batch. Default is 32.",
      "format": "int32"
    },
    "maxTimeout": {
      "minimum": 1000,
      "type": [
        "integer",
        "null"
      ],
      "description": "Limits how long the request will wait for new updates (in milliseconds). Default, maximum and recommended is 95000 ms. IMPORTANT: If a result is found sooner, it will be returned immediately. A higher timeout reduces connection overhead when updates are less frequent, which is important for our performance. Also, due to performance reasons, we will soft-cap the minimum maxTimeout at 10s: please consider 10s the lowest allowed amount. In the future we plan on raising this lower validation limit as well, so this soft-cap is reflected in the validation limits again.",
      "format": "int64"
    },
    "version": {
      "maximum": 2,
      "minimum": 0,
      "type": [
        "integer",
        "null"
      ],
      "description": "Version of the Updates that will be received. Defaults to 0. Higher versions may include additional fields or structural changes to the response objects.",
      "format": "int32"
    },
    "pathFilters": {
      "type": "array",
      "description": "**OPTIONAL:** JSON paths to monitor for changes using RFC 6901 JSON Pointer notation. When specified, updates are only sent when values at these paths change. This allows clients to reduce bandwidth by filtering out irrelevant updates. **This is an optional feature - if not specified, all updates are sent.**\n\n**Examples:** `/voyageStatus`, `/voyageData/truckLicenseId`, `/visits`\n\n**Limitations:**\n- Path filters apply to the entire voyage object\n- Filtering on nested visit or handling properties requires filtering on the parent collection (e.g., `/visits`)\n- Cannot filter on specific array elements by ID, only on the entire collection\n- If null or empty, all updates are sent regardless of what changed",
      "items": {
        "type": [
          "string",
          "null"
        ],
        "description": "**OPTIONAL:** JSON paths to monitor for changes using RFC 6901 JSON Pointer notation. When specified, updates are only sent when values at these paths change. This allows clients to reduce bandwidth by filtering out irrelevant updates. **This is an optional feature - if not specified, all updates are sent.**\n\n**Examples:** `/voyageStatus`, `/voyageData/truckLicenseId`, `/visits`\n\n**Limitations:**\n- Path filters apply to the entire voyage object\n- Filtering on nested visit or handling properties requires filtering on the parent collection (e.g., `/visits`)\n- Cannot filter on specific array elements by ID, only on the entire collection\n- If null or empty, all updates are sent regardless of what changed"
      }
    }
  }
}