openapi: 3.1.0
info:
  title: Wunder Points-Of-Interest Operations API
  description: |
    Manage Points of Interest (POIs) and POI Categories used by Wunder Mobility products.

    This API exposes operations to list, create, update and delete POIs and Categories.

    Terminology:
    - POI (Point of Interest): A location of particular interest that can be displayed to end users.
    - Category: The classification a POI belongs to (e.g. PARKING, CHARGING_STATION).
  version: 1.0.0
  contact:
    name: Wunder Mobility GmbH
    url: 'https://wundermobility.com'
    email: info@wundermobility.com
servers:
  - url: 'https://{environment}.api.gourban.services/v1/{tenant}/points-of-interest'
    description: Wunder Points-Of-Interest Operations API
    variables:
      environment:
        default: go
        enum:
          - go
          - go-staging
      tenant:
        default: demo
        description: Tenant identifier of your system. Usually 8 characters.
tags:
  - name: Points of Interests
    description: Points of Interests (POI) endpoints
  - name: POI Categories
    description: POI Categories endpoints
paths:
  /pois:
    get:
      summary: GET /pois
      description: Returns a paginated list of POIs.
      operationId: getPois
      responses:
        '200':
          description: A page of POIs.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PoiResponse'
      tags:
        - Points of Interests
    post:
      summary: POST /pois
      description: Create a new Point of Interest (POI).
      operationId: createPoi
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PoiCreate'
      responses:
        '201':
          description: POI created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PoiResponse'
      tags:
        - Points of Interests
  '/pois/{poiId}':
    get:
      summary: GET /pois/{poiId}
      description: Retrieve a Point of Interest by its unique identifier.
      operationId: getPoiById
      parameters:
        - name: poiId
          in: path
          description: Unique identifier of the POI
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: The requested POI.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PoiResponse'
      tags:
        - Points of Interests
    delete:
      summary: 'DELETE /pois/{poiId}'
      description: Permanently remove a POI by its identifier.
      operationId: deletePoiById
      parameters:
        - name: poiId
          in: path
          description: Unique identifier of the POI
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '204':
          description: No Content
      tags:
        - Points of Interests
    put:
      summary: 'PUT /pois/{poiId}'
      description: |
        Fully replace a POI by its identifier. All required fields must be provided.
      operationId: updatePoiById
      parameters:
        - name: poiId
          in: path
          description: Unique identifier of the POI
          required: true
          schema:
            type: integer
            format: int64
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PoiFullUpdate'
      responses:
        '200':
          description: The updated POI.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PoiResponse'
      tags:
        - Points of Interests
    patch:
      summary: 'PATCH /pois/{poiId}'
      operationId: partiallyUpdatePoiById
      description: Update only the provided fields of a POI.
      parameters:
        - name: poiId
          in: path
          description: Unique identifier of the POI
          required: true
          schema:
            type: integer
            format: int64
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PoiPartialUpdate'
      responses:
        '200':
          description: The updated POI.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PoiResponse'
      tags:
        - Points of Interests
  /categories:
    get:
      summary: GET /categories
      description: Returns a paginated list of POI categories the current tenant can access.
      operationId: getPoiCategories
      parameters:
        - name: searchText
          in: query
          description: Free-text filter that matches the category id or name (case-insensitive).
          required: false
          schema:
            type: string
      responses:
        '200':
          description: A page of categories.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PoiCategoryResponse'
      tags:
        - POI Categories
    post:
      summary: POST /categories
      description: Create a new category to classify POIs.
      operationId: createPoiCategory
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PoiCategoryCreation'
      responses:
        '201':
          description: Category created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PoiCategoryResponse'
      tags:
        - POI Categories
  '/categories/{poiCategoryId}':
    get:
      summary: 'GET /categories/{poiCategoryId}'
      description: Retrieve a single POI Category by its unique identifier.
      operationId: getPoiCategoryById
      parameters:
        - name: poiCategoryId
          in: path
          description: Unique identifier of the POI Category
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: The requested category.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PoiCategoryResponse'
      tags:
        - POI Categories
    delete:
      summary: 'DELETE /categories/{poiCategoryId}'
      description: Permanently remove a POI Category by its identifier.
      operationId: deletePoiCategoryById
      parameters:
        - name: poiCategoryId
          in: path
          description: Unique identifier of the POI Category
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '204':
          description: No Content
      tags:
        - POI Categories
    put:
      summary: 'PUT /categories/{poiCategoryId}'
      description: |
        Fully replace a POI Category by its identifier. All required fields must be provided.
      operationId: updatePoiCategoryById
      parameters:
        - name: poiCategoryId
          in: path
          description: Unique identifier of the POI Category
          required: true
          schema:
            type: integer
            format: int64
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PoiCategoryFullUpdate'
      responses:
        '200':
          description: The updated category.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PoiCategoryResponse'
      tags:
        - POI Categories
    patch:
      summary: 'PATCH /categories/{poiCategoryId}'
      operationId: partiallyUpdatePoiCategoryById
      description: Update only the provided fields of a POI Category.
      parameters:
        - name: poiCategoryId
          in: path
          description: Unique identifier of the POI Category
          required: true
          schema:
            type: integer
            format: int64
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PoiCategoryPartialUpdate'
      responses:
        '200':
          description: The updated category.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PoiCategoryResponse'
      tags:
        - POI Categories
