# prettier-ignore

openapi: 3.0.3
info:
    title: 🅿️ Parking
    description: >-
        <p>💡 Parking, parking zones, tariffs, measurements.</p>
    version: 1.0.0
    contact:
        name: Golemio Prague Data Platform
        email: golemio@operatorict.cz
        url: https://golemio.cz
servers:
    - url: https://rabin.golemio.cz
      description: Test (development) server
    - url: https://api.golemio.cz
      description: Main (production) server
tags:
    - name: 🅿️ Parking (v1)
      description: <img src="https://img.shields.io/badge/opendata-available-green" alt="golemioapi-opendata-badge" /> ❌ Removed
    - name: 🅿️ Parking (v2)
      description: <img src="https://img.shields.io/badge/opendata-available-green" alt="golemioapi-opendata-badge" /> 💡 Parking spaces
    - name: 🅿️ Parking (v2) - internal
      description: 💡 parking details, measurements and tariffs
    - name: 🅿️ Parking (v3)
      description: <img src="https://img.shields.io/badge/opendata-available-green" alt="golemioapi-opendata-badge" /> 💡 Parking, occupancy, measurements, tariffs, machines. <em>Note that only a select subset of the data is published as open data.</em>

paths:
    /v2/parking:
        get:
            tags:
                - 🅿️ Parking (v2)
            summary: GET All Parking Spaces within the region of interest
            parameters:
                - name: latlng
                  in: query
                  description: Sorting by location (Latitude and Longitude separated by comma,
                      latitude first).
                  schema:
                      type: string
                      example: 50.124935,14.457204
                - name: range
                  in: query
                  description: Filter by distance from latlng in meters (range query). Depends
                      on the latlng parameter.
                  schema:
                      type: number
                      example: 5000
                - name: source
                  in: query
                  description: Filter by data provider.
                  schema:
                      type: string
                      example: korid
                - name: sourceId
                  in: query
                  description: Filter by parking group id. Unique per data provider.
                  schema:
                      type: string
                      example: "1"
                - name: category
                  in: query
                  description: Filter by parking type. Use with square brackets `category[]`
                  style: form
                  explode: false
                  schema:
                      type: array
                      items:
                          type: string
                      example: ['park_and_ride']
                - name: limit
                  in: query
                  description: Limits number of retrieved items.
                  schema:
                      type: number
                      example: 10
                - name: offset
                  in: query
                  description: Number of the first items that are skipped.
                  schema:
                      type: number
                      example: 0
                - name: minutesBefore
                  in: query
                  schema:
                    type: integer
                    example: 10
                  description: 'Filter by time conditions based on last data update. By maximal minutes before last update.'
                - name: updatedSince
                  in: query
                  schema:
                    type: string
                    example: '2022-07-25T00:00:00.000Z'
                  description: 'Filter by time conditions based on last data update. Date has to be in ISO8601 format. Cannot be used together with minutesBefore.'
            responses:
                200:
                    description: OK
                    headers:
                        Cache-Control:
                            description: Cache control directive for caching proxies
                            schema:
                                type: string
                                example: public, s-maxage=300, stale-while-revalidate=5
                    content:
                        application/json; charset=utf-8:
                            schema:
                                type: object
                                properties:
                                    features:
                                        type: array
                                        items:
                                            $ref: '#/components/schemas/ParkingSpaceFeature'
                                    type:
                                        type: string
                                        example: FeatureCollection
                401:
                    $ref: "#/components/responses/UnauthorizedError"
                404:
                    description: Not found
    /v2/parking/{id}:
        get:
            tags:
                - 🅿️ Parking (v2)
            summary: GET Parking Space
            parameters:
                - name: id
                  in: path
                  description: Id of parking location.
                  required: true
                  schema:
                      type: string
                      example: korid-20
            responses:
                200:
                    description: OK
                    headers:
                        Cache-Control:
                            description: Cache control directive for caching proxies
                            schema:
                                type: string
                                example: public, s-maxage=300, stale-while-revalidate=5
                    content:
                        application/json; charset=utf-8:
                            schema:
                                $ref: '#/components/schemas/ParkingSpaceFeature'
                401:
                    $ref: "#/components/responses/UnauthorizedError"
                404:
                    description: Not found
    /v2/parking/detail:
        get:
            tags:
                - 🅿️ Parking (v2) - internal
            summary: GET All Detailed Parking Spaces
            parameters:
                -   name: latlng
                    in: query
                    description: Sorting by location (Latitude and Longitude separated by comma,
                        latitude first).
                    schema:
                        type: string
                        example: 50.124935,14.457204
                -   name: range
                    in: query
                    description: Filter by distance from latlng in meters (range query). Depends
                        on the latlng parameter.
                    schema:
                        type: number
                        example: 5000
                -   name: source
                    in: query
                    description: Filter by data provider.
                    schema:
                        type: string
                        example: tsk_v2
                -   name: sourceId
                    in: query
                    description: Filter by parking group id. Unique per data provider.
                    schema:
                        type: string
                        example: "1"
                -   name: category
                    in: query
                    description: Filter by parking type. Use with square brackets `category[]`
                    style: form
                    explode: false
                    schema:
                        type: array
                        items:
                            type: string
                        example: ['park_and_ride']
                -   name: limit
                    in: query
                    description: Limits number of retrieved items.
                    schema:
                        type: number
                        example: 10
                -   name: offset
                    in: query
                    description: Number of the first items that are skipped.
                    schema:
                        type: number
                        example: 0
                - name: minutesBefore
                  in: query
                  schema:
                    type: integer
                    example: 10
                  description: 'Filter by time conditions based on last data update. By maximal minutes before last update.'
                - name: updatedSince
                  in: query
                  schema:
                    type: string
                    example: '2022-07-25T00:00:00.000Z'
                  description: 'Filter by time conditions based on last data update. Date has to be in ISO8601 format. Cannot be used together with minutesBefore.'
                -   name: zoneType
                    in: query
                    description: Filter by parking zone. Use with square brackets `zoneType[]`,
                        multiple values can be passed forming an array.
                    style: form
                    explode: false
                    schema:
                        type: array
                        items:
                            type: string
                        example: ['zone_mixed']
                -   name: parkingType
                    in: query
                    description: Filter by parking type. Use with square brackets `parkingType[]`,
                        multiple values can be passed forming an array.
                    style: form
                    explode: false
                    schema:
                        type: array
                        items:
                            type: string
                        example: ['on_street']

            responses:
                200:
                    description: OK
                    headers:
                        Cache-Control:
                            description: Cache control directive for caching proxies
                            schema:
                                type: string
                                example: public, s-maxage=300, stale-while-revalidate=5
                    content:
                        application/json; charset=utf-8:
                            schema:
                                type: object
                                properties:
                                    features:
                                        type: array
                                        items:
                                            $ref: '#/components/schemas/ParkingSpaceFeature'
                                    type:
                                        type: string
                                        example: FeatureCollection
                401:
                    $ref: "#/components/responses/UnauthorizedError"
                404:
                    description: Not found
    /v2/parking/detail/{id}:
        get:
            tags:
                - 🅿️ Parking (v2) - internal
            summary: GET Detailed Parking Space
            parameters:
                -   name: id
                    in: path
                    description: Id of parking location.
                    required: true
                    schema:
                        type: string
                        example: korid-20
            responses:
                200:
                    description: OK
                    headers:
                        Cache-Control:
                            description: Cache control directive for caching proxies
                            schema:
                                type: string
                                example: public, s-maxage=300, stale-while-revalidate=5
                    content:
                        application/json; charset=utf-8:
                            schema:
                                $ref: '#/components/schemas/ParkingSpaceFeature'
                401:
                    $ref: "#/components/responses/UnauthorizedError"
                404:
                    description: Not found
    /v2/parking/measurements:
        get:
            tags:
                - 🅿️ Parking (v2) - internal
            summary: GET All Parking Spaces Measurements
            parameters:
                - name: source
                  in: query
                  description: Filter by data provider.
                  schema:
                      type: string
                      example: korid
                - name: sourceId
                  in: query
                  description: Filter by parking group id. Unique per data provider.
                  schema:
                      type: string
                      example: "1"
                - name: latest
                  in: query
                  description: Show only the latest measurement.
                  schema:
                      type: boolean
                      example: true
                      default: false
                - name: from
                  in: query
                  description: Date in ISO8601, limits data measured from this datetime.
                  schema:
                      type: string
                      example: "2021-02-26T12:01:00.000Z"
                - name: to
                  in: query
                  description: Date in ISO8601, limits data measured up until this datetime.
                  schema:
                      type: string
                      example: "2021-02-26T12:03:00.000Z"
                -   name: limit
                    in: query
                    description: Limits number of retrieved items. Max 10000.
                    schema:
                        type: number
                        example: 10
                -   name: offset
                    in: query
                    description: Number of items that are skipped in result (like in sql).
                    schema:
                        type: number
                        example: 0
                - name: minutesBefore
                  in: query
                  schema:
                    type: integer
                    example: 10
                  description: 'Filter by time conditions based on last data update. By maximal minutes before last update.'
                - name: updatedSince
                  in: query
                  schema:
                    type: string
                    example: '2022-07-25T00:00:00.000Z'
                  description: 'Filter by time conditions based on last data update. Date has to be in ISO8601 format. Cannot be used together with minutesBefore.'
            responses:
                200:
                    description: OK
                    headers:
                        Cache-Control:
                            description: Cache control directive for caching proxies
                            schema:
                                type: string
                                example: public, s-maxage=300, stale-while-revalidate=5
                    content:
                        application/json; charset=utf-8:
                            schema:
                                type: array
                                items:
                                    $ref: '#/components/schemas/ParkingMeasurement'
                401:
                    $ref: "#/components/responses/UnauthorizedError"
                404:
                    description: Not found
                400:
                    description: Bad request
                    content:
                        application/json; charset=utf-8:
                            schema:
                                type: object
                                properties:
                                    error_message:
                                        type: string
                                        example: Bad request
                                    error_status:
                                        type: number
                                        example: 400
                                    error_info:
                                        type: string
                                        example: '{"limit":{"location":"query","param":"limit","value":"-2","msg":"Invalid value"}}'
    /v2/parking/tariffs:
        get:
            tags:
                - 🅿️ Parking (v2) - internal
            summary: GET All Parking Spaces Tariffs
            parameters:
                - name: source
                  in: query
                  description: Filter by data provider.
                  schema:
                      type: string
                      example: korid
                  required: false
            responses:
                200:
                    description: OK
                    headers:
                        Cache-Control:
                            description: Cache control directive for caching proxies
                            schema:
                                type: string
                                example: public, s-maxage=43200, stale-while-revalidate=60
                    content:
                        application/json; charset=utf-8:
                            schema:
                                type: array
                                items:
                                    $ref: '#/components/schemas/ParkingSpaceTariff'
                401:
                    $ref: "#/components/responses/UnauthorizedError"
                404:
                    description: Not found
    /v2/parking/tariffs/{tariffId}:
        get:
            tags:
                 - 🅿️ Parking (v2) - internal
            summary: GET Parking Space Tariff
            parameters:
                - name: tariffId
                  in: path
                  description: Id of parking tariff.
                  required: true
                  schema:
                      type: string
                      example: b184865e-5a5e-5465-abc1-4fab6bc56a77
            responses:
                200:
                    description: OK
                    headers:
                        Cache-Control:
                            description: Cache control directive for caching proxies
                            schema:
                                type: string
                                example: public, s-maxage=43200, stale-while-revalidate=60
                    content:
                        application/json; charset=utf-8:
                            schema:
                                $ref: '#/components/schemas/ParkingSpaceTariff'
                401:
                    $ref: "#/components/responses/UnauthorizedError"
                404:
                    description: Not found
    /v3/parking:
        get:
          tags:
            - 🅿️ Parking (v3)
          summary: 'Get a list of parking locations within the region of interest with filtering options'
          parameters:
            - name: primarySource
              in: query
              schema:
                type: array
                items:
                  type: string
                  example: tsk_v2
              description: 'Filter by data source (note that `osm` is a secondary source, not a primary source). Use with square brackets `primarySource[]`. When no filter is used, all parking locations from all primary sources are included along with non-overlapping parking locations from all secondary sources (`osm`). Similarly, when a filter with both primary and secondary sources is used, all parking locations from the specified primary sources are included along with non-overlapping parking locations from the specified secondary sources. When a filter with only a single source is used, all parking locations from the specified source are included regardless of whether the source is primary or secondary.'
            - name: boundingBox
              in: query
              schema:
                type: string
              example: '50.123,14.243,50.017,14.573'
              description: 'Filter by bounding box in format "topLeft.lat,topLeft.lon,bottomRight.lat,bottomRight.lon", polygons that fit only partially to selected bounding box are included'
            - name: validFrom
              in: query
              schema:
                type: string
                format: date-time
              example: '2022-08-01T00:00:00Z'
              description: 'Filter by valid from date'
            - name: openingHoursValidFrom
              in: query
              schema:
                type: string
                format: date-time
              example: '2022-08-01T00:00:00Z'
              description: 'Filter opening hours by valid from date'
            - name: openingHoursValidTo
              in: query
              schema:
                type: string
                format: date-time
              example: '2022-08-01T00:00:00Z'
              description: 'Filter opening hours by valid to date'
            - name: accessDedicatedTo
              in: query
              schema:
                type: array
                items:
                  type: string
                  enum:
                    - disabled
                    - charging
                    - parent
                    - delivery
                    - customer
                    - resident
                    - bus
                    - designated
                    - truck
                    - motorcycle
                    - RV
              description: 'Experimental: Filter by access combinations to specific spaces in parking. Return only strictly matched parking by access to parking spaces'
            - name: parkingPolicy
              in: query
              schema:
                type: array
                items:
                  type: string
                  enum:
                    - commercial
                    - customer_only
                    - kiss_and_ride
                    - park_and_ride
                    - park_sharing
                    - zone
                    - none
              description: 'Filter by parking policy. Use "none" to filter parkings without a policy (parking_policy is null). For multiple values use with square brackets `parkingPolicy[]`'
            - name: minutesBefore
              in: query
              schema:
                type: integer
                example: 10
              description: 'Filter by time conditions based on last data update. By maximal minutes before last update.'
            - name: updatedSince
              in: query
              schema:
                type: string
                example: '2022-07-25T00:00:00.000Z'
              description: 'Filter by time conditions based on last data update. Date has to be in ISO8601 format. Cannot be used together with minutesBefore.'
            - name: activeOnly
              in: query
              schema:
                  type: boolean
                  default: true
                  example: true
              description: 'If true, filter out locations that did not appear in latest source data.'
            - name: limit
              in: query
              schema:
                type: integer
                default: 1000
                maximum: 10000
                minimum: 0
              description: 'Number of results to return'
            - name: offset
              in: query
              schema:
                type: integer
                default: 0
                minimum: 0
              description: 'Number of results to skip for pagination'
          responses:
            '200':
              description: 'Successful response'
              headers:
                  Cache-Control:
                      description: Cache control directive for caching proxies
                      schema:
                          type: string
                          example: public, s-maxage=300, stale-while-revalidate=5
              content:
                application/json; charset=utf-8:
                    schema:
                        type: object
                        properties:
                            features:
                                type: array
                                items:
                                    $ref: '#/components/schemas/Parking'
                            type:
                                type: string
                                example: FeatureCollection
    /v3/parking/{id}:
        get:
          tags:
            - 🅿️ Parking (v3)
          summary: 'Get detailed information about a parking location by ID'
          parameters:
            - name: id
              in: path
              required: true
              schema:
                type: string
              example: 'tsk2-P1-0586'
              description: 'The identifier of the parking location to retrieve'
          responses:
            '200':
              description: 'Successful response'
              headers:
                  Cache-Control:
                      description: Cache control directive for caching proxies
                      schema:
                          type: string
                          example: public, s-maxage=300, stale-while-revalidate=5
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/Parking'
    /v3/parking/{id}/average-occupancy:
        get:
            tags:
                - 🅿️ Parking (v3)
            summary: 'Get detailed information about the average occupancy by ID'
            parameters:
                - name: id
                  in: path
                  required: true
                  schema:
                      type: string
                  example: 'tsk2-P1-0586'
                  description: 'The identifier of the parking space to retrieve'
            responses:
                200:
                    description: 'Successful response'
                    headers:
                        Cache-Control:
                            description: Cache control directive for caching proxies
                            schema:
                                type: string
                                example: public, s-maxage=28800, stale-while-revalidate=60
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/AverageOccupancyWeek'
                401:
                    $ref: "#/components/responses/UnauthorizedError"
                404:
                    description: Not found
                400:
                    description: Bad request
                    content:
                        application/json; charset=utf-8:
                            schema:
                                type: object
                                properties:
                                    error_message:
                                        type: string
                                        example: Bad request
                                    error_status:
                                        type: number
                                        example: 400
                                    error_info:
                                        type: string
                                        example: '{"limit":{"location":"query","param":"limit","value":"-2","msg":"Invalid value"}}'
    /v3/parking-measurements:
        get:
            tags:
                - 🅿️ Parking (v3)
            summary: 'Get a list of the latest (max 1h old) parking measurements with filtering options'
            parameters:
                - name: primarySource
                  in: query
                  schema:
                      type: array
                      items:
                          type: string
                          example: tsk_v2
                  description: 'Filter by primary source. Use with square brackets `primarySource[]`'
                - name: parkingId
                  in: query
                  schema:
                      type: array
                      items:
                          type: string
                          example: 'source-c66bb668-eab6-49da-bc84-002263e1dce0'
                  description: 'Filter by primary parking ID. Use with square brackets `parkingId[]`'
                - name: limit
                  in: query
                  schema:
                      type: integer
                      default: 10000
                      maximum: 10000
                      minimum: 0
                  description: 'Number of results to return'
                - name: offset
                  in: query
                  schema:
                      type: integer
                      default: 0
                      minimum: 0
                  description: 'Number of results to skip for pagination'
            responses:
                200:
                    description: 'Successful response'
                    headers:
                        Cache-Control:
                            description: Cache control directive for caching proxies
                            schema:
                                type: string
                                example: public, s-maxage=60, stale-while-revalidate=5
                    content:
                        application/json; charset=utf-8:
                            schema:
                                type: array
                                items:
                                    $ref: '#/components/schemas/ParkingOccupancyMeasurement'
                401:
                    $ref: "#/components/responses/UnauthorizedError"
                400:
                    description: Bad request
                    content:
                        application/json; charset=utf-8:
                            schema:
                                type: object
                                properties:
                                    error_message:
                                        type: string
                                        example: Bad request
                                    error_status:
                                        type: number
                                        example: 400
                                    error_info:
                                        type: string
                                        example: '{"limit":{"location":"query","param":"limit","value":"-2","msg":"Invalid value"}}'
    /v3/parking-tariffs:
        get:
          tags:
            - 🅿️ Parking (v3)
          summary: 'Get a list of tariffs with filtering options'
          parameters:
            - name: primarySource
              in: query
              schema:
                type: array
                items:
                  type: string
                  example: tsk_v2
              description: 'Filter by primary source. Use with square brackets `primarySource[]`'
            - name: validFrom
              in: query
              schema:
                type: string
                format: date-time
              example: '2022-08-01T00:00:00.000Z'
              description: 'Filter by valid from date of ChargeBand in Tariff (result show all tariffs that contains at least one valid ChargeBand and inside only ChargeBand objects that fit into that filter)'
            - name: validTo
              in: query
              schema:
                type: string
                format: date-time
              example: '2023-12-31T00:00:00.000Z'
              description: 'Filter by valid to date of ChargeBand in Tariff (result show all tariffs that contains at least one valid ChargeBand and inside only ChargeBand objects that fit into that filter)'
            - name: limit
              in: query
              schema:
                type: integer
                default: 1000
                maximum: 10000
                minimum: 0
              description: 'Number of results to return'
            - name: offset
              in: query
              schema:
                type: integer
                default: 0
                minimum: 0
              description: 'Number of results to skip for pagination'
          responses:
            '200':
              description: 'Successful response'
              headers:
                  Cache-Control:
                      description: Cache control directive for caching proxies
                      schema:
                          type: string
                          example: public, s-maxage=43200, stale-while-revalidate=60
              content:
                application/json:
                  schema:
                    type: array
                    items:
                      $ref: '#/components/schemas/ParkingTariff'
    /v3/parking-tariffs/{id}:
        get:
          tags:
            - 🅿️ Parking (v3)
          summary: 'Get a tariff by ID'
          parameters:
            - name: id
              in: path
              required: true
              schema:
                type: string
                format: uuid
              example: '0639c53f-c555-49ac-b5e0-bb3d50acf588'
              description: 'UUID of the tariff to retrieve'
          responses:
            '200':
              description: 'Successful response'
              headers:
                  Cache-Control:
                      description: Cache control directive for caching proxies
                      schema:
                          type: string
                          example: public, s-maxage=43200, stale-while-revalidate=60
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/ParkingTariff'
    /v3/parking-machines:
        get:
          tags:
            - 🅿️ Parking (v3)
          summary: 'Get a list of parking machines within the region of interest with filtering options. Results are sorted by id.'
          parameters:
            - name: primarySource
              in: query
              schema:
                type: array
                items:
                  type: string
                  example: tsk_v2
              description: 'Filter by primary source. Use with square brackets `primarySource[]`'
            - name: type
              in: query
              schema:
                type: array
                items:
                  type: string
                  enum:
                    - payment_machine
                    - info_box
              description: 'Filter by type. Use with square brackets `type[]`'
            - name: boundingBox
              in: query
              schema:
                type: string
              example: '50.123,14.243,50.017,14.573'
              description: 'Filter by bounding box in format "topLeft.lat,topLeft.lon,bottomRight.lat,bottomRight.lon", polygons that fit only partially to selected bounding box are included'
            - name: codeMask
              in: query
              schema:
                type: string
              example: '%2510'
              description: |
                Filter by code mask using substring match and "%" wildcard (partial match). (If used directly in postman or browser, "%" needs to be encoded as "%25".
                Examples:
                - `query` matches substring in codes
                - `start%` matches codes starting with "start"
                - `%end` matches codes ending with "end"
                - `%middle%` matches codes containing "middle" anywhere
            - name: validFrom
              in: query
              schema:
                type: string
                format: date-time
              example: '2023-08-01T00:00:00Z'
              description: 'Filter by valid from date'
            - name: activeOnly
              in: query
              schema:
                  type: boolean
                  default: true
                  example: true
              description: 'If true, filter out parking machines that did not appear in latest source data.'
            - name: limit
              in: query
              schema:
                type: integer
                default: 1000
                maximum: 10000
                minimum: 0
              description: 'Number of results to return'
            - name: offset
              in: query
              schema:
                type: integer
                default: 0
                minimum: 0
              description: 'Number of results to skip for pagination'
          responses:
            '200':
              description: 'Successful response'
              headers:
                  Cache-Control:
                      description: Cache control directive for caching proxies
                      schema:
                          type: string
                          example: public, s-maxage=43200, stale-while-revalidate=60
              content:
                application/json; charset=utf-8:
                    schema:
                        type: object
                        properties:
                            features:
                                type: array
                                items:
                                    $ref: '#/components/schemas/ParkingMachine'
                            type:
                                type: string
                                example: FeatureCollection
    /v3/parking-machines/{id}:
        get:
          tags:
            - 🅿️ Parking (v3)
          summary: 'Get a parking machine by ID'
          parameters:
            - name: id
              in: path
              required: true
              schema:
                type: string
              example: 'tsk_v2-4521afac-66db-4680-abc5-0006837d977a'
              description: 'ID of the parking machine to retrieve'
          responses:
            '200':
              description: 'Successful response'
              headers:
                  Cache-Control:
                      description: Cache control directive for caching proxies
                      schema:
                          type: string
                          example: public, s-maxage=43200, stale-while-revalidate=60
              content:
                application/json:
                  schema:
                    $ref: '#/components/schemas/ParkingMachine'
    /v3/parking-sources:
        get:
            tags:
                - 🅿️ Parking (v3)
            summary: Available parking sources
            responses:
                '200':
                    description: 'Successful response'
                    headers:
                        Cache-Control:
                            description: Cache control directive for caching proxies
                            schema:
                                type: string
                                example: public, s-maxage=43200, stale-while-revalidate=60
                    content:
                        application/json:
                            schema:
                                type: array
                                items:
                                    $ref: '#/components/schemas/ParkingSource'
                '401':
                    $ref: "#/components/responses/UnauthorizedError"
                '404':
                    description: Not found
                '500':
                    description: Server error

components:
    responses:
        UnauthorizedError:
            description: API key is missing or invalid
            headers:
                x-access-token:
                    schema:
                        type: string
    schemas:
        AverageOccupancyDay:
            type: object
            properties:
                00:
                    type: number
                    example: 11
                01:
                    type: number
                    example: 12
                02:
                    type: number
                    example: 12
                03:
                    type: number
                    example: 13
                04:
                    type: number
                    example: 13
                05:
                    type: number
                    example: 22
                06:
                    type: number
                    example: 26
                07:
                    type: number
                    example: 35
                08:
                    type: number
                    example: 36
                09:
                    type: number
                    example: 51
                10:
                    type: number
                    example: 51
                11:
                    type: number
                    example: 51
                12:
                    type: number
                    example: 51
                13:
                    type: number
                    example: 51
                14:
                    type: number
                    example: 51
                15:
                    type: number
                    example: 51
                16:
                    type: number
                    example: 51
                17:
                    type: number
                    example: 48
                18:
                    type: number
                    example: 46
                19:
                    type: number
                    example: 29
                20:
                    type: number
                    example: 28
                21:
                    type: number
                    example: 29
                22:
                    type: number
                    example: 18
                23:
                    type: number
                    example: 16
        AverageOccupancyWeek:
            type: object
            nullable: true
            properties:
                0:
                    $ref: '#/components/schemas/AverageOccupancyDay'
                1:
                    $ref: '#/components/schemas/AverageOccupancyDay'
                2:
                    $ref: '#/components/schemas/AverageOccupancyDay'
                3:
                    $ref: '#/components/schemas/AverageOccupancyDay'
                4:
                    $ref: '#/components/schemas/AverageOccupancyDay'
                5:
                    $ref: '#/components/schemas/AverageOccupancyDay'
                6:
                    $ref: '#/components/schemas/AverageOccupancyDay'
            description: "The day of the week (0 - 6; Sunday is 0)"
        ParkingMeasurement:
            title: Parking Measurement
            type: object
            properties:
                source:
                    type: string
                    example: korid
                source_id:
                    type: string
                    example: "1"
                parking_id:
                    type: string
                    example: korid-1
                available_spot_number:
                    type: number
                    example: 2
                closed_spot_number:
                    type: number
                    example: 0
                    nullable: true
                occupied_spot_number:
                    type: number
                    example: 12
                total_spot_number:
                    type: number
                    example: 14
                date_modified:
                    type: string
                    example: "2021-02-28T23:19:47.384Z"
            required:
                - source
                - source_id
                - parking_id
                - available_spot_number
                - closed_spot_number
                - occupied_spot_number
                - total_spot_number
                - date_modified
        ParkingSpaceTariff:
            title: Parking Space Tariff
            required:
                - tariff_id
                - source
                - last_updated
                - payment_mode
                - free_of_charge
                - charge_band_name
                - charge_currency
            type: object
            properties:
                tariff_id:
                    type: string
                    example: b184865e-5a5e-5465-abc1-4fab6bc56a77
                source:
                    type: string
                    example: korid
                last_updated:
                    type: string
                    example: "2020-10-12T15:19:21+02:00"
                payment_mode:
                    type: string
                    example: "\"\""
                payment_additional_description:
                    type: string
                    nullable: true
                    example: Parkování Liberec
                free_of_charge:
                    type: boolean
                    example: false
                url_link_address:
                    type: string
                    nullable: true
                    example: https://parking.liberec.cz/
                charge_band_name:
                    type: string
                    example: E
                payment_methods:
                    type: array
                    items:
                        type: string
                        enum:
                            - card_online
                            - card_offline
                            - cash
                            - coins_only
                            - mobile_app
                            - litacka
                            - sms_payment
                            - apple_pay
                            - google_pay
                            - unknown

                charge_currency:
                    type: string
                    example: CZK
                allowed_vehicle_type:
                    type: string
                    nullable: true
                    example: carSharing, taxi
                allowed_fuel_type:
                    type: string
                    nullable: true
                    example: electricity, petrol, lpg
                charges:
                    type: array
                    items:
                        $ref: '#/components/schemas/ParkingSpaceTariffCharge'
                reservation_url:
                    type: string
                    nullable: true
        ParkingSpaceTariffCharge:
            title: Parking Space Tariff Charge
            required:
                - charge
                - charge_order_index
            type: object
            properties:
                charge:
                    type: number
                    example: 20
                charge_type:
                    type: string
                    enum:
                        - minimum
                        - maximum
                        - additional_interval_price
                        - season_ticket
                        - temporary_price
                        - first_interval_price
                        - free_parking
                        - flat
                        - unknown
                        - other
                charge_order_index:
                    type: number
                    example: 0
                charge_interval:
                    type: number
                    nullable: true
                    example: 1800
                max_iterations_of_charge:
                    type: number
                    nullable: true
                    example: 1
                min_iterations_of_charge:
                    type: number
                    nullable: true
                    example: 1
                start_time_of_period:
                    type: string
                    nullable: true
                    example: Mon-Fri 09:00
                end_time_of_period:
                    type: string
                    nullable: true
                    example: Mon-Sun 14:30
# v3 schemas
        Parking:
          type: object
          title: Parking
          properties:
            geometry:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - Point
                    - Polygon
                    - MultiPolygon
                  description: The type of geometry (GeoJSON Point, Polygon, MultiPolygon).
                coordinates:
                  oneOf:
                    - type: array
                      items:
                        type: number
                      example: [14.441252, 50.109318]
                      description: Point coordinates
                    - type: array
                      items:
                        type: array
                        items:
                          type: array
                          items:
                            type: number
                        example:
                          [
                            [14.50823156003554, 50.10498927328214],
                            [14.505782430390298, 50.1031042405622],
                            [14.509701037821998, 50.1029471511537],
                            [14.50823156003554, 50.10498927328214]
                          ]
                        description: Polygon coordinates
                    - type: array
                      items:
                        type: array
                        items:
                          type: array
                          items:
                            type: array
                            items:
                              type: number
                        example:
                          [
                            [
                              [14.50823156003554, 50.10498927328214],
                              [14.505782430390298, 50.1031042405622],
                              [14.509701037821998, 50.1029471511537],
                              [14.50823156003554, 50.10498927328214]
                            ],
                            [
                              [14.50823156003554, 50.10498927328214],
                              [14.505782430390298, 50.1031042405622],
                              [14.509701037821998, 50.1029471511537],
                              [14.50823156003554, 50.10498927328214]
                            ]
                          ]
                        description: MultiPolygon coordinates
                  description: Coordinates of the geometry.
              description: GeoJSON geometry of the parking location.
            properties:
              type: object
              properties:
                id:
                  type: string
                  description: 'The identifier for the parking location.'
                primary_source:
                  type: string
                  enum:
                    - tsk_v2
                  description: 'The primary source of the parking location. Assigned by us.'
                primary_source_id:
                  type: string
                  nullable: true
                  description: 'The ID defined by the primary source. As in the source data.'
                name:
                  type: string
                  nullable: true
                  description: 'The name of the parking location.'
                valid_from:
                  type: string
                  format: date-time
                  description: 'The start date and time when the parking location is opened from. Or date of implementation.'
                centroid:
                  type: object
                  properties:
                    type:
                      type: string
                      enum:
                        - Point
                    coordinates:
                      type: array
                      items:
                        type: number
                  description: 'The GeoJSON centroid of the parking location, centroid is always point in geometry.'
                last_updated_at:
                  type: string
                  format: date-time
                  description: 'The date and time when info about the parking location was last checked and updated.'
                last_modified_at_source:
                  type: string
                  format: date-time
                  description: 'The date and time when the parking location was last modified at the source. In case data source provides it.'
                security:
                  type: boolean
                  nullable: true
                  description: 'Whether the parking location has security.'
                  example: null
                dimensions:
                  $ref: '#/components/schemas/ParkingDimension'
                parking_prohibitions:
                  $ref: '#/components/schemas/ParkingProhibitions'
                covered:
                  type: boolean
                  nullable: true
                  description: ''
                  example: true
                capacity:
                    type: integer
                    minimum: 0
                    nullable: true
                    description: 'The capacity of the parking location.'
                parking_policy:
                  type: string
                  nullable: true
                  enum:
                    - park_and_ride
                    - kiss_and_ride
                    - commercial
                    - zone
                    - park_sharing
                    - customer_only
                    - null
                  description: |
                    The parking policy of the parking location.
                    * `park_and_ride` - parking for transit users
                    * `kiss_and_ride` - short-term passenger drop-off
                    * `commercial` - paid parking for public
                    * `zone` - parking restricted by area (e.g., blue, violet, orange)
                    * `park_sharing` - shared parking spaces
                    * `customer_only` - exclusive for customers
                contact:
                  type: object
                  properties:
                    email:
                      type: string
                      nullable: true
                      example: "parking@golemio.cz"
                      description: 'The email of the parking location.'
                    phone:
                      type: string
                      nullable: true
                      example: "+420 25X XXX XXX"
                      description: 'The phone number of the parking location.'
                    web_url:
                      type: string
                      nullable: true
                      example: "https://parking.praha.eu/"
                      description: 'The website of the parking location.'
                filter:
                    type: string
                    description: 'Specific marking of parking space (blue zone, A zone etc.).'
                    example: "blue"
                parking_type:
                    type: string
                    enum:
                        - on_street
                        - underground
                        - multi_storey
                        - surface
                        - rooftop
                        - other
                    description: |
                        The parking type of the parking location.
                        * `on_street` - parking on the street
                        * `underground` - subterranean parking facility
                        * `multi_storey` - multi-level parking garage
                        * `surface` - open-air parking lot
                        * `rooftop` - parking on building roof
                        * `other` - other type of parking
                space:
                    type: object
                    properties:
                        features:
                            type: array
                            items:
                                $ref: '#/components/schemas/ParkingSpace'
                        type:
                            type: string
                            example: FeatureCollection
                entrances:
                    type: object
                    description: 'Features are sorted by entrance_id.'
                    properties:
                        features:
                            type: array
                            items:
                                $ref: '#/components/schemas/ParkingEntrance'
                        type:
                            type: string
                            example: FeatureCollection
                payment:
                    $ref: '#/components/schemas/ParkingPayment'
                reservation:
                    $ref: '#/components/schemas/ParkingReservation'
                tariff:
                  type: string
                  format: uuid
                  description: 'UUID of related parking tariff.'
                opening_hours:
                  type: array
                  description: 'Array is sorted by valid_from.'
                  nullable: true
                  items:
                    $ref: '#/components/schemas/OpeningHours'
                has_occupancy_info:
                    type: boolean
                    description: 'True if average occupancy info calculated from measurements is available'
                area:
                  type: number
                  nullable: true
                  description: 'Area of the parking lot in square meters.'
                address:
                  $ref: '#/components/schemas/ParkingAddress'
              required:
                - id
                - primary_source
                - valid_from
                - last_updated_at
                - centroid
            type:
              type: string
              example: Feature
        ParkingSpace:
          type: object
          title: Parking Space
          properties:
            geometry:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - Point
                    - Polygon
                    - MultiPolygon
                  description: The type of geometry (GeoJSON Point, Polygon, MultiPolygon).
                coordinates:
                  oneOf:
                    - type: array
                      items:
                        type: number
                      example: [14.441252, 50.109318]
                      description: Point coordinates
                    - type: array
                      items:
                        type: array
                        items:
                          type: array
                          items:
                            type: number
                        example:
                          [
                            [14.50823156003554, 50.10498927328214],
                            [14.505782430390298, 50.1031042405622],
                            [14.509701037821998, 50.1029471511537],
                            [14.50823156003554, 50.10498927328214]
                          ]
                        description: Polygon coordinates
                    - type: array
                      items:
                        type: array
                        items:
                          type: array
                          items:
                            type: array
                            items:
                              type: number
                        example:
                          [
                            [
                              [14.50823156003554, 50.10498927328214],
                              [14.505782430390298, 50.1031042405622],
                              [14.509701037821998, 50.1029471511537],
                              [14.50823156003554, 50.10498927328214]
                            ],
                            [
                              [14.50823156003554, 50.10498927328214],
                              [14.505782430390298, 50.1031042405622],
                              [14.509701037821998, 50.1029471511537],
                              [14.50823156003554, 50.10498927328214]
                            ]
                          ]
                        description: MultiPolygon coordinates
                  description: Coordinates of the geometry.
              description: GeoJSON geometry of the parking space.
            properties:
              type: object
              properties:
                id:
                  type: string
                  description: 'The identifier for the parking space.'
                capacity:
                  type: integer
                  minimum: 0
                  nullable: true
                  description: 'The capacity of the parking space.'
                access_dedicated_to:
                  type: array
                  nullable: true
                  items:
                    type: string
                    enum:
                    - disabled
                    - charging
                    - parent
                    - delivery
                    - customer
                    - resident
                    - bus
                    - designated
                    - truck
                    - motorcycle
                    - RV
                  minItems: 0
                  description: |
                    Array of dedicated access types for the parking space, where empty array means no restriction = open for all vehicles:
                    * `disabled` - reserved for disabled individuals
                    * `charging` - intended for electric vehicle charging
                    * `parent` - designated for parents with children
                    * `delivery` - exclusively for delivery purposes
                    * `customer` -  exclusive for customers
                    * `resident` - reserved for residents
                    * `bus` - reserved for buses
                    * `designated` - specific purpose (e.g., school, embassy)
                    * `truck` - reserved for trucks
                    * `motorcycle` - for motorcycles only
                    * `RV` - reserved for recreational vehicles
                address:
                  $ref: '#/components/schemas/ParkingAddress'
                centroid:
                  type: object
                  properties:
                    type:
                      type: string
                      example: Point
                    coordinates:
                      type: array
                      items:
                        type: number
                        example: [14.441252, 50.109318]
              required:
                - id
            type:
              type: string
              example: Feature
        ParkingEntrance:
          type: object
          title: Parking Entrance
          properties:
            geometry:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - Point
                    - Polygon
                    - MultiPolygon
                  description: The type of geometry (GeoJSON Point, Polygon, MultiPolygon).
                coordinates:
                  oneOf:
                    - type: array
                      items:
                        type: number
                      example: [14.441252, 50.109318]
                      description: Point coordinates
                    - type: array
                      items:
                        type: array
                        items:
                          type: array
                          items:
                            type: number
                        example:
                          [
                            [14.50823156003554, 50.10498927328214],
                            [14.505782430390298, 50.1031042405622],
                            [14.509701037821998, 50.1029471511537],
                            [14.50823156003554, 50.10498927328214]
                          ]
                        description: Polygon coordinates
                    - type: array
                      items:
                        type: array
                        items:
                          type: array
                          items:
                            type: array
                            items:
                              type: number
                        example:
                          [
                            [
                              [14.50823156003554, 50.10498927328214],
                              [14.505782430390298, 50.1031042405622],
                              [14.509701037821998, 50.1029471511537],
                              [14.50823156003554, 50.10498927328214]
                            ],
                            [
                              [14.50823156003554, 50.10498927328214],
                              [14.505782430390298, 50.1031042405622],
                              [14.509701037821998, 50.1029471511537],
                              [14.50823156003554, 50.10498927328214]
                            ]
                          ]
                        description: MultiPolygon coordinates
                  description: Coordinates of the geometry.
              description: GeoJSON geometry of the parking space.
            properties:
              type: object
              properties:
                entry:
                  type: boolean
                  nullable: true
                exit:
                  type: boolean
                  nullable: true
                entrance_type:
                  type: array
                  nullable: true
                  items:
                      type: string
                  example: ["walk", "car"]
                level:
                  type: number
                  nullable: true
                dimension:
                  type: object
                  properties:
                    max_height:
                      type: number
                      nullable: true
                    max_width:
                      type: number
                      nullable: true
                    max_length:
                      type: number
                      nullable: true
                    max_weight:
                      type: number
                      nullable: true
            type:
              type: string
              example: Feature
        ParkingPayment:
            type: object
            title: Parking Payment
            properties:
                web_url:
                    type: string
                    nullable: true
                android_url:
                    type: string
                    nullable: true
                ios_url:
                    type: string
                    nullable: true
                discovery_url:
                    type: string
                    nullable: true
        ParkingReservation:
            type: object
            title: Parking Reservation
            properties:
                reservation_type:
                    type: string
                    enum:
                        - possible
                        - not_possible
                        - required
                    nullable: true
                web_url:
                    type: string
                    nullable: true
                android_url:
                    type: string
                    nullable: true
                ios_url:
                    type: string
                    nullable: true
                discovery_url:
                    type: string
                    nullable: true
        ParkingOccupancyMeasurement:
          type: object
          title: Parking Occupancy
          properties:
              parking_id:
                  type: string
                  nullable: false
              primary_source:
                  type: string
                  enum:
                      - tsk_v2
                  description: 'The primary source of the parking location. Assigned by us.'
              primary_source_id:
                  type: string
                  nullable: true
                  description: 'The ID defined by the primary source. As in the source data.'
              has_free_spots:
                  type: boolean
                  nullable: false
              total_spot_number:
                  type: number
                  nullable: true
              free_spot_number:
                  type: number
                  nullable: true
              closed_spot_number:
                  type: number
                  nullable: true
              occupied_spot_number:
                  type: number
                  nullable: true
              last_updated:
                  type: string
                  nullable: false
                  format: date-time
                  description: 'The date and time when the info about the occupancy measurement was last updated.'
        ParkingAddress:
          type: object
          title: Parking Address
          properties:
            address_formatted:
              type: string
              nullable: true
              description: 'Formatted address of the parking location.'
            address_country:
              type: string
              nullable: true
              description: 'Country of the parking location.'
            address_locality:
              type: string
              nullable: true
              description: 'Locality of the parking location.'
            address_region:
              type: string
              nullable: true
              description: 'Region of the parking location.'
            postal_code:
              type: string
              nullable: true
              description: 'Postal code of the parking location.'
            street_address:
              type: string
              nullable: true
              description: 'Street address of the parking location.'
            house_number:
                type: string
                nullable: true
                example: '132/14'
        ParkingTariff:
          type: object
          title: Parking Tariff
          properties:
            id:
              type: string
              format: uuid
              description: 'The UUID identifier for the tariff.'
            charge_bands:
              type: array
              items:
                $ref: '#/components/schemas/ParkingChargeBand'
              description: 'Array of Charge Band objects that represent tariff categories for different users. Items are sorted by charge_band_name.'
          required:
            - id
            - charge_bands
        ParkingChargeBand:
          type: object
          title: Parking Charge Band
          properties:
            primary_source:
              type: string
              enum: ['tsk_v2']
              description: 'The primary source of the charge band.'
            primary_source_id:
              type: string
              nullable: true
              description: 'The ID defines by the primary source.'
            maximum_duration:
              type: integer
              minimum: 0
              nullable: true
              description: 'Maximum duration for charging (in seconds).'
            valid_from:
              type: string
              format: date-time
              description: 'Valid from date.'
            valid_to:
              type: string
              format: date-time
              nullable: true
              description: 'Valid to date.'
            last_updated_at:
              type: string
              format: date-time
              description: 'The date and time when info about the tariff category was last checked and updated.'
            last_modified_at_source:
              type: string
              format: date-time
              nullable: true
              description: 'The date and time when the tariff category was last modified at the source.'
            charges:
              type: array
              items:
                $ref: '#/components/schemas/ParkingCharge'
              description: 'Array of Charge objects. Items are sorted by charge_order_index.'
            free_of_charge:
                    type: boolean
                    example: false
                    description: 'Free charging, no need to calculate the price from Charges.'
            payment_methods:
                type: array
                items:
                    type: string
                    enum: ['card_online', 'card_offline', 'litacka', 'cash', 'coins_only', 'mobile_app', 'sms_payment', 'apple_pay', 'google_pay']
                nullable: true
                description: |
                  Payment methods for charging.
                  * `card_online` - payment through an online card transaction (e.g., on website)
                  * `card_offline` - payment using a card (using a parking machine, terminal etc.)
                  * `litacka` - payment via a PID Lítačka mobile app
                  * `cash` - payment with physical cash
                  * `coins_only` - payment using coins only
                  * `mobile_app` - payment through a dedicated mobile app (no PID Lítačka)
                  * `sms_payment` - payment made via SMS
                  * `apple_pay` - payment using Apple Pay
                  * `google_pay` - payment using Google Pay
            payment_mode:
                    type: string
                    enum: ['pre_paid', 'post_paid']
                    example: 'pre_paid'
                    nullable: true
                    description: 'Whether payment occurs prior to parking or after.'
            url:
                    type: string
                    nullable: true
                    example: https://parking.liberec.cz/
                    description: 'URL for the charge band.'
          required:
            - primary_source
            - valid_from
        ParkingCharge:
          type: object
          title: Parking Charge
          properties:
            id:
              type: string
              format: uuid
              description: 'The UUID identifier for the charge.'
            charge:
              type: string
              example: '0.6666666666666666'
              description: 'Charge amount.'
            charge_type:
              type: string
              enum: ['other', 'minimum', 'maximum']
              description: 'Type of charge.'
            charge_order_index:
              type: integer
              minimum: 0
              description: 'Order index for charges.'
            charge_interval:
              type: integer
              minimum: 0
              description: 'Charge interval (in seconds).'
            max_iterations_of_charge:
              type: integer
              minimum: 0
              description: 'Maximum iterations of charge.'
            min_iterations_of_charge:
              type: integer
              minimum: 0
              description: 'Minimum iterations of charge.'
            valid_from:
              type: string
              format: date-time
              description: 'Valid from date.'
            valid_to:
              type: string
              format: date-time
              nullable: true
              description: 'Valid to date.'
            periods_of_time:
              type: array
              items:
                $ref: '#/components/schemas/ParkingPeriodsOfTime'
              description: 'Array of Periods of Time objects.'
          required:
            - id
            - charge
            - charge_type
            - charge_order_index
            - charge_interval
            - valid_from
        ParkingPeriodsOfTime:
          type: object
          title: Parking Periods Of Time
          properties:
            day_in_week:
              type: string
              enum: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']
              description: 'Day of the week.'
            start:
              type: string
              format: time
              description: 'Start time of the periods of time.'
            end:
              type: string
              format: time
              description: 'End time of the periods of time.'
            ph:
              type: string
              enum: ['PH_only', 'PH_off']
              description: 'Public holiday availability.'
          required:
            - day_in_week
            - start
            - end
            - ph
        ParkingMachine:
          type: object
          title: Parking Machine
          properties:
            geometry:
              type: object
              properties:
                type:
                  type: string
                  enum:
                    - Point
                    - Polygon
                    - MultiPolygon
                  description: The type of geometry (GeoJSON Point, Polygon, MultiPolygon).
                coordinates:
                  oneOf:
                    - type: array
                      items:
                        type: number
                      example: [14.441252, 50.109318]
                      description: Point coordinates
                    - type: array
                      items:
                        type: array
                        items:
                          type: array
                          items:
                            type: number
                        example:
                          [
                            [14.50823156003554, 50.10498927328214],
                            [14.505782430390298, 50.1031042405622],
                            [14.509701037821998, 50.1029471511537],
                            [14.50823156003554, 50.10498927328214]
                          ]
                        description: Polygon coordinates
                    - type: array
                      items:
                        type: array
                        items:
                          type: array
                          items:
                            type: array
                            items:
                              type: number
                        example:
                          [
                            [
                              [14.50823156003554, 50.10498927328214],
                              [14.505782430390298, 50.1031042405622],
                              [14.509701037821998, 50.1029471511537],
                              [14.50823156003554, 50.10498927328214]
                            ],
                            [
                              [14.50823156003554, 50.10498927328214],
                              [14.505782430390298, 50.1031042405622],
                              [14.509701037821998, 50.1029471511537],
                              [14.50823156003554, 50.10498927328214]
                            ]
                          ]
                        description: MultiPolygon coordinates
                  description: Coordinates of the geometry.
              description: GeoJSON geometry of the parking machine.
            properties:
              type: object
              properties:
                id:
                  type: string
                  example: 'tsk_v2-4521afac-66db-4680-abc5-0006837d977a'
                  description: ID of the parking machine. Formatted as primary_source-primary_source_id
                primary_source:
                  type: string
                  enum:
                    - tsk_v2
                  description: The primary source of the parking machine.
                primary_source_id:
                  type: string
                  nullable: true
                  description: The ID defined by the primary source.
                code:
                  type: string
                  description: TSK parking machine identification code.
                machine_type:
                  type: string
                  enum:
                    - payment_machine
                    - info_box
                  description: |
                    The type of the parking machine.
                      * `payment_machine` - a facility where payment can be made for parking; often equipped with payment options
                      * `info_box` - an installation providing information and possibly a QR code, without payment capabilities.
                valid_from:
                  type: string
                  format: date-time
                  description: The start date when the parking machine is valid.
                tariff_id:
                  type: string
                  format: uuid
                  description: The UUID identifier for the tariff connected to the parking machine.
                  nullable: true
              required:
              - id
              - primary_source
              - valid_from
            type:
              type: string
              example: Feature
        ParkingDimension:
          type: object
          title: Parking Dimension
          nullable: true
          properties:
            max_height:
              type: number
              minimum: 0
              nullable: true
              description: 'The maximum height (in meters).'
            max_width:
              type: number
              minimum: 0
              nullable: true
              description: 'The maximum width (in meters).'
            max_length:
              type: number
              minimum: 0
              nullable: true
              description: 'The maximum length (in meters).'
            max_weight:
              type: number
              minimum: 0
              nullable: true
              description: 'The maximum weight (in kilograms).'
          example:
            max_height: 2.2
            max_width: 2.5
            max_length: 5.0
            max_weight: 1500
        OpeningHours:
          type: object
          title: Parking Opening Hours
          nullable: true
          properties:
            valid_from:
                type: string
                nullable: true
                example: '2020-05-31T00:00:00.000Z'
            valid_to:
                type: string
                nullable: true
                example: '2022-05-32T00:00:00.000Z'
            periods_of_time:
              type: array
              items:
                $ref: '#/components/schemas/ParkingPeriodsOfTimeWithDuration'
              description: 'Array of Periods of Time objects.'
        ParkingPeriodsOfTimeWithDuration:
          type: object
          title: Parking Periods Of Time
          properties:
            day_in_week:
              type: string
              enum: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']
              description: 'Day of the week.'
            start:
              type: string
              format: time
              description: 'Start time of the periods of time.'
            end:
              type: string
              format: time
              description: 'End time of the periods of time.'
            ph:
              type: string
              enum: ['PH_only', 'PH_off']
              description: 'Public holiday availability.'
            maximum_duration:
              type: integer
              example: 120
              description: 'Time in minutes.'
              nullable: true
            disc_parking:
              type: boolean
              nullable: true
              description: 'Need to use a parking disc.'
          required:
            - day_in_week
            - start
            - end
            - ph
        ParkingProhibitions:
          type: object
          title: Vehicles with prohibited access
          properties:
            lpg/cng:
              type: boolean
              nullable: true
              description: 'LPG/CNG vehicles permitted to enter the parking.'
            bus:
              type: boolean
              nullable: true
              description: 'buses permitted to enter the parking.'
            truck:
              type: boolean
              nullable: true
              description: 'trucks permitted to enter the parking.'
            motorcycle:
              type: boolean
              nullable: true
              description: 'motorcycles permitted to enter the parking.'
            bicycle:
              type: boolean
              nullable: true
              description: 'bicycles permitted to enter the parking.'
            trailer:
              type: boolean
              nullable: true
              description: 'trailers permitted to enter the parking.'
          required:
            - lpg/cng
            - bus
            - truck
            - motorcycle
            - bicycle
            - trailer
        ParkingSource:
            title: Parking Source
            type: object
            properties:
                source:
                    type: string
                    example: "korid"
                    description: "unikátní identifikátor poskytovatele"
                name:
                    type: string
                    example: "Koordinátor veřejné dopravy Libereckého kraje"
                    description: "jméno poskytovatele"
                    nullable: true
                contact:
                    type: object
                    nullable: true
                    properties:
                        email:
                            type: string
                            example: "pomoc@parking.liberec.cz"
                        phone:
                            type: string
                            example: "+420604295403"
                        web_url:
                            type: string
                            example: "https://parking.liberec.cz/"
                        term_of_use_url:
                            type: string
                            nullable: true
                            example: "https://www.liberec.cz/cz/prakticke-informace/doprava-udrzba-komunikaci/parkovaci-mista/parkovaci-mista.html"
        ParkingSpaceFeature:
            type: object
            properties:
                geometry:
                    type: object
                    description: GeoJson geometry
                    properties:

                        coordinates:
                            oneOf:
                                - type: array
                                  items:
                                      type: number
                                  example: [14.441252, 50.109318]
                                  description: Point
                                - type: array
                                  items:
                                      type: array
                                      items:
                                          type: array
                                          items:
                                              type: number
                                  example:
                                    [[
                                        [14.50823156003554, 50.10498927328214],
                                        [14.505782430390298, 50.1031042405622],
                                        [14.509701037821998, 50.1029471511537],
                                        [14.50823156003554, 50.10498927328214]
                                    ]]
                                  description: Polygon
                                - type: array
                                  items:
                                      type: array
                                      items:
                                          type: array
                                          items:
                                              type: array
                                              items:
                                                  type: number
                                  example:
                                    [
                                        [[
                                            [14.50823156003554, 50.10498927328214],
                                            [14.505782430390298, 50.1031042405622],
                                            [14.509701037821998, 50.1029471511537],
                                            [14.50823156003554, 50.10498927328214]
                                        ]],
                                        [[
                                            [14.50823156003554, 50.10498927328214],
                                            [14.505782430390298, 50.1031042405622],
                                            [14.509701037821998, 50.1029471511537],
                                            [14.50823156003554, 50.10498927328214]
                                        ]]
                                    ]
                                  description: MultiPolygon
                        type:
                            type: string
                            enum:
                                - Point
                                - Polygon
                                - MultiPolygon
                properties:
                    type: object
                    properties:
                        id:
                            type: string
                            example: 78267c44-62f1-41e8-be12-d8f919e7be20
                        source:
                            type: string
                            example: tsk
                        source_id:
                            type: string
                            example: "534002"
                        data_provider:
                            type: string
                            nullable: true
                            example: www.tsk-praha.cz
                        name:
                            type: string
                            example: Holešovice
                            nullable: true
                        category:
                            type: string
                            nullable: true
                            example: park_and_ride
                        date_modified:
                            type: string
                            example: '2020-05-18T07:38:37.000Z'
                            nullable: true
                        address_formatted:
                            type: string
                            nullable: true
                            example: 'Vrbenského, 17000 Praha Holešovice, Česko'
                        address:
                            type: object
                            nullable: true
                            properties:
                                address_country:
                                    type: string
                                    example: Česko
                                address_formatted:
                                    type: string
                                    example: Vrbenského, 17000 Praha Holešovice, Česko
                                address_locality:
                                    type: string
                                    example: Praha
                                address_region:
                                    type: string
                                    example: Holešovice
                                postal_code:
                                    type: string
                                    example: 17000
                                street_address:
                                    type: string
                                    example: Vrbenského
                                house_number:
                                    type: string
                                    example: 123
                        area_served:
                            type: string
                            nullable: true
                        web_app_payment_url:
                            type: string
                            nullable: true
                            example: 'https://ke-utc.appspot.com/static/select_offstreet.html?shortname=139'
                        android_app_payment_url:
                            type: string
                            nullable: true
                        ios_app_payment_url:
                            type: string
                            nullable: true
                        total_spot_number:
                            type: number
                            example: 74
                        tariff_id:
                            type: string
                            nullable: true
                            example: 20
                        valid_from:
                            type: string
                            nullable: true
                            example: '2020-05-31T00:00:00.000Z'
                        valid_to:
                            type: string
                            nullable: true
                            example: '2022-05-31T00:00:00.000Z'
                        parking_type:
                            type: string
                            enum:
                                - park_and_ride
                                - park_paid_private
                                - on_street
                                - park_sharing
                                - disabled_parking
                                - underground
                                - other
                        zone_type:
                            type: string
                            nullable: true
                            enum:
                                - zone_residential
                                - zone_mixed
                                - zone_visitors
                                - zone_other
                                - zone_free
                                - null
                        centroid:
                            type: object
                            properties:
                                type:
                                    type: string
                                    example: Point
                                coordinates:
                                    type: array
                                    items:
                                        type: number
                                        example: [14.441252, 50.109318]
                        available_spots_last_updated:
                            type: number
                            nullable: true
                            example: '2021-03-01T00:19:47+01:00'
                        available_spots_number:
                            type: number
                            nullable: true
                            example: 17
                    required:
                        - id
                        - source
                        - source_id
                        - name
                        - date_modified
                        - parking_type
                        - centroid
                        - available_spots_last_updated
                        - available_spots_number
                type:
                    type: string
                    example: Feature
