Entur · Schema

SupplementProductResponse

CompanyPublic TransportJourney PlanningMobilityOpen DataNorwayTransitGraphQL

Properties

Name Type Description
id string The NeTEx ID of the supplement product.
versionId string The netex id reference to the object.
versionNumber integer Version number of the version. Only present when versionStatus is VERSIONED. Starts at 1 for a new product and is incremented by 1 for each new version.
datasource object The datasource that owns this supplement product.
privateCodes array Optional external system identifiers.
ownerOrganisationId integer Internal id of the organisation that owns this supplement product.
names object
descriptions object
startDate string The start date of the version.
endDate string The end date of the version (optional).
status object
chargingMomentType object
supplementProductType object
conditionsSummary object
vatGroup object
purchaseWindowRef string NeTEx ID of a PurchaseWindow instance (Product Parameters API, /v3/parameters/purchase-windows). Available values are listed in the Product Parameters API.
usageValidityPeriodRef string NeTEx ID of a UsageValidityPeriod instance (limitations/usage-validity-period). Available values are listed in the Product Parameters API. **Not yet implemented:** this endpoint currently accepts but
entitlementRequiredRefs array List of NeTEx IDs of EntitlementRequired instances (limitations/entitlement-required). Available values are listed in the Product Parameters API. **Not yet implemented:** this endpoint currently accep
validityParameters array List of validity parameters. The specified parameter tells where the supplement product is valid. This can be lines, zones, stops etc. **Not yet implemented:** this endpoint currently accepts but does
fareTableRefs array NeTEx IDs of the FareTable instances that price this supplement product. Read-only. Prices themselves are not exposed here; use the pricing/fare-table API with these references to retrieve the actual
View JSON Schema on GitHub

JSON Schema

