type: 'dictionary'
properties:

  lists:
    type: 'dictionary'
    properties:
      topList: { type: '@switchable', required: true }

  weather: { type: '@switchable', required: true }
  webcam: { type: '@switchable', required: true }
  map: { type: '@switchable', required: true }

  links:
    type: 'dictionary'
    required: true
    properties:
      sites:
        type: 'dictionary'
        required: true
        properties:
          '/.*/':
            enabled: { type: 'boolean', required: true }
            data:
              type: 'dictionary'
              properties:
                attractions: { type: '@link', required: true }
              patternProperties:
                '/.*/': { type: '@link' }
      

'@link':
  type: 'dictionary'
  properties:
    labelId: { type: 'string', required: true }
    target: { type: 'string', format: 'uri' }
    iconClass: { type: 'string', required: true }
    mainType: { type: 'integer' }
    queryParameters:
      type: 'dictionary'
      required: true
      properties:
        city: { type: 'string', required: true }
        articles: { type: 'string', required: true }
        categories: { type: 'string', required: true }

'@switchable':
  type: 'dictionary'
  properties:
    enabled: { type: 'boolean', required: true }
