# Copyright 2016 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
imports:
- "power_manager_prefs_schema.yaml"

"$schema": http://json-schema.org/draft-07/schema#
typeDefs:
  bcs-file-name: &bcs_file_name
    type: string
    build-only-element: true
    description: Name of the file located in BCS under the respective bcs-overlay.
  deprecated_string: &deprecated_string
    type: string
    description: A deprecated string property to be removed after migration.
  firmware-build-target: &firmware_build_target
    type: string
    description: Build target that will be considered dirty when building/testing
      locally.
  # TODO(shapiroc): Migrate to use system-file-v2 instead
  system-file: &system_file
    type: object
    properties:
      source:
        description: Source of the file relative to the build system.
        type: string
      destination:
        description: Installation path for the file on the system image.
        type: string
    additionalProperties: false
  # V2 exists because system-file targets were poorly named, so they couldn't
  # be logically shared for build-time and run-time usage.
  # E.g. bluetooth config we want to both install and get the path at runtime
  system-file-v2: &system_file_v2
    type: object
    properties:
      build-path:
        description: Source of the file relative to the build system.
        build-only-element: true
        type: string
      system-path:
        description: Installation path for the file on the system image.
        type: string
    additionalProperties: false
    required:
      - build-path
      - system-path
  firmware-file: &firmware_file
    type: object
    properties:
      source:
        description: Source of the file relative to the build system ${FILESDIR}
        type: string
      destination:
        description: Installation path for the file on the system image.
        type: string
      symlink:
        description: Symlink file that will be installed pointing to the destination.
        type: string
    additionalProperties: false
  sku-id: &sku_id
    description: SKU/Board strapping pins configured during board manufacturing.
      Leaving this value unset will cause the config to match any SKU ID.
    type: integer
    minimum: -1
    maximum: 0x7FFFFFFF
  whitelabel-tag: &whitelabel_tag
    description: "'whitelabel_tag' value set in the VPD, to add Whitelabel branding over an unbranded base model."
    type: string
  customization-id: &customization_id
    description: "'customization_id' value set in the VPD for non-unibuild Zergs and Whitelabels. Deprecated for use in new products since 2017/07/26."
    type: string
  platform-name: &platform_name
    description: "Defines the name of the mosys platform used. Mosys is the only software which is allowed to used this value."
    type: string
  stylus-category: &stylus-category
    description: "Denotes the category of stylus this device contains."
    type: string
    enum:
    - none
    - internal
    - external
  psu-type: &psu-type
    description: |
      Type of PSU the device has:
      - battery: the device has a battery intended for primary use
      - AC_primary: the device has a battery, but it is not intended for primary use
      - AC_only: the device has no battery
      - no_power: the device does not receive power in any direct manner (e.g., it is virtualized)
    type: string
    enum:
      - battery
      - AC_primary
      - AC_only
      - no_power
  display-type: &display-type
    description: "Denotes the type of display this device contains."
    type: string
    enum:
    - default
    - old
  ath10k-wifi-transmit-power-chain: &ath10k-wifi-transmit-power-chain
    description: "[ath10k] WiFi power chain for use with QCA ath10k drivers. Limits
      in units of 1 dBm. 5g band power limit applies to all 5g bands."
    type: object
    properties:
      limit-2g:
        description: "2G band power limit (dBm)"
        type: integer
        minimum: 0x0
        maximum: 0xFF
      limit-5g:
        description: "5G band power limit (dBm)"
        type: integer
        minimum: 0x0
        maximum: 0xFF
    additionalProperties: false
  rtw-wifi-transmit-power-chain: &rtw-wifi-transmit-power-chain
    description: "[rtw] WiFi power chain for use with Realtek rtw88 drivers. Limits
      in units of 0.125 dBm. 5g band 2 (channels 5.35G-5.47G) power limit is not supported."
    type: object
    properties:
      limit-2g:
        description: "2G band power limit: All 2G band channels. (0.125 dBm)"
        type: integer
        minimum: 0x0
        maximum: 0xFF
      limit-5g-1:
        description: "5G band 1 power limit: 5.15G-5.35G channels. (0.125 dBm)"
        type: integer
        minimum: 0x0
        maximum: 0xFF
      limit-5g-3:
        description: "5G band 3 power limit: 5.47G-5.725G channels. (0.125 dBm)"
        type: integer
        minimum: 0x0
        maximum: 0xFF
      limit-5g-4:
        description: "5G band 4 power limit: 5.725G-5.95G channels. (0.125 dBm)"
        type: integer
        minimum: 0x0
        maximum: 0xFF
    additionalProperties: false
  wifi-geo-offsets: &wifi-geo-offsets
    description: "Offsets which are applied to WiFi power limits depending on the
      current regulatory domain. Offsets in units of 0.125 dBm. The sum of a geo
      offset and any power limit to which it applies cannot exceed 255.
      When the current regulatory domain is unknown or has yet to be determined,
      the base transmit power limits are used without any geo offsets applied.
      'geo-offsets-fcc' is used for regulatory domains which follow FCC guidelines,
      'geo-offsets-eu' is used for regulatory domains which follow ETSI guidelines, and
      'geo-offsets-rest-of-world' is used for regulatory domains which don't follow
      FCC or ETSI guidelines."
    type: object
    properties:
      offset-2g:
        description: "Value to be added to the 2.4GHz WiFi band. (0.125 dBm)"
        type: integer
        minimum: 0x0
        maximum: 0xFF
      offset-5g:
        description: "Value to be added to all 5GHz WiFi bands. (0.125 dBm)"
        type: integer
        minimum: 0x0
        maximum: 0xFF
    additionalProperties: false
