openapi: 3.2.0 info: title: Entur Entitlements Required API version: 2026.10.0 description: 'Operations tagged entitlements-required 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: entitlements-required paths: /entitlements-required: parameters: - $ref: '#/components/parameters/ET-Client-Name' - $ref: '#/components/parameters/X-Correlation-Id' get: tags: - entitlements-required summary: Retrieves all entitlements required operationId: entitlements-required_getAll parameters: - name: orgId in: query description: The unique id to identify an organisation required: false style: form explode: true 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: 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/EntitlementRequired' '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: 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 post: tags: - entitlements-required summary: Create an EntitlementRequired operationId: entitlements-required_create parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/EntitlementRequired' 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: Forbidden content: application/problem+json: schema: type: string '404': description: Not Found content: application/problem+json: schema: type: string '409': description: Already registered 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 /entitlements-required/{id}/{version}: parameters: - $ref: '#/components/parameters/ET-Client-Name' - $ref: '#/components/parameters/X-Correlation-Id' get: tags: - entitlements-required summary: Retrieves EntitlementRequired for id and version operationId: entitlements-required_getById parameters: - name: id in: path description: The id to identify a EntitlementRequired required: true style: simple explode: false schema: pattern: ^([A-Z]{3}):([A-Za-z]*):([0-9A-Za-z_\-]*)$ type: string - name: version in: path description: The id for the version of the EntitlementRequired required: true style: simple explode: false schema: pattern: ^([A-Z]{3}):([A-Za-z]*):([0-9A-Za-z_\-]*)$ 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/EntitlementRequired' '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: - entitlements-required summary: Updates an existing EntitlementRequired operationId: entitlements-required_update parameters: - name: id in: path description: The id to identify a EntitlementRequired required: true style: simple explode: false schema: pattern: ^([A-Z]{3}):([A-Za-z]*):([0-9A-Za-z_\-]*)$ type: string - name: version in: path description: The id for the version of the EntitlementRequired 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/EntitlementRequired' required: true responses: '200': 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 delete: tags: - entitlements-required summary: Deletes an EntitlementRequired by id and version operationId: entitlements-required_deleteById parameters: - name: id in: path description: The id to identify an EntitlementRequired required: true style: simple explode: false schema: pattern: ^([A-Z]{3}):([A-Za-z]*):([0-9A-Za-z_\-]*)$ type: string - name: version in: path description: The id for the version of the EntitlementRequired required: true style: simple explode: false schema: pattern: ^([A-Z]{3}):([A-Za-z]*):([0-9A-Za-z_\-]*)$ type: string responses: '200': description: The resource was deleted content: application/json: schema: $ref: '#/components/schemas/BoxedUnit' '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 '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: FareScheduledStopPoint: type: object properties: stopPlaceNetexId: pattern: ^([A-Z]{3}):([A-Za-z]*):([0-9A-Za-z_\-]*)$ type: string description: Stop place Netex Id stopPointNetexId: pattern: ^([A-Z]{3}):([A-Za-z]*):([0-9A-Za-z_\-]*)$ type: string description: Stop point Netex Id description: FareScheduledStopPoint, stopPlace and stopPoint Netex Ids should point to same location VersionOfObjectRef: required: - nameOfClass - ref - version type: object properties: nameOfClass: minLength: 1 type: string description: Name of class. ref: minLength: 1 pattern: ^([A-Z]{3}):([A-Za-z]*):([0-9A-Za-z_\-]*)$ type: string description: The netex id reference to the object. version: type: string description: Version. description: Fare frame ref. ValidityCondition: required: - changed - created - id - modification - nameOfClass - status - version type: object properties: changed: type: string description: Changed datetime. readOnly: true created: type: string description: Created datetime. readOnly: true fromDate: type: string description: From Date. id: minLength: 1 pattern: ^([A-Z]{3}):([A-Za-z]*):([0-9A-Za-z_\-]*)$ type: string description: Id. examples: - NSB:ValidBetween:2018 modification: type: string description: Modification status. readOnly: true enum: - NEW - REVISE - DELETE examples: - NEW nameOfClass: type: string description: Name of class. readOnly: true examples: - ValidBetween status: type: string description: Status. readOnly: true enum: - DRAFT - PROPOSED - VERSIONED - DEPRECATED examples: - DRAFT toDate: type: string description: To Date. version: minLength: 1 pattern: ^([A-Z]{3}):([A-Za-z]*):([0-9A-Za-z_\-]*)$ type: string description: Version. examples: - NSB:Version:V1 description: A condition of the validity of the priceable object FarePrice: required: - changed - created - fareFrameRef - id - modification - nameOfClass - status type: object properties: amount: type: string description: Amount examples: - '164.0' canBeCumulative: type: boolean description: canBeCumulative. examples: - true changed: type: string description: Changed datetime. readOnly: true compatibleWithVersionRef: type: string description: Compatible with version. created: type: string description: Created datetime. readOnly: true currency: type: string description: Currency. examples: - NOK derivedFromVersionRef: type: string description: Derived from version. discountPercentageUsed: maximum: 100 minimum: -100 type: integer description: discountPercentageUsed. format: int32 examples: - 5 fareFrameRef: $ref: '#/components/schemas/VersionOfObjectRef' id: minLength: 1 type: string description: Id. examples: - NSB:FarePrice:1005TEN isAllowed: type: boolean description: isAllowed. examples: - true limitingRule: $ref: '#/components/schemas/LimitingRule' modification: type: string description: Modification status. readOnly: true enum: - NEW - REVISE - DELETE examples: - NEW name: type: array description: Name. items: $ref: '#/components/schemas/TextInLanguage' nameOfClass: type: string description: Name of class. readOnly: true examples: - FarePrice ranking: type: integer description: Ranking. format: int32 examples: - 1 rounding: $ref: '#/components/schemas/Rounding' roundingRef: $ref: '#/components/schemas/VersionOfObjectRef' status: type: string description: Status. readOnly: true enum: - DRAFT - PROPOSED - VERSIONED - DEPRECATED examples: - DRAFT vatRegisterGroup: type: string description: vatRegisterGroup. enum: - EXCEPTION_FROM_VAT - GENERAL_VAT - FOOD_VAT - TRANSPORT_AND_TICKETS_VAT examples: - TRANSPORT_AND_TICKETS_VAT version: type: string description: Version. readOnly: true examples: - NSB:Version:V1 description: A description of the price and factor for a set fare EntitlementConstraint: required: - nameOfClass type: object properties: classOfUseConstraint: type: string description: Class of use constraint enum: - ANY - SAME - SAME_OR_EQUIVALENT - DIFFERENT destinationConstraint: type: string description: Destination constraint enum: - ANY - SAME - SAME_AS_ORIGIN - SAME_AS_DESTINATION - SAME_AS_ORIGIN_OR_DESTINATION - ANY_STOP_ON_ROUTE - ANY_STOP_IN_ZONE - DIFFERENT directionConstraint: type: string description: Direction constraint enum: - ANY - SAME - OPPOSITE_DIRECTION - DIFFERENT fareScheduledStopPoints: type: array description: Fare scheduled stop points which entitlement applies items: $ref: '#/components/schemas/FareScheduledStopPoint' journeyConstraint: type: string description: Journey constraint enum: - ANY - SAME - SIMILAR - DIFFERENT nameOfClass: type: string description: Name of class readOnly: true examples: - EntitlementConstraint operatorConstraint: type: string description: Operator constraint enum: - ANY - SAME - PARTICIPATING - DIFFERENT originConstraint: type: string description: Origin constraint enum: - ANY - SAME - SAME_AS_ORIGIN - SAME_AS_DESTINATION - SAME_AS_ORIGIN_OR_DESTINATION - ANY_STOP_ON_ROUTE - ANY_STOP_IN_ZONE - DIFFERENT periodConstraint: type: string description: Period constraint enum: - ANY - SAME_PERIOD - WITHIN_SAME_PERIOD - SAME_DAY - SAME_DAY_OF_RETURN - SAME_FARE_DAY - NEXT_DAY - EQUIVALENT_DURATION - DIFFERENT routeConstraint: type: string description: Route constraint enum: - ANY - SAME - OPPOSITE_DIRECTION - DIFFERENT specificProfiles: type: array description: Specific user profiles which entitlement applies items: type: string tariffZoneConstraint: type: string description: Tariff zone constraint enum: - ANY - SAME - SAME_AS_ORIGIN - SAME_AS_DESTINATION - SAME_AS_ORIGIN_OR_DESTINATION - WITHIN - CONTAINING - EQUIVALENT - DIFFERENT typeOfProductCategoryConstraint: type: string description: Type of product category constraint enum: - ANY - SAME - SAME_OR_EQUIVALENT - DIFFERENT typeOfTravelDocumentConstraint: type: string description: Type of travel document constraint enum: - ANY - SAME - SAME_MEDIA - SAME_SMART_CARD - SAME_MOBILE_APP - DIFFERENT userConstraint: type: string description: User constraint enum: - ANYONE - SAME_PERSON - DIFFERENT_PERSON - SPECIFIC description: Entitlement Constraint. Only allowed values for now is periodConstraint.SAME_PERIOD and tariffZoneConstraint.SAME_AS_ORIGIN_OR_DESTINATION. Trying to write other values will give HTTP.BAD_REQUEST. readOnly: true LimitingRule: required: - changed - created - fareFrameRef - id - modification - nameOfClass - status type: object properties: canBeCumulative: type: boolean description: CanBeCumulative. changed: type: string description: Changed datetime. readOnly: true compatibleWithVersionRef: type: string description: Compatible with version. created: type: string description: Created datetime. readOnly: true derivedFromVersionRef: type: string description: Derived from version. description: type: array description: Description. items: $ref: '#/components/schemas/TextInLanguage' discountAsPercentage: type: number description: DiscountAsPercentage. format: float discountAsValue: type: number description: DiscountAsValue. format: float fareFrameRef: $ref: '#/components/schemas/VersionOfObjectRef' id: minLength: 1 pattern: ^([A-Z]{3}):([A-Za-z]*):([0-9A-Za-z_\-]*)$ type: string description: Id. maximumPrice: type: string description: MaximumPrice. examples: - '164.0' maximumPriceAsPercentage: type: number description: MaximumPriceAsPercentage. format: double minimumLimitPrice: type: string description: MinimumLimitPrice. examples: - '164.0' minimumPrice: type: string description: MinimumPrice. examples: - '164.0' modification: type: string description: Modification status. readOnly: true enum: - NEW - REVISE - DELETE examples: - NEW name: type: array description: Name. items: $ref: '#/components/schemas/TextInLanguage' nameOfClass: type: string description: Name of class. readOnly: true examples: - LimitingRule status: type: string description: Status. readOnly: true enum: - DRAFT - PROPOSED - VERSIONED - DEPRECATED examples: - DRAFT version: minLength: 1 pattern: ^([A-Z]{3}):([A-Za-z]*):([0-9A-Za-z_\-]*)$ type: string description: Version. examples: - NSB:Version:V1 description: A LimitingRule EntitlementRequired: required: - changed - created - description - fareFrameRef - id - modification - name - nameOfClass - status - version type: object properties: changed: type: string description: Changed datetime readOnly: true created: type: string description: Created datetime readOnly: true description: type: array description: Description represented in different languages. Language codes are ISO-639 items: $ref: '#/components/schemas/TextInLanguage' entitlementConstraint: $ref: '#/components/schemas/EntitlementConstraint' fareFrameRef: $ref: '#/components/schemas/VersionOfObjectRef' id: minLength: 1 pattern: ^([A-Z]{3}):([A-Za-z]*):([0-9A-Za-z_\-]*)$ type: string description: Id examples: - ENT:EntitlementRequired:SingleTicket minimumQualificationPeriod: type: string description: Minimum period that required product shall be held in order to be eligible. Represented as a string formatted according to ISO-8601 examples: - PT1H modification: type: string description: Modification status readOnly: true enum: - NEW - REVISE - DELETE examples: - NEW name: type: array description: The name of the entitlement required represented in different languages. Language codes are ISO-639 items: $ref: '#/components/schemas/TextInLanguage' nameOfClass: type: string description: Name of class readOnly: true examples: - EntitlementRequired organisationId: type: string description: Organisation related to the userProfile prices: type: array description: Fare prices for the entitlement required. items: $ref: '#/components/schemas/FarePrice' serviceAccessRightNetexId: type: string description: Reference to the serviceAccessRight required. examples: - ENT:PreassignedFareProduct:SingleTicket status: type: string description: Status readOnly: true enum: - DRAFT - PROPOSED - VERSIONED - DEPRECATED examples: - DRAFT typeOfUsageParameter: type: string description: typeOfUsageParameter. examples: - ENT:TypeOfUsageParameter:OpenSeating validityConditions: type: array description: Pricing rule reference. items: $ref: '#/components/schemas/ValidityCondition' version: minLength: 1 pattern: ^([A-Z]{3}):([A-Za-z]*):([0-9A-Za-z_\-]*)$ type: string description: Version examples: - ENT:Version:ER-SingleTicket-1 description: Entitlement Required. 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. BoxedUnit: type: object Rounding: required: - changed - created - fareFrameRef - id - modification - nameOfClass - roundingMethod - status - version type: object properties: changed: type: string description: Changed datetime. readOnly: true compatibleWithVersionRef: type: string description: Compatible with version. created: type: string description: Created datetime. readOnly: true derivedFromVersionRef: type: string description: Derived from version. description: type: array description: Description. items: $ref: '#/components/schemas/TextInLanguage' fareFrameRef: $ref: '#/components/schemas/VersionOfObjectRef' id: minLength: 1 pattern: ^([A-Z]{3}):([A-Za-z]*):([0-9A-Za-z_\-]*)$ type: string description: Id. examples: - NSB:Rounding:Ordinary modification: type: string description: Modification status. readOnly: true enum: - NEW - REVISE - DELETE examples: - NEW name: type: array description: Name. items: $ref: '#/components/schemas/TextInLanguage' nameOfClass: type: string description: Name of class. readOnly: true examples: - Rounding roundingMethod: type: string description: Type of rounding. enum: - NONE - DOWN - UP - SPLIT - STEP_TABLE - FIVE - NINE - TEN - FORTY_NINE roundingModulus: type: number description: Amount by which rounding is to be quantised, i.e. results should be quantised to nearest whole multiple of this value. format: double status: type: string description: Rounding status. readOnly: true enum: - DRAFT - PROPOSED - VERSIONED - DEPRECATED examples: - DRAFT version: minLength: 1 pattern: ^([A-Z]{3}):([A-Za-z]*):([0-9A-Za-z_\-]*)$ type: string description: Rounding version. examples: - NSB:Version:V1 description: A description of how prices are rounded post calculation deprecated: true 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