components:
  schemas:
    Point:
      type: object
      description: Describes a single point on a coordinate system
      properties:
        type:
          type: string
          default: Point
          description: The type is always set to 'Point'
        coordinates:
          type: array
          description: 'Contains two values: `[lng,lat]`'
          items:
            type: number
            format: double
    OpeningTimeEntry:
      type: object
      properties:
        day:
          type: string
          enum:
            - MONDAY
            - TUESDAY
            - WEDNESDAY
            - THURSDAY
            - FRIDAY
            - SATURDAY
            - SUNDAY
        slotNumber:
          type: integer
          format: int32
        state:
          type: string
          enum:
            - OPEN
            - CLOSED
        time:
          type: string
          format: partial-time
        prettyString:
          type: string
    OpeningInformation:
      type: object
      properties:
        openingTimeEntries:
          type: array
          items:
            $ref: '#/components/schemas/OpeningTimeEntry'
    JsonImage:
      type: object
      properties:
        name:
          type: string
        url:
          type: string
          format: uri
        timestamp:
          type: string
          format: date-time
    PoiType:
      type: string
      enum:
        - PARKING
        - DOCKING_STATION
        - CHARGING_STATION
        - FUEL_STATION
        - TOURISTIC_SPOT
        - BUSINESS
    PoiCategoryResponse:
      type: object
      description: A POI Category as stored by the system.
      properties:
        id:
          type: integer
          format: int64
          description: Unique identifier of the category
        type:
          $ref: '#/components/schemas/PoiType'
        name:
          type: string
          description: Human-readable category name
        description:
          type: string
          description: Optional free-text description
        displayOnRental:
          type: boolean
          description: Whether POIs in this category should be shown during rentals
        enabled:
          type: boolean
          description: Whether the category is active and usable
        mapZoomLevel:
          type: integer
          format: int32
          description: Preferred map zoom level when focusing this category
        sizeFactor:
          type: integer
          format: int32
          description: Size multiplier for map markers of this category
        useCustomIcon:
          type: boolean
          description: Whether a custom icon is used for this category
        images:
          type: object
          description: Images to be displayed for this category on the user app.
          properties:
            icon:
              type: object
              description: Icon to be displayed unless `useCustomIcon` is set to true, then `mainImage` is used.
              properties:
                name:
                  type: string
                  enum:
                    - "1": "Shopping 1"
                    - "2": "Shopping 2"
                    - "3": "Shopping 3"
                    - "4": "Shopping 4"
                    - "5": "Food and drinks 1"
                    - "6": "Food and drinks 2"
                    - "7": "Food and drinks 3"
                    - "8": "Touristic spots 1"
                    - "9": "Touristic spots 2"
                    - "10": "Touristic spots 3"
                    - "11": "Touristic spots 4"
                    - "12": "Touristic spots 5"
                    - "13": "Parking 1"
                    - "14": "Parking 2"
                    - "15": "Parking 3"
                    - "16": "Parking 4"
            mainImage:
              description: Image to be displayed if `useCustomIcon` is set to true
              $ref: '#/components/schemas/JsonImage'
        defaultTranslationKeys:
          type: object
          description: |
            Default i18n translation keys for this category.
            
            Translation keys are to be maintained via the Translation API.
          properties:
            name:
              type: string
              description: i18n translation keys for the POI name
            description:
              type: string
              description: i18n translation keys for the POI description
        poiCount:
          type: integer
          format: int64
          description: Number of POIs currently assigned to this category
    PoiCategoryCreation:
      type: object
      description: Payload to create a new POI Category.
      properties:
        type:
          $ref: '#/components/schemas/PoiType'
        name:
          type: string
          description: Category name
        description:
          type: string
          description: Optional free-text description
        displayOnRental:
          type: boolean
          description: Whether POIs in this category should be shown during rentals
        enabled:
          type: boolean
          description: Whether the category is active and usable
        mapZoomLevel:
          type: integer
          format: int32
          description: Preferred map zoom level when focusing this category
        sizeFactor:
          type: integer
          format: int32
          description: Size multiplier for map markers of this category
        useCustomIcon:
          type: boolean
          description: Whether a custom icon is used for this category
        images:
          type: object
          description: Images to be displayed for this category on the user app.
          properties:
            icon:
              type: object
              description: Icon to be displayed unless `useCustomIcon` is set to true, then `mainImage` is used.
              properties:
                name:
                  type: string
                  enum:
                    - "1": "Shopping 1"
                    - "2": "Shopping 2"
                    - "3": "Shopping 3"
                    - "4": "Shopping 4"
                    - "5": "Food and drinks 1"
                    - "6": "Food and drinks 2"
                    - "7": "Food and drinks 3"
                    - "8": "Touristic spots 1"
                    - "9": "Touristic spots 2"
                    - "10": "Touristic spots 3"
                    - "11": "Touristic spots 4"
                    - "12": "Touristic spots 5"
                    - "13": "Parking 1"
                    - "14": "Parking 2"
                    - "15": "Parking 3"
                    - "16": "Parking 4"
            mainImage:
              description: Image to be displayed if `useCustomIcon` is set to true
              $ref: '#/components/schemas/JsonImage'
        defaultTranslationKeys:
          type: object
          description: |
            Default i18n translation keys for this category.
            
            Translation keys are to be maintained via the Translation API.
          properties:
            name:
              type: string
              description: i18n translation keys for the POI name
            description:
              type: string
              description: i18n translation keys for the POI description
      required:
        - type
        - name
        - displayOnRental
        - enabled
    PoiCategoryFullUpdate:
      type: object
      description: Payload to fully update a POI Category.
      properties:
        type:
          $ref: '#/components/schemas/PoiType'
        name:
          type: string
          description: Category name
        description:
          type: string
          description: Optional free-text description
        displayOnRental:
          type: boolean
          description: Whether POIs in this category should be shown during rentals
        enabled:
          type: boolean
          description: Whether the category is active and usable
        mapZoomLevel:
          type: integer
          format: int32
          description: Preferred map zoom level when focusing this category
        sizeFactor:
          type: integer
          format: int32
          description: Size multiplier for map markers of this category
        useCustomIcon:
          type: boolean
          description: Whether a custom icon is used for this category
        images:
          type: object
          description: Images to be displayed for this category on the user app.
          properties:
            icon:
              type: object
              description: Icon to be displayed unless `useCustomIcon` is set to true, then `mainImage` is used.
              properties:
                name:
                  type: string
                  enum:
                    - "1": "Shopping 1"
                    - "2": "Shopping 2"
                    - "3": "Shopping 3"
                    - "4": "Shopping 4"
                    - "5": "Food and drinks 1"
                    - "6": "Food and drinks 2"
                    - "7": "Food and drinks 3"
                    - "8": "Touristic spots 1"
                    - "9": "Touristic spots 2"
                    - "10": "Touristic spots 3"
                    - "11": "Touristic spots 4"
                    - "12": "Touristic spots 5"
                    - "13": "Parking 1"
                    - "14": "Parking 2"
                    - "15": "Parking 3"
                    - "16": "Parking 4"
            mainImage:
              description: Image to be displayed if `useCustomIcon` is set to true
              $ref: '#/components/schemas/JsonImage'
        defaultTranslationKeys:
          type: object
          description: |
            Default i18n translation keys for this category.
            
            Translation keys are to be maintained via the Translation API.
          properties:
            name:
              type: string
              description: i18n translation keys for the POI name
            description:
              type: string
              description: i18n translation keys for the POI description
      required:
        - type
        - name
        - displayOnRental
        - enabled
    PoiCategoryPartialUpdate:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/PoiType'
        name:
          type: string
          description: Category name
        description:
          type: string
          description: Optional free-text description
        displayOnRental:
          type: boolean
          description: Whether POIs in this category should be shown during rentals
        enabled:
          type: boolean
          description: Whether the category is active and usable
        mapZoomLevel:
          type: integer
          format: int32
          description: Preferred map zoom level when focusing this category
        sizeFactor:
          type: integer
          format: int32
          description: Size multiplier for map markers of this category
        useCustomIcon:
          type: boolean
          description: Whether a custom icon is used for this category
        images:
          type: object
          description: Images to be displayed for this category on the user app.
          properties:
            icon:
              type: object
              description: Icon to be displayed unless `useCustomIcon` is set to true, then `mainImage` is used.
              properties:
                name:
                  type: string
                  enum:
                   - "1": "Shopping 1"
                   - "2": "Shopping 2"
                   - "3": "Shopping 3"
                   - "4": "Shopping 4"
                   - "5": "Food and drinks 1"
                   - "6": "Food and drinks 2"
                   - "7": "Food and drinks 3"
                   - "8": "Touristic spots 1"
                   - "9": "Touristic spots 2"
                   - "10": "Touristic spots 3"
                   - "11": "Touristic spots 4"
                   - "12": "Touristic spots 5"
                   - "13": "Parking 1"
                   - "14": "Parking 2"
                   - "15": "Parking 3"
                   - "16": "Parking 4"
            mainImage:
              description: Image to be displayed if `useCustomIcon` is set to true
              $ref: '#/components/schemas/JsonImage'
        defaultTranslationKeys:
          type: object
          description: Default i18n translation keys for this category
          properties:
            name:
              type: string
              description: i18n translation keys for the POI name
            description:
              type: string
              description: i18n translation keys for the POI description
    PoiResponse:
      type: object
      description: A POI as stored by the system.
      properties:
        id:
          type: integer
          format: int64
          description: Unique identifier of the POI
        categoryId:
          type: integer
          format: int64
          description: Identifier of the assigned POI category
        branchId:
          type: string
          description: Optional branch identifier this POI belongs to
        name:
          type: string
          description: Human-readable POI name
        description:
          type: string
          description: Optional free-text description
        position:
          $ref: '#/components/schemas/Point'
        address:
          type: string
          description: Display address of the POI
        url:
          type: string
          format: uri
          description: External URL with more information
        city:
          type: string
          description: City of the POI
        phoneNumber:
          type: string
          description: Contact phone number
        displayOnRental:
          type: boolean
          description: Whether to display this POI during rentals
        enabled:
          type: boolean
          description: Whether this POI is active and visible
        useCustomIcon:
          type: boolean
          description: Whether a custom icon is used for this POI
        mapZoomLevel:
          type: integer
          format: int32
          description: Preferred map zoom level when focusing this POI
        sizeFactor:
          type: integer
          format: int32
          description: Size multiplier for the map marker
        category:
          $ref: '#/components/schemas/PoiCategoryResponse'
        openingInformation:
          $ref: '#/components/schemas/OpeningInformation'
        images:
          type: object
          description: |
            Images to be displayed on the user app.
            
            Additional properties and images that should be displayed on the user app start with `detailsImage_`.
          properties:
            icon:
              type: object
              description: Icon to be displayed unless `useCustomIcon` is set to true, then `mainImage` is used.
              properties:
                name:
                  type: string
                  enum:
                    - "1": "Shopping 1"
                    - "2": "Shopping 2"
                    - "3": "Shopping 3"
                    - "4": "Shopping 4"
                    - "5": "Food and drinks 1"
                    - "6": "Food and drinks 2"
                    - "7": "Food and drinks 3"
                    - "8": "Touristic spots 1"
                    - "9": "Touristic spots 2"
                    - "10": "Touristic spots 3"
                    - "11": "Touristic spots 4"
                    - "12": "Touristic spots 5"
                    - "13": "Parking 1"
                    - "14": "Parking 2"
                    - "15": "Parking 3"
                    - "16": "Parking 4"
            mainImage:
              description: Image to be displayed if `useCustomIcon` is set to true
              $ref: '#/components/schemas/JsonImage'
          additionalProperties:
            $ref: '#/components/schemas/JsonImage'
        translationKeys:
          type: object
          description: |
            Default i18n translation keys for this category.
            
            Translation keys are to be maintained via the Translation API.
          properties:
            name:
              type: string
              description: i18n translation keys for the POI name
            description:
              type: string
              description: i18n translation keys for the POI description
    PoiCreate:
      type: object
      description: Payload to create a new POI.
      properties:
        categoryId:
          type: integer
          format: int64
          description: Identifier of the POI category to assign
        branchId:
          type: string
          description: Optional branch identifier this POI belongs to
        name:
          type: string
          description: POI name
        description:
          type: string
          description: Optional free-text description
        position:
          $ref: '#/components/schemas/Point'
        address:
          type: string
          description: Display address of the POI
        url:
          type: string
          format: uri
          description: External URL with more information
        city:
          type: string
          description: City of the POI
        phoneNumber:
          type: string
          description: Contact phone number
        displayOnRental:
          type: boolean
          description: Whether to display this POI during rentals
        enabled:
          type: boolean
          description: Whether this POI is active and visible
        useCustomIcon:
          type: boolean
          description: Whether a custom icon is used for this POI
        mapZoomLevel:
          type: integer
          format: int32
          description: Preferred map zoom level when focusing this POI
        sizeFactor:
          type: integer
          format: int32
          description: Size multiplier for the map marker
        openingInformation:
          $ref: '#/components/schemas/OpeningInformation'
        images:
          type: object
          description: |
            Images to be displayed on the user app.
            
            Additional properties and images that should be displayed on the user app must start with `detailsImage_`.
          properties:
            icon:
              type: object
              description: Icon to be displayed unless `useCustomIcon` is set to true, then `mainImage` is used.
              properties:
                name:
                  type: string
                  enum:
                    - "1": "Shopping 1"
                    - "2": "Shopping 2"
                    - "3": "Shopping 3"
                    - "4": "Shopping 4"
                    - "5": "Food and drinks 1"
                    - "6": "Food and drinks 2"
                    - "7": "Food and drinks 3"
                    - "8": "Touristic spots 1"
                    - "9": "Touristic spots 2"
                    - "10": "Touristic spots 3"
                    - "11": "Touristic spots 4"
                    - "12": "Touristic spots 5"
                    - "13": "Parking 1"
                    - "14": "Parking 2"
                    - "15": "Parking 3"
                    - "16": "Parking 4"
            mainImage:
              description: Image to be displayed if `useCustomIcon` is set to true
              $ref: '#/components/schemas/JsonImage'
          additionalProperties:
            $ref: '#/components/schemas/JsonImage'
        translationKeys:
          type: object
          description: |
            Default i18n translation keys for this category.
            
            Translation keys are to be maintained via the Translation API.
          properties:
            name:
              type: string
              description: i18n translation keys for the POI name
            description:
              type: string
              description: i18n translation keys for the POI description
      required:
        - categoryId
        - name
        - position
        - address
    PoiFullUpdate:
      type: object
      description: Payload to fully update (replace) an existing POI.
      properties:
        categoryId:
          type: integer
          format: int64
          description: Identifier of the POI category to assign
        branchId:
          type: string
          description: Optional branch identifier this POI belongs to
        name:
          type: string
          description: POI name
        description:
          type: string
          description: Optional free-text description
        position:
          $ref: '#/components/schemas/Point'
        address:
          type: string
          description: Display address of the POI
        url:
          type: string
          format: uri
          description: External URL with more information
        city:
          type: string
          description: City of the POI
        phoneNumber:
          type: string
          description: Contact phone number
        displayOnRental:
          type: boolean
          description: Whether to display this POI during rentals
        enabled:
          type: boolean
          description: Whether this POI is active and visible
        useCustomIcon:
          type: boolean
          description: Whether a custom icon is used for this POI
        mapZoomLevel:
          type: integer
          format: int32
          description: Preferred map zoom level when focusing this POI
        sizeFactor:
          type: integer
          format: int32
          description: Size multiplier for the map marker
        openingInformation:
          $ref: '#/components/schemas/OpeningInformation'
        images:
          type: object
          description: |
            Images to be displayed on the user app.
            
            Additional properties and images that should be displayed on the user app must start with `detailsImage_`.
          properties:
            icon:
              type: object
              description: Icon to be displayed unless `useCustomIcon` is set to true, then `mainImage` is used.
              properties:
                name:
                  type: string
                  enum:
                    - "1": "Shopping 1"
                    - "2": "Shopping 2"
                    - "3": "Shopping 3"
                    - "4": "Shopping 4"
                    - "5": "Food and drinks 1"
                    - "6": "Food and drinks 2"
                    - "7": "Food and drinks 3"
                    - "8": "Touristic spots 1"
                    - "9": "Touristic spots 2"
                    - "10": "Touristic spots 3"
                    - "11": "Touristic spots 4"
                    - "12": "Touristic spots 5"
                    - "13": "Parking 1"
                    - "14": "Parking 2"
                    - "15": "Parking 3"
                    - "16": "Parking 4"
            mainImage:
              description: Image to be displayed if `useCustomIcon` is set to true
              $ref: '#/components/schemas/JsonImage'
          additionalProperties:
            $ref: '#/components/schemas/JsonImage'
        translationKeys:
          type: object
          description: |
            Default i18n translation keys for this category.
            
            Translation keys are to be maintained via the Translation API.
          properties:
            name:
              type: string
              description: i18n translation keys for the POI name
            description:
              type: string
              description: i18n translation keys for the POI description
      required:
        - categoryId
        - name
        - position
        - address
    PoiPartialUpdate:
      type: object
      description: Payload to partially update an existing POI (only provided fields are modified).
      properties:
        categoryId:
          type: integer
          format: int64
          description: Identifier of the POI category to assign
        branchId:
          type: string
          description: Optional branch identifier this POI belongs to
        name:
          type: string
          description: POI name
        description:
          type: string
          description: Optional free-text description
        position:
          $ref: '#/components/schemas/Point'
        address:
          type: string
          description: Display address of the POI
        url:
          type: string
          format: uri
          description: External URL with more information
        city:
          type: string
          description: City of the POI
        phoneNumber:
          type: string
          description: Contact phone number
        displayOnRental:
          type: boolean
          description: Whether to display this POI during rentals
        enabled:
          type: boolean
          description: Whether this POI is active and visible
        useCustomIcon:
          type: boolean
          description: Whether a custom icon is used for this POI
        mapZoomLevel:
          type: integer
          format: int32
          description: Preferred map zoom level when focusing this POI
        sizeFactor:
          type: integer
          format: int32
          description: Size multiplier for the map marker
        openingInformation:
          $ref: '#/components/schemas/OpeningInformation'
        images:
          type: object
          description: |
            Images to be displayed on the user app.
            
            Additional properties and images that should be displayed on the user app must start with `detailsImage_`.
          properties:
            icon:
              type: object
              description: Icon to be displayed unless `useCustomIcon` is set to true, then `mainImage` is used.
              properties:
                name:
                  type: string
                  enum:
                    - "1": "Shopping 1"
                    - "2": "Shopping 2"
                    - "3": "Shopping 3"
                    - "4": "Shopping 4"
                    - "5": "Food and drinks 1"
                    - "6": "Food and drinks 2"
                    - "7": "Food and drinks 3"
                    - "8": "Touristic spots 1"
                    - "9": "Touristic spots 2"
                    - "10": "Touristic spots 3"
                    - "11": "Touristic spots 4"
                    - "12": "Touristic spots 5"
                    - "13": "Parking 1"
                    - "14": "Parking 2"
                    - "15": "Parking 3"
                    - "16": "Parking 4"
            mainImage:
              description: Image to be displayed if `useCustomIcon` is set to true
              $ref: '#/components/schemas/JsonImage'
          additionalProperties:
            $ref: '#/components/schemas/JsonImage'
        translationKeys:
          type: object
          description: |
            Default i18n translation keys for this category.
            
            Translation keys are to be maintained via the Translation API.
          properties:
            name:
              type: string
              description: i18n translation keys for the POI name
            description:
              type: string
              description: i18n translation keys for the POI description
  securitySchemes:
    jwtAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
security:
  - jwtAuth: []