type: object
properties:
  chromeos:
    type: object
    properties:
      configs:
        type: array
        items:
          type: object
          properties:
            arc:
              type: object
              required:
                - build-properties
              properties:
                build-properties:
                  type: object
                  required:
                    - first-api-level
                    - product
                    - device
                    - metrics-tag
                  properties:
                    product:
                      description: Product name to report in 'ro.product.name'.
                        This may be the device name, or it can be something else, to allow
                        several devices to be grouped into one product.
                      type: string
                    device:
                      description: Device name to report in 'ro.product.device'. This
                        is often '{product}_cheets' but it can be something else if
                        desired.
                      type: string
                    oem:
                      description: Original Equipment Manufacturer for this model. This
                        generally means the OEM name printed on the device.
                      type: string
                    marketing-name:
                      description: Name of this model as it is called in the
                        market, reported in 'ro.product.model'. This often starts
                        with '{oem}'.
                      type: string
                    metrics-tag:
                      description: Tag to use to track metrics for this model.
                        The tag can be shared across many devices if desired, but
                        this will result in larger granularity for metrics
                        reporting.  Ideally the metrics system should support
                        collation of metrics with different tags into groups, but if
                        this is not supported, this tag can be used to achieve the
                        same end.  This is reported in 'ro.product.metrics.tag'.
                      type: string
                    first-api-level:
                      description: |
                        The first Android API level that this model shipped with.
                      type: string
                    pai-regions:
                      description: |
                        (Optional) Comma-separated allow list of region codes
                        that can be appended to 'ro.oem.key1' for the purpose of
                        targeting Play Auto Install applications by region. The
                        value(s) should match the values that would be returned
                        by `cros_region_data region_code` for the relevant
                        region(s). If the device's region code is not in the
                        allow list, or if there is no allow list, 'ro.oem.key1'
                        will not include the region code. The allow list can
                        also be a single '*' character to indicate that the
                        region code should always be appended.
                      type: string
                      pattern: "(^([a-zA-Z0-9\\.\\-]+,)*[a-zA-Z0-9\\.\\-]+$)|(^\\*$)"
                  additionalProperties: false
                hardware-features:
                  <<: *system_file_v2
                  description: |
                    Defines hardware_features.xml file provided to ARC during
                    initialization.
                media-profiles:
                  <<: *system_file_v2
                  description: |
                    Defines media_profiles.xml file provided to ARC during
                    initialization.
                scale:
                  type: integer
                  description: The screen density value in dpi that will be used
                    for ARC apps. This value should be from the list of DPIs in
                    android cdd.
                  enum:
                    - 280
              additionalProperties: false
            nnpalm:
              type: object
              properties:
                touch-compatible:
                  description: Optional - false by default but should be true for compatible devices.
                  type: boolean
                radius-polynomial:
                  description: Optional - empty by default.
                  type: string
              additionalProperties: false
            audio:
              type: object
              properties:
                main:
                  type: object
                  properties:
                    cras-config-dir:
                      description: Subdirectory for model-specific configuration.
                      type: string
                    disable-profile:
                      description: Optional --disable_profile parameter for CRAS deamon.
                      type: string
                    ucm-suffix:
                      description: Optional UCM suffix used to determine model specific
                        config.
                      type: string
                    files:
                      type: array
                      build-only-element: true
                      items: *system_file
                  additionalProperties: false
                  required:
                  - cras-config-dir
              additionalProperties: false
              required:
              - main
            bluetooth:
              type: object
              properties:
                # TODO(b:152526402) - Remove when no yaml references "config".
                config: *system_file_v2
                flags:
                  type: object
                  properties:
                    enable-suspend-management:
                      description: Enable powerd suspend management callbacks.
                      type: boolean
                    # TODO(abhishekpandit) - Remove once no longer used
                    stop-on-suspend:
                      description: Stop the bluetooth adapter on suspend and start it on resume.
                      type: boolean
                    reset-on-resume:
                      description: Expect bluetooth chip to have reset on resume.
                      type: boolean
                  additionalProperties: false
              additionalProperties: false
            wifi:
              type: object
              description: Sets limits on maximum WiFi transmit power for tablet and non-tablet
                device configurations. This config must contain properties for ath10k wifi driver
                or rtw88 wifi driver only.
              oneOf:
                - properties:
                    tablet-mode-power-table-ath10k: *ath10k-wifi-transmit-power-chain
                    non-tablet-mode-power-table-ath10k: *ath10k-wifi-transmit-power-chain
                  additionalProperties: false
                - properties:
                    tablet-mode-power-table-rtw: *rtw-wifi-transmit-power-chain
                    non-tablet-mode-power-table-rtw: *rtw-wifi-transmit-power-chain
                    geo-offsets-fcc: *wifi-geo-offsets
                    geo-offsets-eu: *wifi-geo-offsets
                    geo-offsets-rest-of-world: *wifi-geo-offsets
                  additionalProperties: false
            brand-code:
              description: Brand code of the model (also called RLZ code).
              type: string
            camera:
              type: object
              properties:
                count:
                  type: integer
                  description: Specified the number of cameras on the model.
                config-file:
                  <<: *system_file_v2
                  description: Defines the camera configuration file.
                clock:
                  type: string
                  description: Specified the camera clock on the model.
                  enum:
                  - monotonic
                  - boottime
                legacy-usb:
                  type: boolean
                  description: Indicates if the device has legacy usb cameras.
                zsl-lookback:
                  type: integer
                  description: Specifies the duration to look back for
                    Zero-Shutter Lag (ZSL) in milliseconds.
                devices:
                  type: array
                  description: List of camera devices on the model. Newly
                    created models should use this property to define camera
                    configuration.
                  items:
                    type: object
                    properties:
                      interface:
                        type: string
                        description: The interface type of the camera device.
                        enum:
                        - usb
                        - mipi
                      facing:
                        type: string
                        description: Direction the camera faces relative to
                          device screen.
                        enum:
                        - front
                        - back
                      orientation:
                        type: integer
                        description: Clockwise angle through which the output
                          image needs to be rotated to be upright on the device
                          screen in its native orientation.
                        enum:
                        - 0
                        - 90
                        - 180
                        - 270
                      flags:
                        type: object
                        description: Bit flags representing camera capabilities
                          of this device. A camera module can be mounted on this
                          slot only if all the flags match.
                        properties:
                          support-1080p:
                            type: boolean
                            description: Supports 1920x1080 resolution.
                          support-autofocus:
                            type: boolean
                            description: Supports auto-focus.
                        required:
                        - support-1080p
                        - support-autofocus
                        additionalProperties: false
                      ids:
                        type: array
                        description: List of strings each identifies a possible
                          camera module on this slot. An empty list means this
                          information is not available.
                        items:
                          type: string
                          description: An identifier string of camera module.
                            For USB cameras this must be 4-digit hexadecimal VID
                            and PID separated by a colon, e.g. 0123:abcd. For
                            MIPI cameras it depends on vendor software usage.
                    if:
                      properties:
                        interface:
                          const: usb
                    then:
                      properties:
                        ids:
                          items:
                            pattern: "[0-9a-f]{4}:[0-9a-f]{4}"
                    required:
                    - interface
                    - facing
                    - orientation
                    - flags
                    additionalProperties: false
              additionalProperties: false
            fingerprint:
              type: object
              description: Contains details about the model's fingerprint implementation.
              properties:
                board:
                  type: string
                  description: Specifies the fingerprint board in use.
                sensor-location:
                  description: Specifies the location of the fingerprint sensor.
                  type: string
                  enum:
                  - none # Explicitly not supported.
                  - power-button-top-left
                  - keyboard-bottom-left
                  - keyboard-bottom-right
                  - keyboard-top-right
                  - power-button-side-right
                fingerprint-sensor-type:
                  description: Type of FP sensor. Currently describes whether FP
                    is overlapped on the power button or not.
                  type: string
                  enum:
                    - stand-alone
                    - on-power-button
              additionalProperties: false
            firmware:
              type: object
              properties:
                bcs-overlay:
                  description: BCS overlay path used to determine BCS file path for binary
                    firmware downloads.
                  type: string
                  build-only-element: true
                build-targets:
                  type: object
                  build-only-element: true
                  properties:
                    base:
                      description: Build target of the base EC firmware for a detachable device,
                        that will be considered dirty when building/testing
                      type: string
                    ec_extras:
                      type: array
                      items:
                        type: string
                        description: Extra EC build targets to build within chromeos-ec.
                    coreboot: *firmware_build_target
                    gsc: *firmware_build_target
                    depthcharge: *firmware_build_target
                    ec: *firmware_build_target
                    ish: *firmware_build_target
                    libpayload: *firmware_build_target
                    u-boot: *firmware_build_target
                  additionalProperties: false
                ec-ro-image: *bcs_file_name
                pd-ro-image: *bcs_file_name
                key-id:
                  description: Key ID from the signer key set that is used to sign the
                    given firmware image.
                  type: string
                  build-only-element: true
                main-ro-image: *bcs_file_name
                main-rw-image: *bcs_file_name
                name:
                  description: This is a human-recognizable name used to refer to the firmware.
                    It will be used when generating the shellball via firmware packer.
                    Mainly, this is only for compatibility testing with device tree (since DT
                    allowed firmwares to be named).
                  type: string
                  build-only-element: true
                image-name:
                  description: The name of the firmware image used by the
                    firmware updater. Typically the device name, but can differ
                    when a device may have two or more different firmware
                    images.
                  type: string
                  build-only-element: false
                no-firmware:
                  description: Does nothing and pending removal. Do not set.
                    ([Bug](https://crbug.com/1072007))
                  type: boolean
                  build-only-element: true
                firmware-config:
                  description: The firmware config bitmap to be flashed to the CBI. This field is
                    used in the factory.
                  type: integer
                  build-only-element: false
              additionalProperties: false
            firmware-signing:
              type: object
              build-only-element: true
              properties:
                key-id:
                  description: Key ID from the signer key set that is used to sign the
                    given firmware image.
                  type: string
                signature-id:
                  description: ID used to generate keys/keyblocks in the firmware
                    signing output.
                  type: string
                sig-id-in-customization-id:
                  description: Indicates that this model cannot be decoded by the mapping table.
                    Instead the model is stored in the VPD (Vital Product Data) region in the
                    customization_id property. This allows us to determine the
                    model to use in the factory during the finalization stage. Note
                    that if the VPD is wiped then the model will be lost. This may
                    mean that the device will revert back to a generic model, or
                    may not work. It is not possible in general to test whether the
                    model in the VPD is correct at run-time. We simply assume that
                    it is. The advantage of using this property is that no hardware
                    changes are needed to change one model into another. For example
                    we can create 20 different whitelabel boards, all with the same
                    hardware, just by changing the customization_id that is written
                    into SPI flash.
                  type: boolean
              required:
                - key-id
                - signature-id
              additionalProperties: false
            detachable-base:
              type: object
              description: "Contains the configuration for the hammerd which
                is used to update the detachable base firmware."
              properties:
                ec-image-name:
                  description: "The target EC binary name which is placed under
                    /lib/firmware."
                  type: string
                touch-image-name:
                  description: "The touchpad binary name which is placed under
                    /lib/firmware. This is only needed if the detachable base
                    contains touchpad."
                  type: string
                vendor-id:
                  description: "The Vendor ID of the detachable base. This
                    value can be queried by command 'lsusb'.
                    By taking this as an example:
                    Bus 001 Device 032: ID 18d1:503c Google Inc.
                    the vendor-id is 6353(=0x18d1)."
                  type: integer
                product-id:
                  description: "The Product ID of the detachable base. This
                    value can be queried by command 'lsusb'.
                    By taking this as an example:
                    Bus 001 Device 032: ID 18d1:503c Google Inc.
                    the product-id is 20540(=0x503c)."
                  type: integer
                usb-path:
                  description: "Searches and finds the idVendor and idProduct
                    under sysfs /sys/bus/usb/devices/* which matches the
                    vendor-id and product-id. By taking this as an example:
                    '/sys/bus/usb/devices/1-1.1'
                    The usb-path is '1-1.1'."
                  type: string
                files:
                  type: array
                  build-only-element: true
                  items: *firmware_file
              additionalProperties: false
            identity:
              type: object
              description: Defines attributes that are used by cros_config to detect the identity
                of the platform and which corresponding config should be used.
                This tuple must either contain x86 properties only or ARM properties only.
              anyOf:
                - properties:
                    smbios-name-match:
                      description: "[x86] Firmware name built into the firmware and reflected back
                        out in the SMBIOS tables. Leaving this value unset will cause the config
                        to match any SMBIOS product name."
                      type: string
                    sku-id: *sku_id
                    platform-name: *platform_name
                    customization-id: *customization_id
                    whitelabel-tag: *whitelabel_tag
                  additionalProperties: false
                - properties:
                    device-tree-compatible-match:
                      description: "[ARM] String pattern (partial) that is matched against the
                        contents of /proc/device-tree/compatible on ARM devices."
                      type: string
                    sku-id: *sku_id
                    platform-name: *platform_name
                    whitelabel-tag: *whitelabel_tag
                  additionalProperties: false
            name:
              type: string
              pattern: "^[_a-zA-Z0-9]{3,}"
              description: Google code name for the given model. While it is OK to use this string
                for human-display purposes (such as in a debug log or help dialog), or for a
                searchable-key in metrics collection, it is not recommended to use this property
                for creating model-specific behaviors. In this case, add a property to the schema
                which describes your behavior and use that instead.
            power:
              description: Defines settings that control power management functions.
                This mostly defines power_manager preferences, but but there are a few
                other power related settings included.
                For details about each power_manager preference, see -
                src/platform2/power_manager/common/power_constants.h/cc
                For examples on setting these properties (including multiline examples), see
                the power config example in libcros_config/test.yaml
              type: object
              properties:
                <<: *powerd_prefs
                allow-ambient-eq:
                  description: Enable (1) or disable (0) Ambient EQ.
                  type: string
                  pattern: "^[01]$"
                autobrightness:
                  type: object
                  properties:
                    config-file: *system_file_v2
                  additionalProperties: false
                  required:
                  - config-file
                touchpad-wakeup:
                  description: Enable (1) or disable (0) wake from touchpad.
                  type: string
                  pattern: "^[01]$"
              additionalProperties: false
            test-label:
              description: Test alias (model) label that will be applied in Autotest and
                reported for test results.
              type: string
            thermal:
              type: object
              properties:
                dptf-dv:
                  description: System image path to the .dv file containing DPTF (Dynamic Platform
                    and Thermal Framework) settings.
                  type: string
                files:
                  type: array
                  build-only-element: true
                  items: *system_file
              additionalProperties: false
              required:
              - files
            touch:
              type: object
              properties:
                files:
                  type: array
                  build-only-element: true
                  items: *firmware_file
              additionalProperties: false
            wallpaper:
              description: Base filename of the default wallpaper to show on this device.
              type: string
            demo-mode:
              type: object
              description: Properties related to the ChromeOS Demo Mode, defining the user
                experience when the device is used in retail.
              additionalProperties: false
              properties:
                highlights-extension-id:
                  description: The Chrome extension ID of the highlights app used during demo mode.
                  type: string
                screensaver-extension-id:
                  description: The Chrome extension ID of the attract loop played during demo mode.
                  type: string
            regulatory-label:
              description: Base name of the directory containing the regulatory label
                files to show on this device.
              type: string
            ui:
              type: object
              properties:
                power-button:
                  type: object
                  properties:
                    edge:
                      type: string
                      enum:
                      - left
                      - right
                      - top
                      - bottom
                    position:
                      type: string
                  additionalProperties: false
                side-volume-button:
                  description: Defines the position of the side volume button. `region` indicates
                    whether the button is at the side of the "screen" or "keyboard" of the device.
                    `side` indicates which edge the button is anchored to while the device in
                    landscape primary screen orientation. It can be "left", "right", "top",
                    "bottom".
                  type: object
                  properties:
                    region:
                      type: string
                      enum:
                      - keyboard
                      - screen
                    side:
                      type: string
                      enum:
                      - left
                      - right
                      - top
                      - bottom
                  additionalProperties: false
                extra-ash-flags:
                  type: array
                  build-only-element: true
                  items:
                    type: string
                    pattern: "^--[a-zA-Z][a-zA-Z-]*(=.+)?$"
                    description: Flags passed to the Ash window manager and
                      system UI. Each entry should be a string of the form
                      --<key>=<value>, or --<key> for boolean flags. If this
                      property is not set, flags will be determined by other
                      cros_config properties. Serialized to a null byte
                      separated string when written to configfs.img
              additionalProperties: false
            auto-night-light:
              description: Whether the auto-night-light feature is enabled on the device, which
                sets the schedule for Night light automatically to sunset-to-sunrise.
              type: boolean
            oem-id:
              description: |
                Some projects store SKU ID, OEM ID and Board Revision in an
                EEPROM and only SKU ID can be updated in the factory and RMA
                flow but others should be pre-flashed in the chip level. In
                this case, we would like to validate whether oem-id here from
                the updated SKU ID matches the one in the EEPROM so we can
                prevent this device from being updated to another OEM's devices.
              type: string
              pattern: "[0-9]+"
            modem:
              type: object
              properties:
                firmware-variant:
                  description: Variant of the modem firmware to be used. This
                    value is read by modemfwd to match against the variant field
                    of a firmware entry in a firmware manifest. In most cases,
                    we simply use the model name as the value.
                  type: string
              additionalProperties: false
            hardware-properties:
              type: object
              description: Contains boolean flags or enums for hardware properties
                of this board, for example if it's convertible, has a touchscreen,
                has a camera, etc. This information is used to auto-generate C
                code that is consumed by the EC build process in order to do
                run-time configuration. If a value is defined within a config
                file, but not for a specific model, that value will be assumed
                to be false for that model. If a value is an enum and is not
                specified for a specific model, it will default to "none".
                All properties must be booleans or enums. If non-boolean
                properties are desired, the generation code in
                cros_config_schema.py must be updated to support them.
              properties:
                is-lid-convertible:
                  description: Can the lid be rotated 360 degrees.
                  type: boolean
                has-lid-accelerometer:
                  description: Is there an accelerometer in the lid of the
                    device.
                  type: boolean
                has-base-accelerometer:
                  description: Is there an accelerometer in the base of the
                    device.
                  type: boolean
                has-lid-gyroscope:
                  description: Is there a gyroscope in the lid of the device.
                  type: boolean
                has-base-gyroscope:
                  description: Is there a gyroscope in the base of the device.
                  type: boolean
                has-lid-magnetometer:
                  description: Is there a magnetometer in the lid of the device.
                  type: boolean
                has-base-magnetometer:
                  description: Is there a magnetometer in the base of the device.
                  type: boolean
                has-base-light-sensor:
                  description: Is there a light sensor in the base of the device.
                  type: boolean
                has-lid-light-sensor:
                  description: Is there a light sensor in the lid of the device.
                  type: boolean
                has-touchscreen:
                  description: Does the device have a touchscreen.
                  type: boolean
                has-backlight:
                  description: Does the device have a backlight.
                  type: boolean
                display-type: *display-type
                stylus-category: *stylus-category
                psu-type: *psu-type
              additionalProperties: false
            cros-healthd:
              type: object
              description: Contains properties used by cros_healthd for
                model-specific telemetry. Each property represents a category of
                information and contains boolean properties that indicate
                whether a device supports a particular telemetry item. See
                cros_healthd_probe.mojom for descriptions of each property.
              properties:
                battery:
                  type: object
                  properties:
                    has-smart-battery-info:
                      type: boolean
                  additionalProperties: false
                cached-vpd:
                  type: object
                  properties:
                    has-sku-number:
                      type: boolean
                  additionalProperties: false
              additionalProperties: false
          additionalProperties: false
          required:
          - name
    additionalProperties: false
    required:
    - configs
