openapi: 3.2.0 info: title: Entur Versions API version: 2026.10.0 description: 'Operations tagged versions across 2 of this provider''s published API definitions: entur-products-openapi.json, entur-products-openapi.yml. Each path carries the servers of the definition it was published in.' servers: - url: https://api.entur.io/products description: Production environment - url: https://api.staging.entur.io/products description: Staging environment - url: https://api.dev.entur.io/products description: Development environment security: - jwt: [] tags: - name: Versions paths: /versions: parameters: - $ref: '#/components/parameters/ET-Client-Name' - $ref: '#/components/parameters/X-Correlation-Id' post: tags: - Versions summary: Create version operationId: versions_create parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/Version' required: true responses: '201': description: Entity created successfully '400': description: Validation errors content: application/problem+json: schema: type: string '401': description: Unauthorized content: application/problem+json: schema: type: string '403': description: Authorization failed content: application/problem+json: schema: type: string '404': description: Not Found content: application/problem+json: schema: type: string '409': description: Conflict content: application/problem+json: schema: type: string '500': description: Internal server error content: application/problem+json: schema: type: string security: - basic_auth: [] x-entur-permissions: value: product-api-access:endre servers: - url: https://api.entur.io/products description: Production environment - url: https://api.staging.entur.io/products description: Staging environment - url: https://api.dev.entur.io/products description: Development environment /versions/batch: parameters: - $ref: '#/components/parameters/ET-Client-Name' - $ref: '#/components/parameters/X-Correlation-Id' post: tags: - Versions summary: Get all versions operationId: versions_getVersionsByObjectIds parameters: - name: languageCode in: query description: The language code from ISO-639-3 required: false style: form explode: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/VersionBatchRetrieve' required: true responses: '200': description: Returns the info content: application/json: schema: type: array items: $ref: '#/components/schemas/Version' '400': description: Bad Request content: application/problem+json: schema: type: string '401': description: Unauthorized content: application/problem+json: schema: type: string '403': description: Authorization failed content: application/problem+json: schema: type: string '404': description: Resource not found content: application/problem+json: schema: type: string '409': description: Conflict content: application/problem+json: schema: type: string '500': description: Internal server error content: application/problem+json: schema: type: string security: - basic_auth: [] x-entur-permissions: value: product-api-access:les servers: - url: https://api.entur.io/products description: Production environment - url: https://api.staging.entur.io/products description: Staging environment - url: https://api.dev.entur.io/products description: Development environment /versions/element-type/{nameOfClass}: parameters: - $ref: '#/components/parameters/ET-Client-Name' - $ref: '#/components/parameters/X-Correlation-Id' get: tags: - Versions summary: Retrieves metadata of specific element type by class name operationId: versions_getMinimalVersionInfoByClassOfName parameters: - name: nameOfClass in: path description: The unique class name to identify for an elementType required: true style: simple explode: false schema: type: string - name: fareFrameId in: query description: The unique id to identify a dataset to an organisation required: false style: form explode: true schema: type: string - name: statusFilter in: query description: 'Filter by version status. Allowed values: DRAFT, PROPOSED, VERSIONED, DEPRECATED, ALL. Defaults to ALL if not specified.' required: false style: form explode: true schema: type: array items: type: string examples: default: value: - DRAFT - PROPOSED - VERSIONED - name: If-None-Match in: header description: Used to make conditional requests. It allows the client to provide an ETag value, and the server will process the request only if the ETag does not match the current version of the resource. required: false style: simple explode: false schema: type: string responses: '200': description: Returns the info content: application/json: schema: type: array items: $ref: '#/components/schemas/MininmalVersionInfo' '304': description: Not Modified '400': description: Bad Request content: application/problem+json: schema: type: string '401': description: Unauthorized content: application/problem+json: schema: type: string '403': description: Forbidden content: application/problem+json: schema: type: string '404': description: Resource not found content: application/problem+json: schema: type: string '500': description: Internal server error content: application/problem+json: schema: type: string security: - basic_auth: [] x-entur-permissions: value: product-api-access:les servers: - url: https://api.entur.io/products description: Production environment - url: https://api.staging.entur.io/products description: Staging environment - url: https://api.dev.entur.io/products description: Development environment /versions/product-element-type/{nameOfClass}: parameters: - $ref: '#/components/parameters/ET-Client-Name' - $ref: '#/components/parameters/X-Correlation-Id' get: tags: - Versions summary: Retrieves fare product metadata by class name, with optional typeOfFareProduct… operationId: versions_getMinimalProductVersionInfoByClassOfName parameters: - name: nameOfClass in: path description: The unique class name to identify for a fare product element type required: true style: simple explode: false schema: type: string - name: fareFrameId in: query description: The unique id to identify a dataset to an organisation required: false style: form explode: true schema: type: string - name: excludeTypeOfFareProductId in: query description: 'A typeOfFareProduct netex ID whose products should be excluded from the result (e.g. ENT:TypeOfFareProduct:PersonalisationProgram). NOTE: Far from all products has this datatype set' required: false style: form explode: true schema: type: string - name: statusFilter in: query description: 'Filter by version status. Allowed values: DRAFT, PROPOSED, VERSIONED, DEPRECATED, ALL. Defaults to ALL if not specified.' required: false style: form explode: true schema: type: array items: type: string examples: default: value: - DRAFT - PROPOSED - VERSIONED - name: If-None-Match in: header description: Used to make conditional requests. It allows the client to provide an ETag value, and the server will process the request only if the ETag does not match the current version of the resource. required: false style: simple explode: false schema: type: string responses: '200': description: Returns the info content: application/json: schema: type: array items: $ref: '#/components/schemas/MininmalVersionInfo' '304': description: Not Modified '400': description: Bad Request content: application/problem+json: schema: type: string '401': description: Unauthorized content: application/problem+json: schema: type: string '403': description: Forbidden content: application/problem+json: schema: type: string '404': description: Resource not found content: application/problem+json: schema: type: string '500': description: Internal server error content: application/problem+json: schema: type: string security: - basic_auth: [] x-entur-permissions: value: product-api-access:les servers: - url: https://api.entur.io/products description: Production environment - url: https://api.staging.entur.io/products description: Staging environment - url: https://api.dev.entur.io/products description: Development environment /versions/{id}: parameters: - $ref: '#/components/parameters/ET-Client-Name' - $ref: '#/components/parameters/X-Correlation-Id' get: tags: - Versions summary: Get version for netexid operationId: versions_getById parameters: - name: id in: path description: The netex id to identify a version entry required: true style: simple explode: false schema: pattern: ^([A-Z]{3}):([A-Za-z]*):([0-9A-Za-z_\-]*)$ type: string - name: languageCode in: query description: The language code from ISO-639-3 required: false style: form explode: true schema: type: string - name: If-None-Match in: header description: Used to make conditional requests. It allows the client to provide an ETag value, and the server will process the request only if the ETag does not match the current version of the resource. required: false style: simple explode: false schema: type: string responses: '200': description: Returns the info content: application/json: schema: $ref: '#/components/schemas/Version' '304': description: Not Modified '400': description: Bad Request content: application/problem+json: schema: type: string '401': description: Unauthorized content: application/problem+json: schema: type: string '403': description: Authorization failed content: application/problem+json: schema: type: string '404': description: Resource not found content: application/problem+json: schema: type: string '500': description: Internal server error content: application/problem+json: schema: type: string security: - basic_auth: [] x-entur-permissions: value: product-api-access:les put: tags: - Versions summary: Set the status of a product version by id operationId: versions_updateVersionStatus parameters: - name: id in: path description: The unique id to identify a version of a product required: true style: simple explode: false schema: pattern: ^([A-Z]{3}):([A-Za-z]*):([0-9A-Za-z_\-]*)$ type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Version' required: true responses: '204': description: Entity updated successfully '400': description: Validation errors content: application/problem+json: schema: type: string '401': description: Missing Authorization content: application/problem+json: schema: type: string '403': description: Authorization failed content: application/problem+json: schema: type: string '404': description: Resource not found content: application/problem+json: schema: type: string '409': description: Conflict content: application/problem+json: schema: type: string '500': description: Internal server error content: application/problem+json: schema: type: string security: - basic_auth: [] x-entur-permissions: value: product-api-access:endre servers: - url: https://api.entur.io/products description: Production environment - url: https://api.staging.entur.io/products description: Staging environment - url: https://api.dev.entur.io/products description: Development environment components: schemas: Version: required: - changed - created - id - modification - nameOfClass - status - versionType type: object properties: changed: type: string description: Changed datetime readOnly: true created: type: string description: Created datetime readOnly: true description: type: string description: Description. endDate: type: string description: EndDate format: date-time id: minLength: 1 pattern: ^([A-Z]{3}):([A-Za-z]*):([0-9A-Za-z_\-]*)$ type: string description: Id. examples: - RUT:Version:RuterSingleTicket modification: type: string description: Modification status enum: - NEW - REVISE - DELETE examples: - NEW nameOfClass: type: string description: Name of class readOnly: true examples: - Version startDate: type: string description: StartDate format: date-time status: type: string description: Status readOnly: true default: DRAFT enum: - DRAFT - PROPOSED - VERSIONED - DEPRECATED examples: - DRAFT versionType: type: string description: VersionType. enum: - BASELINE - POINT description: A case class for versioning. VersionBatchRetrieve: required: - entityIds type: object properties: entityIds: type: array description: entityIds items: type: string examples: - - ENT:PreassignedFareProduct:abc123 - ENT:PreassignedFareProduct:123abc description: A case class for versioning. TextInLanguage: required: - lang - value type: object properties: lang: minLength: 1 type: string description: Language code. examples: - nob value: minLength: 1 type: string description: The text. description: Text in a specific language. MininmalVersionInfo: required: - changed - created - id - nameOfClass - status - version type: object properties: changed: type: string description: Changed datetime. readOnly: true created: type: string description: Created datetime. readOnly: true endDate: type: string description: EndDate format: date-time readOnly: true id: type: string description: Id. readOnly: true examples: - NSB:ElementTypeMetadata:Test name: type: array description: Name represented in different languages. Language codes are ISO-639. readOnly: true items: $ref: '#/components/schemas/TextInLanguage' nameOfClass: type: string description: Name of class. readOnly: true examples: - ElementTypeMetadata startDate: type: string description: StartDate format: date-time readOnly: true status: type: string description: Status readOnly: true enum: - DRAFT - PROPOSED - VERSIONED - DEPRECATED examples: - DRAFT version: type: string description: Version readOnly: true examples: - NSB:Version:V1 description: MininmalVersionInfo parameters: X-Correlation-Id: name: X-Correlation-Id in: header description: Correlation id required: false style: simple explode: false schema: type: string ET-Client-Name: name: ET-Client-Name in: header description: 'Entur Client Header. It is required that all consumers identify themselves by using this header. Entur will deploy strict rate-limiting policies on API-consumers who do not identify with a header and reserves the right to block unidentified consumers. The structure of ET-Client-Name should be: `-`.' required: false style: simple explode: false schema: type: string securitySchemes: jwt: type: http scheme: bearer bearerFormat: JWT x-refined-from: - entur-products-openapi.json - entur-products-openapi.yml