entur-supplement-product-response-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/entur/main/json-schema/entur-supplement-product-response-schema.json",
  "title": "SupplementProductResponse",
  "x-generated": "2026-10-09",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/entur-products-api-openapi.yml#/components/schemas/SupplementProductResponse",
  "required": [
    "chargingMomentType",
    "conditionsSummary",
    "entitlementRequiredRefs",
    "id",
    "names",
    "ownerOrganisationId",
    "privateCodes",
    "purchaseWindowRef",
    "startDate",
    "status",
    "supplementProductType",
    "usageValidityPeriodRef",
    "validityParameters",
    "vatGroup",
    "versionId"
  ],
  "type": "object",
  "properties": {
    "id": {
      "pattern": "^([A-Z]{3}):SupplementProduct:([0-9A-Za-z_\\-]*)$",
      "type": "string",
      "description": "The NeTEx ID of the supplement product."
    },
    "versionId": {
      "pattern": "^([A-Z]{3}):Version:([0-9A-Za-z_\\-]*)$",
      "type": "string",
      "description": "The netex id reference to the object."
    },
    "versionNumber": {
      "type": "integer",
      "description": "Version number of the version. Only present when versionStatus is VERSIONED. Starts at 1 for a new product and is incremented by 1 for each new version.",
      "format": "int64"
    },
    "datasource": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the datasource."
        }
      },
      "description": "The datasource that owns this supplement product."
    },
    "privateCodes": {
      "type": "array",
      "description": "Optional external system identifiers.",
      "items": {
        "type": "string"
      },
      "default": []
    },
    "ownerOrganisationId": {
      "type": "integer",
      "description": "Internal id of the organisation that owns this supplement product.",
      "format": "int64"
    },
    "names": {
      "$ref": "#/$defs/LocalizedString"
    },
    "descriptions": {
      "$ref": "#/$defs/LocalizedString"
    },
    "startDate": {
      "type": "string",
      "description": "The start date of the version.",
      "format": "date"
    },
    "endDate": {
      "type": "string",
      "description": "The end date of the version (optional).",
      "format": "date"
    },
    "status": {
      "allOf": [
        {
          "$ref": "#/$defs/VersionStatus"
        },
        {
          "description": "Status of the supplement product.\n\n- **DRAFT** - Under construction and not ready for operational use.\n- **PROPOSED** - Complete but pending review and approval.\n- **VERSIONED** - Finalized and frozen; a new version must be created for further modifications. Remains authoritative for its validity period even after expiry.\n- **DEPRECATED** - Explicitly withdrawn and should not be used; indicates an active decision to retract, not a natural expiry.\n"
        }
      ]
    },
    "chargingMomentType": {
      "$ref": "#/$defs/ChargingMomentType"
    },
    "supplementProductType": {
      "$ref": "#/$defs/SupplementProductType"
    },
    "conditionsSummary": {
      "$ref": "#/$defs/ConditionsSummary"
    },
    "vatGroup": {
      "$ref": "#/$defs/VatGrpupType"
    },
    "purchaseWindowRef": {
      "pattern": "^([A-Z]{3}):PurchaseWindow:([0-9A-Za-z_\\-]*)$",
      "type": "string",
      "description": "NeTEx ID of a PurchaseWindow instance (Product Parameters API, /v3/parameters/purchase-windows). Available values are listed in the Product Parameters API.\n"
    },
    "usageValidityPeriodRef": {
      "pattern": "^([A-Z]{3}):UsageValidityPeriod:([0-9A-Za-z_\\-]*)$",
      "type": "string",
      "description": "NeTEx ID of a UsageValidityPeriod instance (limitations/usage-validity-period).\nAvailable values are listed in the Product Parameters API.\n\n**Not yet implemented:** this endpoint currently accepts but does not persist or return this field.\n",
      "x-implementation-status": "not-persisted"
    },
    "entitlementRequiredRefs": {
      "minItems": 1,
      "type": "array",
      "description": "List of NeTEx IDs of EntitlementRequired instances (limitations/entitlement-required).\nAvailable values are listed in the Product Parameters API.\n\n**Not yet implemented:** this endpoint currently accepts but does not persist or return this field.\n",
      "items": {
        "pattern": "^([A-Z]{3}):EntitlementRequired:([0-9A-Za-z_\\-]*)$",
        "type": "string",
        "description": "NeTEx ID of an EntitlementRequired instance."
      },
      "x-implementation-status": "not-persisted"
    },
    "validityParameters": {
      "type": "array",
      "description": "List of validity parameters. The specified parameter tells where the supplement product is valid. This can be lines, zones, stops etc.\n\n**Not yet implemented:** this endpoint currently accepts but does not persist or return this field.\n",
      "items": {
        "$ref": "#/$defs/ValidityParameters"
      },
      "x-implementation-status": "not-persisted"
    },
    "fareTableRefs": {
      "type": "array",
      "description": "NeTEx IDs of the FareTable instances that price this supplement product.\n\nRead-only. Prices themselves are not exposed here; use the pricing/fare-table API with these\nreferences to retrieve the actual prices. This lets clients discover the relevant fare\ntables for a priceable object directly, without fetching and scanning every fare table.\n",
      "readOnly": true,
      "items": {
        "pattern": "^([A-Z]{3}):FareTable:([0-9A-Za-z_\\-]*)$",
        "type": "string",
        "description": "NeTEx ID of a FareTable that prices this supplement product."
      },
      "default": []
    }
  },
  "$defs": {
    "ChargingMomentType": {
      "type": "string",
      "description": "Charging moment type.\n\nNote: Currently, only `BEFORE_TRAVEL` is supported in Entur sales platform.\n",
      "enum": [
        "BEFORE_TRAVEL",
        "ON_START_OF_TRAVEL",
        "BEFORE_END_OF_TRAVEL",
        "BEFORE_TRAVEL_THEN_ADJUST_AT_END_OF_TRAVEL",
        "ON_START_THEN_ADJUST_AT_END_OF_TRAVEL",
        "ON_START_THEN_ADJUST_AT_END_OF_FARE_DAY",
        "ON_START_THEN_ADJUST_AT_END_OF_CHARGE_PERIOD",
        "AT_END_OF_TRAVEL",
        "AT_END_OF_FARE_DAY",
        "AT_END_OF_CHARGE_PERIOD",
        "FREE",
        "ANY_TIME",
        "OTHER"
      ]
    },
    "ConditionsSummary": {
      "required": [
        "exchangeable",
        "fareStructureType",
        "refundable"
      ],
      "type": "object",
      "properties": {
        "exchangeable": {
          "type": "boolean",
          "description": "Whether the supplement product is exchangeable."
        },
        "refundable": {
          "type": "boolean",
          "description": "Whether the supplement product is refundable."
        },
        "fareStructureType": {
          "$ref": "#/$defs/FareStructureType"
        }
      }
    },
    "FareStructureType": {
      "type": "string",
      "description": "The type of fare structure. This indicates the method by which the fare is calculated, e.g. flat fare, zonal fare, point-to-point fare, etc.",
      "enum": [
        "CAPPED_FLAT_FARE",
        "CAPPED_POINT_TO_POINT_FARE",
        "CAPPED_ZONAL_FARE",
        "LINE_FLAT_FARE",
        "NETWORK_FLAT_FARE",
        "POINT_TO_POINT_FARE",
        "POINT_TO_POINT_DISTANCE_FARE",
        "STAGE_FARE",
        "ZONE_FLAT_FARE",
        "ZONE_SEQUENCE_FARE",
        "ZONE_TO_ZONE_FARE",
        "ZONE_COUNT_FARE",
        "PENALTY_FARE",
        "OTHER"
      ]
    },
    "GenericParameterAssignmentGroupingType": {
      "type": "string",
      "description": "How multiple GPA parameters should be combined (AND/OR)",
      "enum": [
        "AND",
        "OR"
      ]
    },
    "LocalizedString": {
      "type": "array",
      "items": {
        "required": [
          "lang",
          "value"
        ],
        "type": "object",
        "properties": {
          "lang": {
            "pattern": "^[a-z]{2}-[A-Z]{2}$",
            "type": "string",
            "description": "BCP-47 language tag (e.g., 'nb-NO', 'en-GB')."
          },
          "value": {
            "type": "string",
            "description": "The localized string value for the specified lang."
          }
        }
      }
    },
    "SupplementProductType": {
      "type": "string",
      "description": "The type of the supplement product. This can be used to determine which parameters are relevant for the product.",
      "enum": [
        "SEAT_RESERVATION",
        "BICYCLE",
        "DOG",
        "ANIMAL",
        "MEAL",
        "WIFI",
        "EXTRA_LUGGAGE",
        "PENALTY",
        "UPGRADE",
        "JOURNEY_EXTENSION",
        "JOURNEY_ADD_ON",
        "EVENT_ADD_ON",
        "PARKING"
      ]
    },
    "ValidityParameters": {
      "required": [
        "groupingType",
        "validityParameterRefs",
        "validityParameterType"
      ],
      "type": "object",
      "properties": {
        "groupingType": {
          "$ref": "#/$defs/GenericParameterAssignmentGroupingType"
        },
        "validityParameterType": {
          "type": "string",
          "enum": [
            "LINE",
            "ZONE",
            "ZONE_GROUP",
            "STOP_PLACE",
            "PARKING",
            "ROUTE_SECTION",
            "TARIFF_AUTHORITY",
            "OPERATOR",
            "TRANSPORT_MODE",
            "FLEXIBLE_LINE",
            "CLASS_OF_USE",
            "FACILITY",
            "SALES_CHANNEL",
            "AUTHORITY"
          ]
        },
        "validityParameterRefs": {
          "type": "array",
          "description": "List of references for the validity parameters",
          "items": {
            "pattern": "^([A-Z]{3}):([A-Za-z]*):([0-9A-Za-z_\\-]*)$",
            "type": "string",
            "description": "NeTEx reference to validity parameter"
          }
        }
      }
    },
    "VatGrpupType": {
      "type": "string",
      "description": "VAT group type. This is used to determine which VAT rate applies to a product. The VAT group type is determined by the product type and the country of sale. For example, in Norway, food products are subject to a reduced VAT rate of 15%, while other products are subject to the standard VAT rate of 25%. In this case, food products would be classified as FOOD_VAT, while other products would be classified as GENERAL_VAT.",
      "default": "TRANSPORT_AND_TICKETS_VAT",
      "enum": [
        "EXCEPTION_FROM_VAT",
        "GENERAL_VAT",
        "FOOD_VAT",
        "TRANSPORT_AND_TICKETS_VAT"
      ]
    },
    "VersionStatus": {
      "type": "string",
      "enum": [
        "DRAFT",
        "PROPOSED",
        "VERSIONED",
        "DEPRECATED"
      ]
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/entur-supplement-product-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.