openapi: 3.1.0
info:
  version: '4.6'
  title: eGauge WebAPI
  description: eGauge Meter API
  license:
    name: Common Documentation License 1.0
    url: https://spdx.org/licenses/CDL-1.0.html
servers:
  - url: https://{devname}.egauge.io/api
    description: The WebAPI server
    variables:
      devname:
        default: eGaugeHQ
security:
  - ApiKey: []
tags:
  - name: Introduction
    description: >
      The eGauge WebAPI is a [JSON](https://www.json.org/)-based API

      that provides access to eGauge meters. It offers secure means to

      read device data, configure the device, and perform various

      control operations.


      The WebAPI is intended to eventually replace the [eGauge XML

      API](https://www.egauge.net/docs/egauge-xml-api.pdf). For new

      applications, developers are encouraged to use WebAPI rather than

      the legacy XML API.


      ## Legal Disclaimer


      This document and the API it describes may be amended and modified

      by eGauge Systems LLC at any time with or without notice. eGauge

      Systems LLC strives to avoid changes that break

      backwards-compatibility, but reserves the right to do so at its

      sole discretion.


      ## Getting Started


      ### With Python


      To make it easy to get started, eGauge provides an open source

      Python package.  It can be installed with the command:

        ```sh
        pip install egauge-python
        ```

      With this package installed, accessing an eGauge meter becomes

      very simple.  For example, to fetch the hostname of the meter, you

      could use:

        ```python
        from egauge import webapi

        URI = "https://DEV.egaug.es"      # replace DEV with meter name
        USR = "USER"                      # replace USER with user name
        PWD = "PASS"                      # replace PASS with password

        dev = webapi.device.Device(URI, webapi.JWTAuth(USR,PWD))

        print("hostname is " + dev.get("/config/net/hostname")["result"])
        ```

      The package also contains various convenience classes to read

      meter data, capture waveform samples, convert between physical

      units, and so on.


      The official GIT repository for this package is at

      [https://bitbucket.org/egauge/python/](https://bitbucket.org/egauge/python/).

      Various code examples can be found in the

      [examples](https://bitbucket.org/egauge/python/src/main/egauge/examples/)

      directory.
  - name: /auth
    description: |
      The authentication service.  Clients can use
      this to obtain and manage tokens that grant access to the other
      resources in this API.


      The meter uses [JSON Web
      Tokens](https://rfc-editor.org/rfc/rfc7519) (JWT or simply token)
      to restrict access to protected resources.  Clients must include
      such tokens in requests via the [HTTP Authorization
      header](https://www.rfc-editor.org/rfc/rfc7235).  This header must
      have the form:

        > Authorization: Bearer *JWT*

      where *JWT* is a valid token.

      Tokens are valid for a limited time; typically for about 10
      minutes.  However, a meter may revoke a token earlier, e.g.,
      due to a reboot.
  - name: /capture
    description: >
      The capture service allows collecting waveform data for configured

      input channels.


      ## Basic Usage


      `GET /capture&i` returns information about the channels for which

      waveform data can be captured.  The returned object might look

      like this:


      ```json

      {
        "channels": {
          "0": {"name": "L1", "unit": "V"},
          "1": {"name": "L2", "unit": "V"},
          "4": {"name": "S1", "unit": "A"}
          }
      }

      ```


      This response indicates that three channels are available.  The

      meter-internal channel numbers are 0, 1, and 4. As the `name`

      values indicate, those channels correspond to meter inputs L1, L2,

      and S1, respectively.  The first two channels return samples as

      volts (`V`) and the third returns samples as amperes (`A`).


      `GET /capture?n&d=1e-3&c=0&c=4` initiates a capture for 1ms of

      samples on channels 0 and 4 and returns a cookie (token) to be

      used to retrieve the capture samples. The response for this

      request might look like this:


      ```json

      {"state": "armed", "cookie": 1875353535}

      ```


      State `armed` indicates that the meter successfully processed the

      capture request and is waiting for the trigger to occur. Cookie

      `1875353535` is a random integer to be used when retrieving the

      sampled data, as shown next.


      `GET /capture?n=1875353535` can now be used to fetch the samples.

      The response might look as shown below:


      ```json
        {
          "state": "full", "ts_freq": 1000000, "first_sample": "1619637288.061",
          "ch_mask": [17, 0],
          "r": [
            {"t": 495514564, "d": [135.059]},
            {"t":        82, "d": [-0.0146239]},
            {"t":      1354, "d": [105.454, -0.00731193]}
          ]
        }
      ```


      State `full` indicates that the capture buffer is full and

      therefore the response contains sample values. The frequency of

      the counter used to generate the timestamps is 1MHz (`"ts_freq":

      1000000`) and the realtime [Unix

      timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp) of the
      first sample is 28

      April 2021, 19:14:48 UTC (`first_sample": "1619637288.061"`). The

      `ch_mask` member is an array of 32-bit integers.  If a bit is set

      in this mask, data for that channel is included in the response.

      In our case, the channel mask has only bits 0 and 4 set in the

      first integer (17), indicating that channels 0 and 4 are contained

      in the sampled data (in order from smallest to largest channel

      numbers). The timestamp `t` of the first sample is 495514564 and

      the subsequent samples were acquired 82 and 1354 timestamp ticks

      after the corresponding previous sample.  Thus, the reconstructed

      sample values for the channels are:

        |**Timestamp [µs]**|**Channel 0 value [V]**|**Channel 1 value [A]**|
        |-----------------:|----------------------:|----------------------:|
        |         495514564|                135.059|                       |
        |         495514646|                       |            -0.01462390|
        |         495516000|                105.454|            -0.00731193|

      Note how the sample values are returned strictly in order from

      lowest number to highest numbered channel: 0, 4, 0, 4.  Also note

      how there is a separate entry in the result array `r` for each

      unique timestamp.  Each data array (`d`) may have just a single

      entry or multiple entries if there are multiple sample values with

      the same timestamp.


      ## Python Example


      A Python program illustrating the use of this service can be found

      [here](https://bitbucket.org/egauge/python/src/main/egauge/examples/test_capture.py).

      This program takes advantage of class

      `egauge.webapi.device.Capture` to handle the details of encoding

      the HTTP requests and decoding the responses.
  - name: /cmd
    description: |
      The service provides the ability to execute various operations for
      their side effects, such as rebooting the meter.  Unless stated
      otherwise, the resources in this service are available only to
      users with the save right (see
      [/auth/rights](/webapi/4.6/openapi/auth/authrightsget)).
  - name: /config
    description: |
      The meter configuration service.

      The endpoints under `/config` provide common method semantics and
      atomicity guarantees as described below.


      ## HTTP Method Semantics

      The endpoints generally support HTTP methods `GET`, `PUT`, `POST`,
      and `DELETE`, though some of the endpoints may have restrictions.
      For example, security-sensitive values such as certificates or
      passwords are usually write-only.

      `GET` returns the current value of the endpoint and has no
      side-effect.

      The exact semantics of the other methods depend on the JSON type
      of the value that the endpoint represents:

      ### Semantics for Object Values

      `PUT` replaces the value of the object with the one in the request
      body.  `POST` updates the object based on the members in the
      request body.  That is, the `POST` may add new members or updates
      the values of existing members. `DELETE` removes the object where
      that makes sense and otherwise resets the object to its default
      value.

      ### Semantics for Array Values

      `PUT` replaces the value of the array with the array contained in
      the request body.  `POST` appends the array in the request body to
      the existing array.  `DELETE` removes the array where that makes
      sense and otherwise resets it to its default value (usually the
      empty array).

      ### Semantics for String and Number Values

      `PUT` and `POST` replace the value.  `DELETE` removes the
      value if that is possible and otherwise resets it to the default
      value.

      ## Atomicity

      `GET` responses are guaranteed to return a consistent view of the
      meter configuration.  That is, if there are simultaneous
      modification requests, it is guaranteed that the modifications
      take place either before or after the `GET` response is created,
      not partway through it.

      Modification requests (`POST`, `PUT`, and `DELETE`) are executed
      transactionally, meaning either all of a modification is applied
      or none of it.  Multiple modifications are applied in a
      sequentially consistent fashion.  That is, there must exist a
      sequential order in which the modifications can be applied that
      yields the final result.

      HTTP headers `ETag` and `If-Match` can be used to ensure a
      modification request is applied only if the configuration has not
      been changed since the `GET` request that returned the `ETag`.
  - name: /config/alert
    description: |
      The alert configuration of the meter.
  - name: /config/alert/custom
    description: |
      Up to 32 custom alerts.

      Custom alerts consist of an arbitrary boolean condition that is
      checked at certain times.  When the condition evaluates to true,
      the alert is triggered.
  - name: /config/alert/custom/{idx}
    description: |
      The custom alert.
  - name: /config/alert/custom/{idx}/cond
    description: |
      The boolean condition consists of three parts: `lhs op rhs`. `lhs`
      and `rhs` are arbitrary expressions and `op` must be a comparison
      operator.
  - name: /config/alert/custom/{idx}/cond/lhs
    description: >
      An [eScript](/webapi/4.6/openapi/glossary#section/eScript) expression that
      returns the

      value to use on the left hand side of the comparison.
  - name: /config/alert/custom/{idx}/cond/op
    description: |
      The comparison-operator to use for comparing the left-hand-side
      expression `lhs` against the right-hand side expression `rhs`.  It
      may be one of:

        * `<`: Condition is true if `lhs` is less than `rhs`.
        * `<=`: Condition is true if `lhs` is less-than-or-equal to `rhs`.
        * `=`: Condition is true if `lhs` is equal to `rhs`.
        * `!=`: Condition is true if `lhs` differs from `rhs`.
        * `>=`: Condition is true if `lhs` is greater-than-or-equal to `rhs`.
        * `>`: Condition is true if `lhs` is greater than `rhs`.
  - name: /config/alert/custom/{idx}/cond/rhs
    description: >
      An [eScript](/webapi/4.6/openapi/glossary#section/eScript) expression that
      returns the

      value that to use on the right hand side of the comparison.
  - name: /config/alert/custom/{idx}/detail
    description: |
      Alert detail message.  This may be up to 255 bytes in length.  The
      following sequences within this string get replaced as follows:

        * `%%` is replaced by a single percent character.
        * `%l` is replaced by the value of the `lhs` expression.
        * `%r` is replaced by the value of the `rhs` expression.
        * `%L` is replaced by the `lhs` expression string.
        * `%R` is replaced by the `rhs` expression string.
  - name: /config/alert/custom/{idx}/frequency
    description: |
      The frequency with which this custom alert should be checked.
      Possible values are:

        * `sec`: The alert will be checked once a second.
        * `min`: The alert will be checked once a minute.
        * `hr`: The alert will be checked once an hour.
        * `dy`: The alert will be checked once a day.
        * `wk`: The alert will be checked once a week.
        * `mon`: The alert will be checked once a month.
        * `an`: The alert will be checked once a year.
  - name: /config/alert/custom/{idx}/name
    description: |
      The user-selected name of this custom alert.
  - name: /config/alert/custom/{idx}/priority
    description: |
      The priority of this custom alert.  Zero is the lowest, seven the
      highest priority.
  - name: /config/alert/reporter
    description: |
      The alert reporting configuration.  Alerts may be reported via a
      web server or via an email server.
  - name: /config/alert/reporter/mail
    description: >
      The configuration for reporting alerts via email server.  If alert

      reporting via web server is enabled

      ([/config/alert/reporter/web/uri](/webapi/4.6/openapi/glossary#section/configalertreporterweburi)

      is not empty), reporting via email server is disabled.
  - name: /config/alert/reporter/mail/server
    description: |
      The hostname of a mail server that speaks the
      [SMTP](https://www.rfc-editor.org/rfc/rfc821) protocol.  If this
      is set to an empty string, the meter will attempt to deliver mail
      directly to the destination host.  Many Internet service providers
      block direct mail delivery, so leaving this string empty generally
      results in alert emails getting blocked.
  - name: /config/alert/reporter/mail/user
    description: |
      The user name to provide to the email server for authentication
      purposes.
  - name: /config/alert/reporter/mail/password
    description: |
      The password to provide to the email server for authentication
      purposes.

      This resource is write-only.
  - name: /config/alert/reporter/mail/from-address
    description: |
      The "From" email address to use when sending an email alert.  If
      set to an empty string, the email server will use a default
      address.
  - name: /config/alert/reporter/mail/to
    description: |
      The email destinations to send the alerts to.
  - name: /config/alert/reporter/mail/to/{idx}
    description: |
      An email destination to send the alerts to.
  - name: /config/alert/reporter/mail/to/{idx}/address
    description: |
      The destination email address to send the alert to.
  - name: /config/alert/reporter/mail/to/{idx}/format
    description: |
      The reporting format to use for this destination.  Valid values
      are:

        * `short`: Report only the newest alert with the highest
          priority.

        * `full`: Report all unacknowledged alerts that are pending in
          order from highest to lowest priority.
  - name: /config/alert/reporter/mail/to/{idx}/min-priority
    description: |
      The minimum priority that is required for a new alert to generate
      an email.  When an email is generated, other lower priority alerts
      may also be included if they are unacknowledged and the reporting
      format allows it.
  - name: /config/alert/reporter/web
    description: |
      The configuration for reporting alerts via web server.
  - name: /config/alert/reporter/web/min-priority
    description: |
      The minimum priority that is required for a new alert to generate
      a report to the web server.  When a report is generated, all other
      unacknowledged alerts are also reported, even if they have a
      priority lower than the value indicated by this resource.
  - name: /config/alert/reporter/web/options
    description: >
      The options to use when sending an alert report to the web server.


      This resource is available only if

      [/config/alert/reporter/web/service](/webapi/4.6/openapi/configalertreporterwebservice)

      is an empty string.


      Multiple options can be specified in the string by separating them

      with a comma.  Supported options are:

        * `deflate`: Use HTTP Content-Encoding `deflate` when
          transmitting the alert report.

        * `gzip`: Use HTTP Content-Encoding `gzip` when
          transmitting the alert report.

        * `secure`: Only send the alert report if the server's HTTP
          certificate can be verified by the meter.  This option is
          ignored if
          [/config/net/http/client/insecure](/webapi/4.6/openapi/confignethttpclientinsecure)
          is `true`.
  - name: /config/alert/reporter/web/password
    description: |
      The password to be provided to the web server for authentication
      purposes.

      This resource is write-only
  - name: /config/alert/reporter/web/service
    description: >
      The name of the alert service provider to use for reporting

      alerts.


      To set this to a non-empty value please use the [service

      activation command](/webapi/4.6/openapi/cmd/cmdactivatepost) since that
      ensures the

      service provider knows to expect alerts from this meter.  The body

      of the activation request should contain member `service` set to

      the string `alert` and `provider` set to name of the desired

      service provider.
  - name: /config/alert/reporter/web/uri
    description: >
      The URI of the web server to use for reporting alerts.


      This resource is available only if

      [/config/alert/reporter/web/service](/webapi/4.6/openapi/configalertreporterwebservice)

      is an empty string.
  - name: /config/alert/reporter/web/user
    description: >
      The user name to provide to the web server for authentication

      purposes.  If this string is not empty, the user name and the

      password are both sent to the web server using HTTP Basic

      authorization.  For security reasons, this should only be used

      when connecting to the server via an encrypted connection (https).


      This resource is available only if

      [/config/alert/reporter/web/service](/webapi/4.6/openapi/configalertreporterwebservice)

      is an empty string.
  - name: /config/alert/sys-prio
    description: |
      The priority of each system-generated alert.
      [/sys/alert](/webapi/4.6/openapi/sysalert) provides a description of these
      alerts.
  - name: /config/alert/sys-prio/{idx}
    description: |
      The priority of this system alert.
  - name: /config/bacnet
    description: |
      The [BACnet](https://bacnet.org/) configuration.
  - name: /config/bacnet/server
    description: |
      The [BACnet](https://bacnet.org/) server configuration.
  - name: /config/bacnet/server/bip
    description: |
      The [BACnet](https://bacnet.org/) over
      [IPv4](https://en.wikipedia.org/wiki/Internet_Protocol_version_4)
      configuration.
  - name: /config/bacnet/server/bip/port
    description: >
      The IPv4 port number used by the server when `bip` is enabled in

      [/config/bacnet/server/enable](/webapi/4.6/openapi/configbacnetserverenable).

      The default value is 0xBAC0 (47808).
  - name: /config/bacnet/server/enable
    description: |
      The list of BACnet protocols that are enabled.  An empty list
      indicates that the BACnet server is disabled.  The meter is
      currently restricted to supporting a single protocol at a time, so
      this array may have at most one element.
  - name: /config/bacnet/server/enable/{idx}
    description: |
      The name of an enabled BACnet protocol.  Possible values are:

        * `ethernet`: BACnet over raw Ethernet.

        * `bip`: BACnet over the UDP/IP.

        * `mstp`: BACnet over MS/TP (RS-485).
  - name: /config/bacnet/server/epoch-relative
    description: >
      If true, the BACnet server reports cumulative values relative to

      the [meter epoch](/webapi/4.6/openapi/configdbepoch).  If false, raw
      absolute

      values are reported relative to when the meter was manufactured.
  - name: /config/bacnet/server/id
    description: |
      The object id of the BACnet server.
  - name: /config/bacnet/server/mstp
    description: >
      The BACnet over MS/TP configuration.  This is used only if the

      `mstp` protocol is
      [enabled](/webapi/4.6/openapi/configbacnetserverenable).
  - name: /config/bacnet/server/mstp/mac
    description: |
      The MS/TP address of the meter's BACnet server.
  - name: /config/bacnet/server/mstp/max-mac
    description: |
      The maximum address used by any device connected to the same MS/TP
      network as this meter.  A value of 127 is safe, but setting it to
      the lowest address in use significantly increases MS/TP
      performance.
  - name: /config/bacnet/server/mstp/port
    description: >
      The [serial-port](/webapi/4.6/openapi/glossary#section/Serial-Ports) to
      use for the MS/TP

      protocol.
  - name: /config/db
    description: |
      The database configuration.
  - name: /config/db/epoch
    description: >
      The time when the meter started recording data.  This is a decimal

      [Unix timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp)
      string.


      The relevance of this resource is that other services in this API

      by default return accumulated register values relative to this

      time so that, at the time of the epoch, they all read 0.  Changing

      this value therefore changes the values reported by those

      services.  Similarly, user interfaces that use this API generally

      do not present data before the epoch, effectively providing a

      limit to the history visible to the user.


      Writing this resource does not change the data stored in the

      database.  In other words, the epoch generally can freely be moved

      forward or backward in time.  The only constraint is that the new

      epoch does have to be within the time range covered by the

      database.  If a future time is specified, it will automatically be

      capped to the time of the most recent row in the database.  If a

      time is specified that is older than the oldest row in the

      database, an error object is returned.  If this error occurs,

      check the device time ([/sys/time](/webapi/4.6/openapi/systime)) and
      database

      configuration ([/sys/db](/webapi/4.6/openapi/sysdb)) to confirm that they
      have

      the expected values.
  - name: /config/display
    description: |
      The display (LCD) configuration of the meter.
  - name: /config/display/backlight
    description: |
      The backlight configuration of the display.
  - name: /config/display/backlight/brightness
    description: |
      The brightness of the backlight.  Zero is darkest (backlight off),
      255 is the brightest.
  - name: /config/display/backlight/duration
    description: |
      The number of seconds the backlight should remain on after the
      last activation of the display navigation buttons.  Zero means the
      backlight is always off.  The special value -1 indicates that the
      backlight remains on at all times.
  - name: /config/display/contrast
    description: |
      The LCD contrast Zero means no contrast (display is blank), 127
      means maximum contrast (display is all black).  A value of around
      65 usually provides a good contrast.
  - name: /config/display/fontset
    description: |
      The fontset to use for the display.  Possible values are:

        * `small`: Smaller than the `normal` fontset, this is a lower
          quality fontset that can fit more text on the display.

        * `normal`: This fontset provides a good tradeoff between font
          quality and the amount of text that can fit on the display.
          This should work well for languages with relatively simple
          characters, such as English or French.

        * `large`: This fontset should work well for languages with more
          complex characters such as Korean or Chinese.

      **Note** The value of this resource needs to be localized
      (translated) before presenting it to a user.
  - name: /config/display/orientation
    description: |
      The angle in degrees by which the orientation of the display
      should be rotated in the counterclockwise direction.  An angle of
      0 degree results in the display being aligned with the label on
      the meter.  The value of this resource is rounded to an integer
      multiple of 90 degrees.
  - name: /config/display/screen
    description: |
      Screen configurations.  At this time, only the registers screen
      is configurable.
  - name: /config/display/screen/registers
    description: |
      The configuration of the registers screen - a screen that cycles
      through a list of registers, displaying their values.
  - name: /config/display/screen/registers/{name}
    description: |
      Specifies how the named register is to be displayed.
      The following characters may appear in this string:

        * `i`: The instantaneous (rate of change) value of the register
          should be displayed.

        * `c`: The accumulated (cumulative) value of the register should
        be displayed.

      Note that an empty string imples that the register is not
      displayed at all

      For the special keyword `.default`, this establishes how registers
      should be displayed that are not mentioned otherwise.
  - name: /config/language_code
    description: |
      The code of the preferred language for the meter.  When the meter
      needs to generate a message (e.g., as a result of an alert
      triggering), it will generate the message in the language selected
      by this code whenever possible.  The code should be in a format
      acceptable to the
      [`setlocale()`](https://linux.die.net/man/3/setlocale) function.
      Language codes currently supported include:

        * `de`: German.

        * `en`: US English (defaults to 12-hour clock and imperial units).

        * `en_GB`: British English (defaults to 24-hour clock and metric units).

        * `es`: Spanish.

        * `fr`: French.

        * `he`: Hebrew.

        * `it`: Italian.

        * `ko`: Korean.

        * `pl`: Polish.

        * `zh_Hans`: Simplified Chinese (Mandarin).

        * `zh_Hant`: Traditional Chinese (Cantonese).

      See [eGauge Internationalization
      Instructions](https://www.egauge.net/i18n/) for information on
      adding other languages or improving an existing translation.

      **Note** When accessing the meter from a web browser, the value of
      this resource has normally no effect as the user interface is
      presented in the language selected by the browser.
  - name: /config/local
    description: |
      The configuration of directly attached sensors.
  - name: /config/local/gain
    description: |
      The amplifier gain to use for the local sensor inputs (`S1` and
      up).  All meters support the value `normal`.  Model EG4*xxx* meters
      also support the value `high`. This gain increases the input gain
      to approximately ten times of the normal gain.  That is, the
      sensors are approximately 10 times more sensitive than normal, at
      the expense of having a 10 times smaller range.
  - name: /config/local/sensor
    description: |
      The sensor configurations.
  - name: /config/local/sensor/{name}
    description: |
      The sensor configuration.
  - name: /config/local/sensor/{name}/channel
    description: |
      The A/D converter channel configuration of the named sensor.
  - name: /config/local/sensor/{name}/channel/bias
    description: |
      The bias value (offset) to be added when converting an A/D
      converter sample to a physical quantity.
  - name: /config/local/sensor/{name}/channel/mode
    description: |
      The channel's acquisition mode.  Possible values are:

        * `integrate`: The sample values are integrated over time.

        * `normal`: The sensor is operating in normal mode.

        * `off`: The sensor is not in use.
  - name: /config/local/sensor/{name}/channel/scale
    description: |
      The scale value by which an A/D converter sample is to be
      divided to convert a sample to a physical quantity (the bias
      value is added to the sample before the scale is applied).
  - name: /config/local/sensor/{name}/error
    description: |
      The attached sensor's relative output error (ratio error) in
      percent. For example, a value of 2.5 would indicate that the
      sensor is reading 2.5% higher than nominal. This value is ignored
      if member `model` is `CTid`.
  - name: /config/local/sensor/{name}/model
    description: |
      The model name of the attached sensor. If this is `CTid`, a
      CTid®-enabled sensor is attached and the [/ctid](/webapi/4.6/openapi/ctid)
      service should be used to obtain details about the attached
      sensor.
  - name: /config/local/sensor/{name}/phase
    description: |
      The phase (timing) adjustment required by the attached sensor.
      This value is ignored if member `model` is `CTid`.

      The format of this string is a colon-separated list of phase- and
      amplitude-level pairs of the form `p@l`, where `p` is the
      phase-adjustment in degrees at 60Hz, and `l` is a percentage of
      the sensor's full scale value.  For example, for a 100A current
      sensor, the phase string `1@1:0.75@50` would indicate that the
      phase needs to be adjusted by 1 degree at 1A and by 0.75 degrees
      at 50A.
  - name: /config/local/update-interval
    description: |
      The interval in milliseconds between measurement updates.  The
      default is 1000ms (one update per second) but some meters support
      smaller values.  The rate of change values are averaged over this
      period of time.
  - name: /config/location
    description: |
      The geographic location of the meter.
  - name: /config/location/latitude
    description: |
      The latitude of the meter's location in degrees.  Positive values
      are north of the equator, negative values south of it.
  - name: /config/location/longitude
    description: |
      The longitude of the meter's location in degrees.  Positive values
      are east of the prime meridian, negative values are west of it.
  - name: /config/log
    description: |
      The log configuration.
  - name: /config/log/system
    description: |
      The system log configuration.
  - name: /config/log/system/size
    description: |
      The size of the system log buffer in bytes.  When writing this
      value, it is rounded up to the nearest kilobyte boundary.  A size
      of 0 disables the system log.  Otherwise, the size is rounded up
      to a minimum of 4KiB.
  - name: /config/lua
    description: |
      Lua scripting configuration.
  - name: /config/lua/script
    description: |
      Lua scripts.
  - name: /config/lua/script/alertd
    description: |
      The Lua script loaded by alert reporting daemon.  This script can
      be used to define helper functions that can then be called from
      the alert conditions.

      If loading this script takes longer than 15 seconds or evaluating
      any custom alert condition takes longer than 60 seconds, an alert
      is raised.
  - name: /config/lua/script/tariff
    description: >
      The Lua script used to calculate energy cost.  This script can be

      modified only if [server-storage](/webapi/4.6/openapi/configvar) variable

      `global.billing.tariff_uri` is empty or unset.


      If loading this script takes longer than 15 seconds or evaluating

      the register formulas takes longer than half the

      [update-interval](/webapi/4.6/openapi/configlocalupdate-interval), an
      alert is

      raised.
  - name: /config/lua/script/teamd
    description: >
      The Lua script loaded by the register calculator.  This script can

      be used to define helper functions that can then be called from

      register formulas.


      If loading this script takes longer than 15 seconds or evaluating

      the register formulas takes longer than half the

      [update-interval](/webapi/4.6/openapi/configlocalupdate-interval), an
      alert is

      raised.
  - name: /config/lua/ctrld
    description: |
      The control scripts.  Control scripts generally run indefinitely.
      The more control scripts exist, the slower they will execute.  If
      a control script voluntarily terminates execution, it is restarted
      automatically after five seconds.  If a control script is updated,
      its execution is automatically restarted.
  - name: /config/lua/ctrld/{script}
    description: |
      The control script.
  - name: /config/modbus
    description: |
      [Modbus](https://www.modbus.org/)-related configurations.
  - name: /config/modbus/client
    description: |
      Modbus client configuration.  This is used by the meter to
      communicate with other Modbus devices.
  - name: /config/modbus/client/map
    description: |
      User-defined Modbus address maps.  The builtin, read-only system
      maps are available at
      [/sys/modbus/client/map](/webapi/4.6/openapi/sysmodbusclientmap).  If a
      user-defined map with the same name as a system map exists, it
      will shadow (mask) the system map with them same name.
  - name: /config/modbus/client/map/{name}
    description: |
      Modbus map consisting of a list of register definitions and a set
      of options.
  - name: /config/modbus/client/map/{name}/option
    description: |
      A set of options.  The meter currently supports the following
      options:

        * `default-modbus-addr`: The Modbus unit-number to use by
        default.  This must be a decimal string.  For example: `1`.

        * `default-serial-params`: The default serial parameters to use
        when the remote device is connected via a serial port
        (Modbus/RTU).  This must be a string.  For example: `9600/8n1`
        for 9600 baud, 8 databits, no parity, 1 stop bit.

        * `default-tcp-port`: The default TCP port number to use when
        the remote device is connected via Modbus/TCP.  This must be a
        decimal string.  For example: `6001`.
  - name: /config/modbus/client/map/{name}/option/{opt}
    description: |
      The value of the Modbus map option.
  - name: /config/modbus/client/map/{name}/reg
    description: |
      A list of Modbus register definitions.
  - name: /config/modbus/client/map/{name}/reg/{idx}
    description: |
      A Modbus register definition.
  - name: /config/modbus/client/map/{name}/reg/{idx}/name
    description: |
      The name of the register.  The user can choose this name freely so
      long as each register within a map has a unique name.
  - name: /config/modbus/client/map/{name}/reg/{idx}/addr
    description: |
      The Modbus address of the register.
  - name: /config/modbus/client/map/{name}/reg/{idx}/type
    description: |
      The type of the register value.  This may be one of the following:

        * `bit`: One-bit value (a coil, in Modbus terminology).
        * `s16`: Signed 16-bit integer.
        * `u16`: Unsigned 16-bit integer.
        * `s32`: Signed 32-bit integer.
        * `u32`: Unsigned 32-bit integer.
        * `s32l`: Signed 32-bit integer, word-swapped.
        * `u32l`: Unsigned 32-bit integer, word-swapped.
        * `s64`: Signed 64-bit integer.
        * `u64`: Unsigned 64-bit integer.
        * `float16`: IEEE-754 half-precision float.
        * `float16l`: IEEE-754 half-precision floating point,
          little-endian (byte-swapped).
        * `float`: IEEE-754 single-precision float.
        * `floatl`: IEEE-754 single-precision float, word-swapped.
        * `double`: IEEE-754 double-precision float.
  - name: /config/modbus/client/map/{name}/reg/{idx}/kind
    description: |
      The kind of the register. Possible values are:

        * `analog`: The value is continuous (the average of two values is
          meaningful).

        * `enum`: The value is discrete (the average of two values is not
          meaningful).  An example for this would be a numeric error code.

        * `bitset`: Each bit in the value is a discrete on/off value.
        An example for this would be a set of error flags.
  - name: /config/modbus/client/map/{name}/reg/{idx}/unit
    description: |
      For register of the `analog` kind, this defines the physical unit of
      the register value.  This must be one of the following:

        * `#3`: Unit-less number with 3 decimal digits of precision.
        * `%`: Percentage.
        * `A`: Electric current in amperes.
        * `Ah`: Electric charge in ampere-hours.
        * `As`: Electric charge in ampere-seconds.
        * `C`: Temperature in degree celsius.
        * `Degrees`: Angle in degrees.
        * `Hz`: Frequency in hertz.
        * `Ohm`: Resistance in ohm.
        * `Pa`: Pressure in pascals.
        * `Pct`: Percentage.
        * `RH`: Relative humidity.
        * `Tmd`: Time in days.
        * `Tmh`: Time in hours.
        * `Tms`: Time in seconds.
        * `VA`: Apparent power in volt-amperes.
        * `VAh`: Apparent energy in volt-ampere-hours.
        * `V`: Electric potential in volts.
        * `W/m2`: Irradiance in watts-per-square-meter.
        * `W/m^2`: Irradiance in watts-per-square-meter.
        * `W`: Power in watts.
        * `Wh`: Energy in watt-hours.
        * `degC`: Temperature in degree celsius.
        * `deg`: Angle in degrees.
        * `g`: Mass in grams.
        * `hPa`: Pressure in hecto-pascals.
        * `h`: Time in hours.
        * `kAh`: Electric charge in kilo-ampere-hours.
        * `kO`: Resistance in kilo-ohms.
        * `kPa`: Pressure in kilo-pascals.
        * `kVAh`: Apparent energy in kilo-volt-ampere-hours.
        * `kW`: Power in kilo-watts.
        * `kWh`: Energy in kilo-watt-hours.
        * `kg`: Mass in kilo-grams.
        * `kvarh`: Reactive energy in kilo-volt-ampere-hours.
        * `m/s`: Speed in meters-per-second.
        * `m3/s`: Volume flow in cubic-meters-per-second.
        * `m3`: Volume in cubic-meters.
        * `mA`: Electric current in milli-amperes.
        * `mAh`: Electric charge in milli-ampere-hours.
        * `mSecs`: Time in milli-seconds.
        * `mV`: Electric potential in milli-volts.
        * `mV`: Electric potential in milli-volts.
        * `m^3/s`: Volume flow in cubic-meters-per-second.
        * `m^3`: Volume in cubic-meters.
        * `meters`: Distance in meters.
        * `mm`: Distance in milli-meters.
        * `mps`: Speed in meters-per-second.
        * `ms`: Time in milli-seconds.
        * `ohms`: Resistance in ohm.
        * `ppm`: Parts-per-million.
        * `s`: Time in seconds.
        * `secs`: Time in seconds.
        * `var`: Reactive power in volt-ampere.
        * `varh`: Reactive energy in volt-ampere-hours.
        * `°C`: Temperature in degree celsius.
  - name: /config/modbus/client/map/{name}/reg/{idx}/offset
    description: |
      An offset value that is used to convert the Modbus register value
      to a value in the specified physical unit.  Specifically, when the
      Modbus value of the register is *reg*, then corresponding physical
      value *phys* is calculated as:

        > *phys* = (*reg* + `offset`) * `scale`

      where `offset` is the value defined here and `scale` is
      the value defined for member `scale`.
  - name: /config/modbus/client/map/{name}/reg/{idx}/scale
    description: |
      A scale value that is used to convert the Modbus register value
      to a value in the specified physical unit.  Specifically, when the
      Modbus value of the register is *reg*, then corresponding physical
      value *phys* is calculated as:

        > *phys* = (*reg* + `offset`) * `scale`

      where `scale` is the value defined here and `offset` is
      the value defined for member `offset`.
  - name: /config/modbus/client/map/{name}/reg/{idx}/access
    description: |
      The access-mode of the register.  It must be one of:
        * `ro`: read-only
        * `rw`: read-write
  - name: /config/modbus/server
    description: |
      Modbus server configuration.  This configures the server-side of
      the meter.  That is, it defines how the meter provides its own
      data to other Modbus devices.
  - name: /config/modbus/server/enable
    description: |
      The list of protocols (if any) that are enabled in the Modbus
      server. An empty list indicates that the Modbus server is
      disabled.

      Valid protocol names are:

        * `rtu`: The
          [Modbus/RTU](https://modbus.org/docs/Modbus_over_serial_line_V1_02.pdf)
          protocol.

        * `tcp`: The
          [Modbus/TCP](https://modbus.org/docs/Modbus_Messaging_Implementation_Guide_V1_0b.pdf)
          protocol.
  - name: /config/modbus/server/enable/{idx}
    description: |
      The name of a protocol that is enabled.
  - name: /config/modbus/server/id
    description: |
      The address of the meter on the Modbus/RTU network. Every Modbus
      device must have a unique address. The default unit id is 1.

      **Note** Address 0 is the broadcast address and addresses 248..255
      are reserved for future use.
  - name: /config/modbus/server/rtu
    description: |
      The RTU protocol configuration.
  - name: /config/modbus/server/rtu/port
    description: >
      The [serial-port](/webapi/4.6/openapi/glossary#section/Serial-Ports) to
      use for the RTU

      protocol.
  - name: /config/modbus/server/tcp
    description: |
      The TCP protocol configuration.
  - name: /config/modbus/server/tcp/port
    description: |
      The IP port of the Modbus server.  The default value is 502.
  - name: /config/net
    description: |
      The network configuration.

      The current state of the network is available at
      [/sys/net](/webapi/4.6/openapi/sysnet).
  - name: /config/net/ethernet
    description: |
      The Ethernet configuration of the meter.
  - name: /config/net/ethernet/watchdog
    description: |
      Whether or not the Ethernet watchdog is enabled.  If enabled, the
      watchdog will reset the Ethernet's PHY chip and/or reload the
      Ethernet driver if it appears that the Ethernet link was lost.

      This should normally be set to `true`.
  - name: /config/net/goproxy
    description: |
      The Go proxy configuration of the meter.
  - name: /config/net/goproxy/enable
    description: |
      If `true`, the meter will connect to the Go proxy server.
  - name: /config/net/goproxy/server
    description: |
      The hostname of the Go proxy server.
  - name: /config/net/homeplug
    description: |
      HomePlug configuration.  This is used only by devices with
      built-in HomePlug power-line communication (egauge2, EG3*x*10 and
      EG41*xx*).
  - name: /config/net/homeplug/region
    description: |
      The jurisdiction the meter is operating under.  The possible values are:

        * `CE`: European Union region.
        * `NA`: North American region.

      This resource controls the frequency bands used by the HomePlug
      communications interface that is built into some meters.  For
      those meters, this resource must be set to the correct geographic
      region to ensure compliance with local laws.
  - name: /config/net/hostname
    description: |
      The hostname of the meter.  Must consist of ASCII letters, digits,
      and dashes only.
  - name: /config/net/http
    description: >
      Web (HTTP) related configurations.


      Modification requests (`PUT`, `POST`, and `DELETE`) to this

      resource are not executed

      [transactionally](/webapi/4.6/openapi/glossary#section/Non-Transactional-Updates).
  - name: /config/net/http/certificate
    description: >
      The certificate used by the web server to identify itself over

      HTTPS connections.


      This resource is write-only.


      The string is in [PEM

      format](https://en.wikipedia.org/wiki/X.509#Certificate_filename_extensions)

      and must contain both a private key as well as the matching

      certificate chain.
  - name: /config/net/http/client
    description: |
      Configuration for meter-initiated HTTP connections.
  - name: /config/net/http/client/insecure
    description: |
      If `true`, meter-initiated secure HTTPS connections will accept
      servers whose certificate cannot be validated by the meter.  This
      should normally be set to `false`.
  - name: /config/net/http/cgi-bin
    description: |
      Controls access to CGI-BIN programs.  The following values are supported:

        * `disable`: Completely disable access to CGI-BIN programs.
        **Warning** This will render the classic user-interface of the
        meter inoperable.

        * `user-required`: Allow authenticated users to access CGI-BIN programs.

        * `user-optional`: Allow even unauthenticated users to access
          CGI-BIN programs that are not considered security critical.
  - name: /config/net/ipv4
    description: |
      The Internet Protocol v4 ([IPv4](https://www.rfc-editor.org/rfc/rfc791))
      configuration.
  - name: /config/net/ipv4/dhcp
    description: |
      Whether or not to use [DHCP](https://www.ietf.org/rfc/rfc2131.txt)
      to automatically provision the IPv4 address.  If `true`, DHCP is
      enabled. If `false`, the manually configured IPv4 settings are
      used.
  - name: /config/net/ipv4/address
    description: |
      An IPv4 address in dotted decimal notation.
  - name: /config/net/ipv4/broadcast
    description: |
      An IPv4 broadcast address in dotted decimal notation.
  - name: /config/net/ipv4/netmask
    description: |
      The address of the IPv4 gateway in dotted decimal notation.
  - name: /config/net/ipv4/network
    description: |
      The IPv4 network mask in dotted decimal notation.
  - name: /config/net/ipv4/gateway
    description: |
      The IPv4 network number in dotted decimal notation.
  - name: /config/net/nameserver
    description: |
      The name server ([DNS](https://www.ietf.org/rfc/rfc1035.txt))
      configuration.
  - name: /config/net/nameserver/server
    description: |
      The IP addresses to use as name servers. If multiple name servers
      are specified, they are queried in the order in which they appear
      here.
  - name: /config/net/nameserver/server/{idx}
    description: |
      The IPv4 or IPv6 address a DNS server.
  - name: /config/net/ntp
    description: |
      The Network Time Protocol
      ([NTP](https://www.rfc-editor.org/rfc/rfc5905)) configuration.
  - name: /config/net/ntp/server
    description: |
      The NTP servers to use.
  - name: /config/net/ntp/server/{idx}
    description: |
      The hostname or an IPv4 or IPv6 address of an NTP server.
  - name: /config/net/option
    description: |
      Options that have a system-wide effect on the network services.
  - name: /config/net/option/secure_only
    description: >
      If `true`, network services which do not encrypt data are

      disabled.  At present, turning on this option disables the

      following services:

        * The web-server's plain HTTP service (port 80).

        * The service that provides the meter data via
          [link-type](/webapi/4.6/openapi/glossary#section/Link-Types) `udp`.  Thus, it other
          meters will not be able to read this meters data via this
          link type anymore.

      This resource is **not** updated

      [transactionally](/webapi/4.6/openapi/glossary#section/Non-Transactional-Updates)
      and after

      changing its value, the web server will be unavailable

      temporarily.
  - name: /config/net/proxy
    description: |
      The proxy configuration of the meter.
  - name: /config/net/proxy/enable
    description: |
      If `true`, the meter will connect to the proxy server.
  - name: /config/net/proxy/server
    description: |
      The hostname of the proxy server.
  - name: /config/net/ptp
    description: |
      The Precision Time Protocol
      ([PTP](https://www.rfc-editor.org/rfc/rfc8173.html))
      configuration.  NTP should normally be disabled when using this
      protocol. This can be achieved by deleting resource
      [/config/net/ntp/server](/webapi/4.6/openapi/confignetntpserver).

      Only model EG4*xxx* or newer meters support this resource.

      The following properties of the PTP service are currently fixed:

        * **Update method**: Two Step
        * **Delay Mechanism**: End to End
        * **Domain Number**: 0
        * **Priority 1**: 128
        * **Priority 2**: 128
        * **Transmission Method**: Multicast
        * **Log Announce Interval**: 1 (2 seconds)
        * **Log Sync Interval**: 0 (1 second)
        * **Log Min Delay Request Interval**: 0 (1 second)
        * **Log Min PDelay Request Interval**: 0 (1 second)
        * **PTP Destination MAC**: 01:1B:19:00:00:00
        * **PTP Destination MAC**: 01:80:C2:00:00:0E
        * **Transport Specific Field**: 0
  - name: /config/net/ptp/client_only
    description: |
      If `true`, the meter will only act as a client.  Otherwise, the
      meter will also act as a server if the PTP algorithm selects it as
      the best clock.
  - name: /config/net/ptp/interface
    description: |
      The network interface configurations for PTP. If empty, PTP is disabled.
  - name: /config/net/ptp/interface/{if}
    description: |
      The configuration to use for the named interface.
  - name: /config/net/ptp/interface/{if}/transport
    description: |
      The network transport to use for the interface. Possible values are:

        * `UDPv4`: UDP over IPv4.
        * `UDPv6`: UDP over IPv6.
        * `L2`: Layer-2 transport (e.g., Ethernet).
  - name: /config/net/ptp/interface/{if}/udp_ttl
    description: |
      The Time-to-live (TTL) value for IPv4 multicast messages and the
      hop limit for IPv6 multicast messages.  This value is ignored
      unless `transport` is either `UDPv4` or `UDPv6`.  The default
      is 1, which restricts the messages to the same subnet.
  - name: /config/push
    description: |
      The push service configuration.  This service is used to share the
      meter data with a remote web server.  The data is sent via an HTTP
      `POST` request.
  - name: /config/push/interval
    description: |
      The interval in seconds between push updates.  A value of 60, for
      example, would cause the push service to attempt to send data to
      the remote web server once a minute.
  - name: /config/push/options
    description: >
      The options controlling how data is pushed to the remote web

      server.  Multiple options must be separated by commas (`,`).


      This resource is available only if

      [/config/push/service](/webapi/4.6/openapi/configpushservice) is an empty
      string.


      Available options are:

        * `day`: Data will be pushed with day granularity (at most one
          row of data per day).

        * `deflate`: Use the deflate algorithm to compress the push
          data.  This adds HTTP header `Content-Encoding: deflate` to
          the `POST` request.

        * `epoch`: Report the register values relative to the
          [epoch](/webapi/4.6/openapi/configdbepoch).  Without this option, absolute
          values are sent which start at zero at the time the meter
          database was created.

        * `gzip`: Use the gzip algorithm to compress the push data.
          This adds HTTP header `Content-Encoding: gzip` to the `POST`
          request.

        * `json`: Push data in JSON format instead of XML.  The JSON
          format is the same as the one returned by the
          [/register](/webapi/4.6/openapi/register) service, except that the top-level
          `ts` section and the `idx` members in the `registers` section
          are omitted since they are not meaningful for push data.

        * `hour`: Data will be pushed with hour granularity (at most one
          row of data per hour).

        * `max=n`: Pushed at most `n` rows in a single `POST` request.
          This limit must be in the range from 1 to 900.

        * `msec`: Data will be pushed with millisecond granularity (at
          most one row of data per millisecond).

        * `old_first`: Push the oldest data row first.  By default, the
          youngest data row is pushed first.

        * `sec`: Data will be pushed with second granularity (at most
          one row of data per second).

        * `secure`: If this option is present, secure connections to the
          remote web server are allowed only if the server possesses a
          certificate that the meter can verify as authentic.  Without
          this option, the server's certificate is not verified.  This
          option is ignored if
          [/config/net/http/client/insecure](/webapi/4.6/openapi/confignethttpclientinsecure)
          is `true`.

        * `skip=n`: Push only every `(n+1)`-th data row.  For example,
          with hour granularity and skip=2, data rows would be spaced
          apart by (at least) 3 hours.  They may be spaced apart more
          depending on the rows that are available in the database.

        * `totals`: Push not just the physical registers but also the
          virtual registers.

      By default, data is pushed with minute granularity (at most one

      row of data per minute).
  - name: /config/push/password
    description: >
      The password to be provided to the remote web server for

      authentication purposes.  The password is submitted to the remote

      web server as part of a

      [Basic](https://www.rfc-editor.org/rfc/rfc7617) HTTP

      `Authorization` header.  For this reason, a password should only

      be specified when using a secure connection (`https` scheme).


      This resource is available only if

      [/config/push/web/service](/webapi/4.6/openapi/configpushservice) is an
      empty

      string.


      This resource is write-only.
  - name: /config/push/service
    description: >
      The name of a push service provider to shared data with.


      To set this to a non-empty value please use the [service

      activation command](/webapi/4.6/openapi/cmd/cmdactivatepost) since that
      ensures the

      push provider knows to expect data from this meter.  The body of

      the activation request should contain member `service` set to the

      string `push` and `provider` set to name of the desired push

      service provider.
  - name: /config/push/uri
    description: >
      The URI of the web server to share data with.  This resource is

      available only if
      [/config/push/service](/webapi/4.6/openapi/configpushservice)

      is an empty string.
  - name: /config/push/user
    description: >
      The user name to provide to the web server for authentication

      purposes.  If this string is not empty, the user name and the

      password are both sent to the web server as part of a

      [Basic](https://www.rfc-editor.org/rfc/rfc7617) HTTP

      `Authorization` header.


      This resource is available only if

      [/config/push/web/service](/webapi/4.6/openapi/configpushservice) is an
      empty

      string.
  - name: /config/register
    description: |
      The register configuration of the meter.
  - name: /config/register/physical
    description: |
      The physical register configuration of the meter.

      A register is a named measurement whose values are recorded in a
      database at discrete points in time (the database rows).  There is
      an upper limit on the number of physical registers that can be
      supported by the meter.  Depending on meter model and database
      configuration, typically, 16 to 64 phycial registers are
      available. The actual limit is available at
      [/sys/db/max-registers](/webapi/4.6/openapi/sysdbmax-registers).
  - name: /config/register/physical/{reg}
    description: |
      The configuration of the named physical register.
  - name: /config/register/physical/{reg}/dev
    description: |
      The name of the device that is the source of the register values.
      The name `local` indicates that the meter itself measures or
      calculates the value.  Any other value is a reference to the
      remote device of the same name defined at
      [/config/remote](/webapi/4.6/openapi/configremote).
  - name: /config/register/physical/{reg}/did
    description: |
      The column number in which the database stores the register value.
      Each physical register has a unique column number.  If a register
      is renamed, this number remains the same.  On the other hand, if a
      register is deleted and then another one is added back, the new
      one may get assigned the column number of the old, deleted
      register.

      Each physical register must have a unique value.  Invalid values
      automatically get remapped to an unused index.
  - name: /config/register/physical/{reg}/type
    description: >
      The [type code](/webapi/4.6/openapi/glossary#section/Type-Codes) of the
      register.
  - name: /config/register/physical/{reg}/value
    description: |
      Defines the how the register value is obtained or calculated.  For
      register where `dev` is `local`, this is one of:

        * A [local](/webapi/4.6/openapi/local) sensor name: `L1`-`L3`, `Ldc`, or
          `S1`-`S30`.

        * A power formula written as a sum of products of sensors.  For
          example, `S1*L1+S2*L2` would indicate that the register value
          is calculated as the real power measured by current sensor
          `S1` and line-voltage `L1` plus the real power measured by
          current sensor `S2` and line-voltage `L2`.  Note that even
          though the real power calculation is indicated by an asterisk,
          it is actually calculated by averaging the product of the
          instantaneous current and voltage samples, not by multiplying
          the RMS voltages of `S1` and `L1`.  The first factor of each
          real power calculation may also be negated.  For example,
          `-S1*L2` would yield the negative of the real power calculated
          by `S1*L2`.

        * An equal sign (`=`) followed by an
          [eScript](/webapi/4.6/openapi/glossary#section/eScript) expression.  The register
          value is obtained by evaluating the eScript expression once
          per [update interval](/webapi/4.6/openapi/configlocalupdate-interval).
          Non-finite numbers (e.g., not-a-number, or infinities) are
          silently converted to 0 before recording the register value.

      For registers where `dev` is not `local`, so-called _remote_
      registers, the value is interpreted in a way that is specific to
      the particular remote device in use.  Commonly, the value is some
      sort of register name or identifier.  For example, for Modbus
      remote devices, the value is a register name defined by the
      [Modbus map](/webapi/4.6/openapi/sysmodbusclientmap) of the remote device.
  - name: /config/register/virtual
    description: |
      The virtual register configuration of the meter.

      Virtual registers are calculated from physical register values and
      do not take up space in the database.  As such there is no a
      priori limit on the number of virtual registers that can be
      configured on a meter.
  - name: /config/register/virtual/{reg}
    description: |
      The virtual register configuration.

      Several virtual register names are well-known and provide special
      semantics:

        * `use`: Intended to represent total power consumption at a
          site.  It is generally presented with the name `Usage` in
          English and the equivalent translation in other languages
          (subject to availablility).

        * `gen`: Intended to represent total power generation at a site,
          e.g., from local solar or wind power generation facilities.
          It is generally presented with the name `Generation` in
          English and the equivalent translation in other languages
          (subject to availability).

        * `bat`: Intended to represent total power coming from on-site
          batteries (if positive) or power going to on-site batteries
          for charging (if negative).  It is generally presented with
          the name `Battery` in English and the equivalent translation
          in other languages (subject to availability).

        * `bat_el`: Intended to represent the amount of _energy left_ in
          on-site batteries.  The value of this register should be equal
          to the sum of each battery's state of charge times the
          battery's capacity (in joules).  It is generally presented
          with the name `Battery left` in English and the equivalent
          translation in other languages (subject to availability).
  - name: /config/register/virtual/{reg}/value
    description: |
      The formula to calculate the value of this virtual register.  It
      consists of a list of physical register names whose values are to
      be added or subtracted.
  - name: /config/register/virtual/{reg}/value/{idx}
    description: |
      An additive term of the virtual register formula.
  - name: /config/register/virtual/{reg}/value/{idx}/op
    description: |
      The operation that calculates the value of this addend.

      Possible values are:

        * `+`: The physical register value is to be added.

        * `-`: The physical register value is to be subtracted.

        * `+max0`, `-max0`, `+min0`, `-min0`:
        **[Deprecated](/webapi/4.6/openapi/glossary#section/Deprecated)**. These operators do
        not work correctly and remain only to preserve compatibility
        with existing, old, device configurations.  Attempting to write
        these operators with a `PUT` or `POST` request will result in an
        error.  They can only be returned as a result of a `GET` request.
        The intent of these operators was to add (`+max0`, `+min0`) or
        subtract (`-max0`, `-min0`) the maximum of the physical register
        value and 0 (`+max0`, `-max0`) or the minimum of the register value
        and 0 (`+min0`, `-min0`).
  - name: /config/register/virtual/{reg}/value/{idx}/register
    description: |
      The name of the physical register to use in calculating the value
      of this addend.
  - name: /config/remote
    description: |
      The remote device configurations.
  - name: /config/remote/{name}
    description: |
      The configuration of a remote device.
  - name: /config/remote/{name}/address
    description: >
      The address of the remote device.  The meaning of this value

      depends on the
      [link-type](/webapi/4.6/openapi/glossary#section/Link-Types).
  - name: /config/remote/{name}/link_type
    description: >
      The [link-type](/webapi/4.6/openapi/glossary#section/Link-Types) of the
      remote device.
  - name: /config/time
    description: |
      Time related configurations.
  - name: /config/time/zone
    description: |
      The timezone the meter is located in.  The string is interpreted
      as a [Unix
      TZ](https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html)
      string.
  - name: /config/user
    description: >
      The user accounts.


      Each user account has a name, a set of

      [privileges](/webapi/4.6/openapi/glossary#section/User-Privileges), and
      the credentials

      (password) required to log into the account.
  - name: /config/user/{name}
    description: |
      A user configuration (account).
  - name: /config/user/{name}/priv
    description: >
      The list of
      [privileges](/webapi/4.6/openapi/glossary#section/User-Privileges) the
      user possesses.
  - name: /config/user/{name}/priv/{idx}
    description: >
      A [privilege](/webapi/4.6/openapi/glossary#section/User-Privileges) the
      user possesses.
  - name: /config/user/{name}/hash
    description: >
      The [hash](/webapi/4.6/openapi/glossary#section/Password-Hashes) of the
      user's password.

      Writing an empty hash string disables the account.


      This resource is write-only.
  - name: /config/var
    description: >
      Meter variables provide a means to store arbitrary name/value

      pairs on the meter itself.  These variables can be employed by a

      WebAPI user to customize behavior.  For example, the preferred

      currency symbol is stored in a meter variable so that all WebAPI

      users can consistenty display monetary values.


      Any authenticated user can read meter variables but only users who

      have the [privilege to save
      settings](/webapi/4.6/openapi/glossary#section/User-Privileges)

      can create or update them.


      Variable names must be at least one character long and may consist

      of lower- and upper-case ASCII letters, digits, dashes (`-`),

      underscores (`_`), and percent signs (`%`).  Note that when using

      a variable name as part of a URL path, any percent sign must be

      encoded as %25 (25 is the hexadecimal value of the ASCII code of

      `%`).


      For backwards-compatibility, a variable name may also contain a

      single dot (`.`) if it does not appear as the first or last

      character in the name.  When a dot is present, the string before

      the dot is called the _paragraph name_.


      Variable values may contain any UTF-8 points except ASCII control

      characters.


      ## Sections


      Meter variables are organized into _sections_.  Each section has a

      name and contains zero or more variables.  Typically, groups of

      related meter variables are stored together in a single section.

      Variables can be accessed individually or by section.


      For example, the `global` section contains variables that apply to

      the meter in general, such as billing information or the currency

      symbol to use for monetary values.  Other sections are specific to

      particular applications (in the widest sense of the word).  For

      example, the `health` section contains variables that define the

      behavior of the meter's health checker service.


      Section names must be at at least 1 and at most 63 bytes long and

      may consist of lower- and upper-case ASCII letters, digits, dashes

      (`-`), underscores (`_`), and percent signs (`%`).


      ## Well-known Variables


      What distinguishes meter variables from normal configuration

      settings is that the former are generally not used by the meter

      firmware. In other words, meter variables are used primarily by

      users of WebAPI.  There are a few exceptions, however, for the

      `global` section:

        * `billing.interval`: The meter firmware interprets this as the
          length of the demand interval in minutes (see description of
          [/register](/webapi/4.6/openapi/register/registerget) query parameter
          `demand`).

        * `billing.start_day`: The meter firmware interprets this as the
          day of the month on which the utility company reads the
          utility meter.  The assumption is that the meter is read at
          noon on that day.  The value must be a decimal integer string
          in the range from 1-31.  If the billing day number is greater
          than the number of days in a particular month, it is assumed
          that utility meter is read on the last day of that month.

          The meter-firmware uses this, for example, to implement the
          `sob` [time point](/webapi/4.6/openapi/glossary#section/Time-Point-Names).

        * `billing.tariff_uri`: If not an empty string, this is
          interpreted as the URL from which to fetch a [Lua
          script](/webapi/4.6/openapi/glossary#section/Lua-Scripts) that calculates energy cost.
          The meter will periodically poll this URL and download any
          available updates to the script.

        * `default.currency_symbol`: This is interpreted as the symbol
          to use for currency values.  This may be a single Unicode
          symbol such as `$` (Dollar) or `€` (Euro), or it may be a
          multi character string, such as `CHF` for Swiss Franc.  The
          meter firmware uses the value of this variable when outputting
          the unit of monetary values.
  - name: /config/var/{section}
    description: |
      The meter variables in the named section.
  - name: /config/var/{section}/{var}
    description: |
      The value of the named meter variable.  Complex values can be
      stored, e.g., by JSON-encoding them.
  - name: /ctid
    description: >
      This service provides access to the

      [CTid®](https://docs.google.com/document/d/1DuqZYZKKnY83p68u0200WhZsyrrZhRLmeqJLs7fF4Sc/edit?usp=sharing)

      facility built into the EG4*xxx* series meters.  Specifically, it

      enables:


        1) retrieving the CTid® information from a sensor,

        1) flashing the (optional) locator LED on the sensor, and

        1) deleting the stored CTid® information associated with a
        sensor port.

      Note that while scanning or flashing a sensor, normal measurement

      of local sensors is suspended.  It is therefore recommended to use

      this service primarily during device setup.


      All methods other than `GET` required a user with the [save

      right](/webapi/4.6/openapi/auth/authrightsget).


      ## Python Example


      A Python program illustrating the use of this service can be found

      [here](https://bitbucket.org/egauge/python/src/main/egauge/examples/test_ctid.py).

      This program takes advantage of class

      `egauge.webapi.device.CTidInfo` to handle the details of encoding

      the HTTP requests and decoding the responses.
  - name: /ctrl
    description: |
      This service provides a means to control devices.  The devices
      being controlled are usually attached to the meter through a cable
      or wirelessly and are, in that sense, remote.

      Only model EG4*xxx* or newer meters support this service.
  - name: /ctrl/call
    description: |
      This resource is used to issue control calls and to check on
      the status of a previously issued calls.
  - name: /ctrl/device
    description: |
      Provides information about devices that can
      accept control calls.  Each device is described by a set of
      name/value pairs called [device
      attributes](/webapi/4.6/openapi/glossary#section/Device-Attributes).
  - name: /ctrl/interface
    description: |
      The names and descriptions of control interfaces detected by the
      meter.
  - name: /ctrl/interface/{if}
    description: |
      Description of the interface.
  - name: /ctrl/interface/{if}/method
    description: |
      The array of methods provided by this interface.  The methods are
      listed in no particular order.
  - name: /ctrl/interface/{if}/method/{idx}
    description: |
      The description of this method.
  - name: /ctrl/interface/{if}/method/{idx}/name
    description: |
      The name of the method.  The name starts with a letter and consists
      entirely of letters, digits, or underscores.
  - name: /ctrl/interface/{if}/method/{idx}/in
    description: >
      The [DBus type

      signature](https://dbus.freedesktop.org/doc/dbus-specification.html#type-system)

      of the input arguments to the method. An empty string indicates

      that the method accepts no input arguments.
  - name: /ctrl/interface/{if}/method/{idx}/in_names
    description: |
      The names of the input arguments passed to the method.  Each
      argument name is meant to indicate the purpose of the respective
      argument but, other than that, it is arbitrary.  The documentation
      string given by member `doc` may also refer to these names.
      The `doc` member documentation for details.
  - name: /ctrl/interface/{if}/method/{idx}/in_names/{argidx}
    description: |
      The name of this input argument.
  - name: /ctrl/interface/{if}/method/{idx}/out
    description: >
      The [DBus type

      signature](https://dbus.freedesktop.org/doc/dbus-specification.html#type-system)

      of the return value of the method. An empty string indicates that

      the method returns no value.
  - name: /ctrl/interface/{if}/method/{idx}/doc
    description: |
      Description of the purpose and operation of the method. Within
      this string, references to input argument names are enclosed
      within `<arg>` and `</arg>` tags to facilitate highlighting of
      argument names.
  - name: /local
    description: >
      This service provides access to the values directly measured or

      derived from the sensors attached to the meter.  Values obtained

      from other, remote, devices are not accessible through this

      service.  Similarly, only the most recent (current) values are

      available.  Use the [/register](/webapi/4.6/openapi/register) service for

      accessing values stored in the database of the meter.


      Derived values are called *energy* and *apparent energy* and are

      calculated from a pair of sensors. Specifically, energy values are

      calculated by numerically integrating over time the product of two

      sensor values. Similarly, apparent energy is calculated as the

      product of the normal (RMS) values of a pair of sensors.  For

      example, if one sensor value measures an electrical current and

      the other a voltage, these calculate the real electric energy and

      apparent electric energy of the measured current/voltage pair,

      respectively.


      This service guarantees to return an atomic snapshot of the

      measurements as of the time indicated by the timestamp in the

      response.  Various query parameters can be used to select the

      exact data that is to be returned.


      In particular, query parameters `values`, `energy`, `apparent`, or

      `stats` can be used to select which sections to include in

      the response.  If none of these are specified, only the `values`

      section is returned by default.


      Query parameters `rate`, `cumul`, or `type` can be used to select

      the metrics to return for each sensor.  If none of these are

      specified, the `rate` and `type` metrics are returned by default.


      Within the rate and cumulative metrics, query parameters `normal`,

      `mean`, or `freq` select what measurements to return.  If none of

      these are specified, all measurements are returned by default.


      Finally, the `env`, `l`, and `s` query parameters can be used to

      select which sensors to include in the response.  If none of these

      are specified, all sensors are included in the response by

      default.


      ## Python Example


      A Python program illustrating the use of this service can be found

      [here](https://bitbucket.org/egauge/python/src/main/egauge/examples/test_local.py).

      This program takes advantage of class `egauge.webapi.device.Local`

      to handle the details of encoding the HTTP requests and decoding

      the responses.
  - name: /log
    description: |
      Provides access to various logs.  Since logs may contain sensitive
      information, this service is available only to users with the
      `save` privilege (see
      [/auth/rights](/webapi/4.6/openapi/auth/authrightsget)).
  - name: /lua
    description: |
      This service provides access to Lua-script related information.
  - name: /lua/var
    description: |
      The persistent Lua variables.  Such variables are non-volatile.
      That is, their value is preserved across script restarts and
      reboots (power-cycles).  Persistent variables can be created and
      manipulated with the built-in Lua module
      [`persistent`](https://www.egauge.net/support/lua/module/control).
  - name: /lua/var/{name}
    description: |
      A persistent Lua variable.
  - name: /lua/var/{name}/desc
    description: |
      A brief, user-friendly description of the purpose of this
      persistent variable.  This description is set when the persistent
      variable is created and is in the language chosen by the author of
      the Lua script that is created the variable.  The string is,
      therefore, not localized to the user's environment.
  - name: /lua/var/{name}/value
    description: |
      The current value of this persistent variable as a JSON-encoded
      string.

      While it is possible to write this value via the WebAPI, Lua
      scripts generally will also be updating the value as part of their
      execution, so any change in value may be temporary and whether or
      not a WebAPI write is detected by the scripts depends on the
      scripts themselves.
  - name: /providers
    description: |
      This service provides information about various third-party
      providers such as alert service providers, push data service
      providers, tariff information providers, and so on.  Since the
      information depends on third-party sites, a working Internet
      connection is generally required in order for this service to work
      properly.
  - name: /register
    description: >
      This service provides access to both current and past register

      values of the meter.  A register can be thought of as a named

      column in a database that tracks the value of a measurement over

      time.


      The database consists of rows of register values.  Each row has a

      timestamp indicating the time at which the measurements were

      taken.  The maximum numbers of the rows in the database is fixed

      and the rows are managed in a round-robin style.  Typically,

      meters can hold up to the most recent 60 years of rows in the

      database.  Older data is automatically dropped.


      Older data is stored with a coarser granularity than younger data.

      A typical database might store the most recent one year of data

      with 1 minute between rows, the next 9 years with 15 minutes

      between rows, and the next 50 years with 24-hours between rows.

      The actual database configuration of a meter can be found in

      [/sys/db](/webapi/4.6/openapi/sysdb).


      ## Basic Usage


      This most simple use of this service is to fetch the current time

      of the meter.  This is accomplished with `GET /register?reg=none`:

        ```json
          {"ts": "1678475544.123"}
        ```

      Member `ts` returns the time as decimal string.  It is a [Unix

      timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp) that,
      converted to a

      human-readable format, corresponds to March 10, 2023, 19:12:24 and

      123ms in the UTC timezone.  If the meter is connected to the

      Internet, its time should usually be accurate (see

      [/config/net/ntp](/webapi/4.6/openapi/confignetntp) and

      [/config/net/ptp](/webapi/4.6/openapi/confignetptp)).  However, it is
      advisable

      for a client to check the time and confirm its reasonbly close to

      actual time as discrepancies could cause confusing and erroneous

      results.


      Without the `reg=none` query parameter, the service also returns

      information about the available registers.  `GET /register` might

      return a result looks like this:

        ```json
        {
          "ts": "1678475548.000",
          "registers": [
            { "name": "V1", "type": "V", "idx": 3, "did": 31 },
            { "name": "grid, "type": "P", "idx": 7, "did": 6 },
            { "name": "temp, "type": "T", "idx": 8, "did": 7 },
            { "name": "mask", "type": "#", "idx": 14, "did": 34 }
          ]
        }
        ```

        Member `registers` contains information about the registers
        configured on the meter.  The response shows that each register
        has a `name`, a [`type`](/webapi/4.6/openapi/glossary#section/Type-Codes) which defines
        the physical unit of that register, and several other attributes
        which will be explained in more detail later. In our example,
        there are registers called `V1`, measuring a voltage, `grid`
        measuring power, `temp` measuring a temperature, and `mask`
        which records a set of on/off flags.

        If we want to find out the current temperature, we can use the
        register index given by member `idx` of the `temp` register to
        ask for its current rate.  `GET /register?reg=8&rate` might
        return:

        ```json
        {
          "ts": "1678475551.932",
          "registers": [
            {"name": "temp, "type": "T", "idx": 8, "did": 7, "rate": 13.5629997}
          ]
        }
        ```

        If we look up type `T` in the [type code
        table](/webapi/4.6/openapi/glossary#section/Type-Codes), we find that the rate unit is
        °C, so the response indicates that the current temperature is
        about 13.6 °C or 56.4 °F.

        We might also be interested in knowing the average temperature
        over the last 24 hours.  For that, we need to request the
        recorded values for the current time (`now`) and 24 hours or
        86,400 seconds ago (`now-86400`).  This can be accomplished
        with `GET /register?reg=8&time=now,now-86400`:

        ```json
        {
          "ts": "1678477555.345",
          "registers": {"name": "temp", "type": "T", "idx": 8, "did": 7},
          "ranges": [
            { "ts": "1678477555.154", "delta":  1, "rows": [["7494425049"]]},
            { "ts": "1678391100",     "delta": 60, "rows": [["7033149079"]]}]
        }
        ```

        The first item returned in the `ranges` array is for the current
        time, the second for 24 hours ago.  Subtracting the two
        timestamps, we see that 86,455.154 seconds elapsed between them.
        The reason this isn't exactly 86,400 seconds is that the
        database records values at a certain granularity and it so
        happened that the older row was recorded at a minute boundary.

        If we subtract the decimal strings reported in the `rows`
        arrays, we can see that the recorded temperature value increased
        from 7,033,149,079 to 7,494,425,049 during that time &mdash; an
        increase of 461,275,970.  That's a big number, but what does it
        mean?  If we look up type code `T` in the [type
        code](/webapi/4.6/openapi/glossary#section/Type-Codes) table again, we see that the
        temperature quantum is 0.001 and the description there also
        explains how values are accumulated over time.  Thus, if we
        multiply the increase in value by the quantum and then divide
        by the elapsed time in seconds, we get:

        > _average temp_ = (461,275,970 · 0.001)°Cs / 86,455.154s = 5.335°C

        That is, the average temperature over the past 24 hours was
        about 5.3 °C or 42 °F.

      ## Python Example


      A Python program illustrating the use of this service can be found

      [here](https://bitbucket.org/egauge/python/src/main/egauge/examples/test_register.py).

      This program takes advantage of class

      `egauge.webapi.device.Register` to handle the details of encoding

      the HTTP requests and decoding the responses.  The class also takes

      care of:

        1) Converting rates, accumulated and average values to physical
        quantity objects that have a value and a unit.  These objects
        also can convert to different units, so if you'd like to output
        energy as british thermal units (Btu) or power as horsepower
        (hp), you can.

        1) Evaluating virtual registers.  The class automatically
        fetches the formulas of virtual register and then calculates
        them based on the physical register values as needed.
  - name: /remote
    description: |
      *To be implemented.*
  - name: /store
    description: |
      **Note** _This service is deprecated and will be removed in the
        future.  Please use [/config/var](/webapi/4.6/openapi/configvar) instead._

      This service provides the ability to store arbitrary name/value
      pairs on the meter.  This is called server-side storage.

      The service implements a hierarchical name-space, with hierarchy
      levels separated by slash characters (`/`). The top-level is
      called a section, intermediate levels are called paragraphs, and
      leaves are called variables. For example, the path
      `global/default/currency_code` refers to variable `currency_code`
      in section `global`, paragraph `default`.

      Variables may also be stored at the section level.  The last
      character of a URL determines whether the URL refers to a
      section-level variable or a paragraph.  If the URL ends with a
      slash character (`/`), it refers to a paragraph, otherwise, it refers
      to a section-level variable.

      Names may contain lower- and upper-case ASCII letters, digits,
      dashes (`-`), underscores (`_`), and percent signs (`%`).

      Variable values may contain any UTF-8 codes except ASCII control
      codes (codes less than 0x20). Some variables may be defined as
      storing JSON-encoded values. For those, the value is limited to
      characters permissible by the [JSON grammar](https://www.json.org/).

      ## Well-known Variables

      What distinguishes server-storage variables from configuration
      settings is that the former are generally not used by the meter
      firmware. In other words, server-storage variables are used
      primarily by users of the WebAPI.  There are a few exceptions
      however:

        * `global/billing/start_day`: The meter firmware interprets this
          as the day of the month on which the utility company reads the
          utility meter.  The assumption is that the meter is read at
          noon on that day.  The value must be a decimal integer string
          in the range from 1-31.  If the billing day number is greater
          than the number of days in a particular month, it is assumed
          that utility meter is read on the last day of that month.

          The meter-firmware uses this, for example, to implement the
          `sob` [time point](/webapi/4.6/openapi/glossary#section/Time-Point-Names).

        * `global/billing/tariff_uri`: If not an empty string, this is
          interpreted as the URL from which to fetch a [Lua
          script](/webapi/4.6/openapi/glossary#section/Lua-Scripts) that calculates energy
          cost.  The meter will periodically poll this URL and download
          any available updates to the script.

        * `global/default/currency_symbol`: This is interpreted as the
          symbol to use for currency values.  This may be a single
          Unicode symbol such as `$` (Dollar) or `€` (Euro), or it may
          be a multi character string, such as `CHF` for Swiss Franc.
          The meter firmware uses the value of this variable when
          outputting the unit of monetary values.
  - name: /sys
    description: |
      System information.  Everything here is read-only.

      Accessing this service requires the [view_settings
      privilege](/webapi/4.6/openapi/glossary#section/User-Privileges).
  - name: /sys/alert
    description: |
      Descriptions of the system-generated alerts.
  - name: /sys/alert/{idx}
    description: |
      Description of a system alert.
  - name: /sys/alert/{idx}/id
    description: |
      A short id that uniquely identifies this system alert. The id
      consists entirely of alpha-numeric characters.
  - name: /sys/alert/{idx}/reason
    description: |
      A brief explanation of the system condition that triggers is
      system alert.  The string is localized according to the selected
      language-code or is in English if a translation is unavailable.
  - name: /sys/boot
    description: |
      Information about the most recent power-up (boot) event.
  - name: /sys/boot/reason
    description: |
      The reason for the most recent CPU reset. The strings vary
      depending on the hardware platform. For EG4*xxx* model devices,
      the possible values are:

        * `general reset`: CPU was powered on when the backup battery
          was depleted.

        * `wakeup`: CPU was powered on when backup battery still had
          sufficient charge left.

        * `watchdog reset`: The CPU's watchdog timer triggered the reset.

        * `software reset`: Firmware requested a reboot.

        * `user reset`: Not applicable.

        * `unknown reset`: Not applicable.
  - name: /sys/boot/time
    description: >
      The time of the last user-initiated reboot.  It is a decimal [Unix

      timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp) string or
      `null` if

      unavailable.  Unanticipated reboots, e.g., due to power failure or

      watchdog-timeouts do not update this resource.
  - name: /sys/db
    description: |
      The database configuration of the meter.
  - name: /sys/db/max-registers
    description: |
      The maximum number of registers (columns) that can be stored in
      the meter's database.
  - name: /sys/db/level
    description: |
      Definition of the available database storage levels.
  - name: /sys/db/level/{idx}
    description: |
      Definition of a database storage level.
  - name: /sys/db/level/{idx}/head
    description: >
      The [Unix timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp)
      of the most recent

      data row stored at this level of the database.  If `null`, no row

      is currently available at this database level.
  - name: /sys/db/level/{idx}/interval
    description: |
      The time interval in milliseconds between database rows at this
      level.  For example, a value of 1000 would indicate that the level
      contains second-by-second data rows.
  - name: /sys/db/level/{idx}/row-count
    description: |
      The number of rows available at this storage level.  Each database
      level is cyclical so a level with _n_ rows and an interval of _t_
      milliseconds can retain the most recent _n_·_t_ milliseconds worth
      of data.
  - name: /sys/db/level/{idx}/volatile
    description: |
      This is `true` if this level of the database storage is volatile.
      The data in volatile levels is lost each time the meter is powered
      up (rebooted).
  - name: /sys/dev
    description: |
      A description of hardware devices that are attached to the meter.
  - name: /sys/dev/serial
    description: |
      The list of serial ports that are attached to the meter.
  - name: /sys/dev/serial/{seridx}
    description: |
      An attached serial port.
  - name: /sys/dev/serial/{seridx}/devpath
    description: |
      The device path of the serial port that uniquely identifies the
      port it is attached to.
  - name: /sys/dev/serial/{seridx}/manufacturer
    description: |
      The name of the manufacturer of the serial port hardware.
  - name: /sys/dev/serial/{seridx}/product
    description: |
      The product name of the serial port hardware.
  - name: /sys/dev/serial/{seridx}/sn
    description: |
      The serial number of the serial port hardware.
  - name: /sys/dev/serial/{seridx}/version
    description: |
      The version of the serial port hardware.
  - name: /sys/func
    description: >
      Documents the [eScript](/webapi/4.6/openapi/glossary#section/eScript)
      functions built

      into the meter.
  - name: /sys/func/basic
    description: >
      Documents the *basic*
      [eScript](/webapi/4.6/openapi/glossary#section/eScript) functions.  Basic

      functions are available any place eScript expressions may appear.
  - name: /sys/func/basic/{name}
    description: |
      The name of the eScript function.
      Function names start with a letter and consist entirely of alpha-numeric
      characters or underscores (`_`).
  - name: /sys/func/basic/{name}/arg
    description: |
      The list of input arguments the function expects.
  - name: /sys/func/basic/{name}/arg/{idx}
    description: |
      Description of the argument expected at index {idx} of the
      argument list.
  - name: /sys/func/basic/{name}/arg/{idx}/name
    description: |
      The formal name of the argument.  The name starts with a letter
      and consist entirely of alpha-numeric characters or underscores
      (`_`).  The name usually suggests the purpose of the
      argument.  It may also be referenced within the help string
      (member `help`).  Other than that, the name has no significance.
  - name: /sys/func/basic/{name}/arg/{idx}/type
    description: >
      A [type code](/webapi/4.6/openapi/glossary#section/Type-Codes) indicating
      the type of the

      argument.  The special value `string` indicates that the value

      must be a string.
  - name: /sys/func/basic/{name}/help
    description: |
      The help string (documentation) for this function.  In this
      string, references to argument names are enclosed in `arg` tags
      using an XML-like syntax. For example, a reference to an argument
      with name `count` would appear as `<arg>count</arg>` in this
      string.  This can be used to highlight argument names in the
      document string, for example.
  - name: /sys/func/basic/{name}/min-args
    description: |
      The minimum number of arguments that need to be passed when
      calling this function.  If zero, all arguments are optional.  This
      value is never larger than the length of the array given for
      member `arg`.
  - name: /sys/func/alert
    description: >
      Documents the *alert*
      [eScript](/webapi/4.6/openapi/glossary#section/eScript) functions.  These

      functions are available only for eScript expressions evaluated as

      part of alert conditions.
  - name: /sys/func/alert/{name}
    description: |
      The name of the eScript function.
      Function names start with a letter and consist entirely of alpha-numeric
      characters or underscores (`_`).
  - name: /sys/func/alert/{name}/arg
    description: |
      The list of input arguments the function expects.
  - name: /sys/func/alert/{name}/arg/{idx}
    description: |
      Description of the argument expected at index {idx} of the
      argument list.
  - name: /sys/func/alert/{name}/arg/{idx}/name
    description: |
      The formal name of the argument.  The name starts with a letter
      and consist entirely of alpha-numeric characters or underscores
      (`_`).  The name usually suggests the purpose of the
      argument.  It may also be referenced within the help string
      (member `help`).  Other than that, the name has no significance.
  - name: /sys/func/alert/{name}/arg/{idx}/type
    description: >
      A [type code](/webapi/4.6/openapi/glossary#section/Type-Codes) indicating
      the type of the

      argument.  The special value `string` indicates that the value

      must be a string.
  - name: /sys/func/alert/{name}/help
    description: |
      The help string (documentation) for this function.  In this
      string, references to argument names are enclosed in `arg` tags
      using an XML-like syntax. For example, a reference to an argument
      with name `count` would appear as `<arg>count</arg>` in this
      string.  This can be used to highlight argument names in the
      document string, for example.
  - name: /sys/func/alert/{name}/min-args
    description: |
      The minimum number of arguments that need to be passed when
      calling this function.  If zero, all arguments are optional.  This
      value is never larger than the length of the array given for
      member `arg`.
  - name: /sys/modbus
    description: |
      Modbus-related information built into the firmware.
  - name: /sys/modbus/client
    description: |
      Modbus client related information.
  - name: /sys/modbus/client/map
    description: >
      System-defined (built-in) Modbus address maps.  The user-defined

      maps are available at

      [/config/modbus/client/map](/webapi/4.6/openapi/configmodbusclientmap). 
      If a

      user-defined map with the same name as a system map exists, it

      will shadow (mask) the system map with the same name.
  - name: /sys/modbus/client/map/{name}
    description: |
      Modbus map consisting of a list of register definitions and a set
      of options.
  - name: /sys/modbus/client/map/{name}/option
    description: |
      A set of options.  The meter currently supports the following
      options:

        * `default-modbus-addr`: The Modbus unit-number to use by
        default.  This must be a decimal string.  For example: `1`.

        * `default-serial-params`: The default serial parameters to use
        when the remote device is connected via a serial port
        (Modbus/RTU).  This must be a string.  For example: `9600/8n1`
        for 9600 baud, 8 databits, no parity, 1 stop bit.

        * `default-tcp-port`: The default TCP port number to use when
        the remote device is connected via Modbus/TCP.  This must be a
        decimal string.  For example: `6001`.
  - name: /sys/modbus/client/map/{name}/option/{opt}
    description: |
      The value of the Modbus map option.
  - name: /sys/modbus/client/map/{name}/reg
    description: |
      A list of Modbus register definitions.
  - name: /sys/modbus/client/map/{name}/reg/{idx}
    description: |
      A Modbus register definition.
  - name: /sys/modbus/client/map/{name}/reg/{idx}/name
    description: |
      The name of the register.  The user can choose this name freely so
      long as each register within a map has a unique name.
  - name: /sys/modbus/client/map/{name}/reg/{idx}/addr
    description: |
      The Modbus address of the register.
  - name: /sys/modbus/client/map/{name}/reg/{idx}/type
    description: |
      The type of the register value.  This may be one of the following:

        * `bit`: One-bit value (a coil, in Modbus terminology).
        * `s16`: Signed 16-bit integer.
        * `u16`: Unsigned 16-bit integer.
        * `s32`: Signed 32-bit integer.
        * `u32`: Unsigned 32-bit integer.
        * `s32l`: Signed 32-bit integer, word-swapped.
        * `u32l`: Unsigned 32-bit integer, word-swapped.
        * `s64`: Signed 64-bit integer.
        * `u64`: Unsigned 64-bit integer.
        * `float16`: IEEE-754 half-precision float.
        * `float16l`: IEEE-754 half-precision floating point,
          little-endian (byte-swapped).
        * `float`: IEEE-754 single-precision float.
        * `floatl`: IEEE-754 single-precision float, word-swapped.
        * `double`: IEEE-754 double-precision float.
  - name: /sys/modbus/client/map/{name}/reg/{idx}/kind
    description: |
      The kind of the register. Possible values are:

        * `analog`: The value is continuous (the average of two values is
          meaningful).

        * `enum`: The value is discrete (the average of two values is not
          meaningful).  An example for this would be a numeric error code.

        * `bitset`: Each bit in the value is a discrete on/off value.
        An example for this would be a set of error flags.
  - name: /sys/modbus/client/map/{name}/reg/{idx}/unit
    description: |
      For register of the `analog` kind, this defines the physical unit of
      the register value.  This must be one of the following:

        * `#3`: Unit-less number with 3 decimal digits of precision.
        * `%`: Percentage.
        * `A`: Electric current in amperes.
        * `Ah`: Electric charge in ampere-hours.
        * `As`: Electric charge in ampere-seconds.
        * `C`: Temperature in degree celsius.
        * `Degrees`: Angle in degrees.
        * `Hz`: Frequency in hertz.
        * `Ohm`: Resistance in ohm.
        * `Pa`: Pressure in pascals.
        * `Pct`: Percentage.
        * `RH`: Relative humidity.
        * `Tmd`: Time in days.
        * `Tmh`: Time in hours.
        * `Tms`: Time in seconds.
        * `VA`: Apparent power in volt-amperes.
        * `VAh`: Apparent energy in volt-ampere-hours.
        * `V`: Electric potential in volts.
        * `W/m2`: Irradiance in watts-per-square-meter.
        * `W/m^2`: Irradiance in watts-per-square-meter.
        * `W`: Power in watts.
        * `Wh`: Energy in watt-hours.
        * `degC`: Temperature in degree celsius.
        * `deg`: Angle in degrees.
        * `g`: Mass in grams.
        * `hPa`: Pressure in hecto-pascals.
        * `h`: Time in hours.
        * `kAh`: Electric charge in kilo-ampere-hours.
        * `kO`: Resistance in kilo-ohms.
        * `kPa`: Pressure in kilo-pascals.
        * `kVAh`: Apparent energy in kilo-volt-ampere-hours.
        * `kW`: Power in kilo-watts.
        * `kWh`: Energy in kilo-watt-hours.
        * `kg`: Mass in kilo-grams.
        * `kvarh`: Reactive energy in kilo-volt-ampere-hours.
        * `m/s`: Speed in meters-per-second.
        * `m3/s`: Volume flow in cubic-meters-per-second.
        * `m3`: Volume in cubic-meters.
        * `mA`: Electric current in milli-amperes.
        * `mAh`: Electric charge in milli-ampere-hours.
        * `mSecs`: Time in milli-seconds.
        * `mV`: Electric potential in milli-volts.
        * `mV`: Electric potential in milli-volts.
        * `m^3/s`: Volume flow in cubic-meters-per-second.
        * `m^3`: Volume in cubic-meters.
        * `meters`: Distance in meters.
        * `mm`: Distance in milli-meters.
        * `mps`: Speed in meters-per-second.
        * `ms`: Time in milli-seconds.
        * `ohms`: Resistance in ohm.
        * `ppm`: Parts-per-million.
        * `s`: Time in seconds.
        * `secs`: Time in seconds.
        * `var`: Reactive power in volt-ampere.
        * `varh`: Reactive energy in volt-ampere-hours.
        * `°C`: Temperature in degree celsius.
  - name: /sys/modbus/client/map/{name}/reg/{idx}/offset
    description: |
      An offset value that is used to convert the Modbus register value
      to a value in the specified physical unit.  Specifically, when the
      Modbus value of the register is *reg*, then corresponding physical
      value *phys* is calculated as:

        > *phys* = (*reg* + `offset`) * `scale`

      where `offset` is the value defined here and `scale` is
      the value defined for member `scale`.
  - name: /sys/modbus/client/map/{name}/reg/{idx}/scale
    description: |
      A scale value that is used to convert the Modbus register value
      to a value in the specified physical unit.  Specifically, when the
      Modbus value of the register is *reg*, then corresponding physical
      value *phys* is calculated as:

        > *phys* = (*reg* + `offset`) * `scale`

      where `scale` is the value defined here and `offset` is
      the value defined for member `offset`.
  - name: /sys/modbus/client/map/{name}/reg/{idx}/access
    description: |
      The access-mode of the register.  It must be one of:
        * `ro`: read-only
        * `rw`: read-write
  - name: /sys/model
    description: |
      The model name of the meter. For example, `EG4030`.
  - name: /sys/net
    description: |
      The network settings that are in use by the meter.  This may
      or may not be the same as the configuration established in
      [/config/net](/webapi/4.6/openapi/confignet).
  - name: /sys/net/homeplug
    description: |
      The HomePlug status.
  - name: /sys/net/homeplug/bridge
    description: |
      The array of HomePlug bridge devices detected.
  - name: /sys/net/homeplug/bridge/{idx}
    description: |
      The status of a detected HomePlug bridge device.
  - name: /sys/net/homeplug/bridge/{idx}/mac
    description: |
      The MAC address of the HomePlug bridge device.
  - name: /sys/net/homeplug/bridge/{idx}/speed
    description: |
      Information about the current estimated speed at which
      communication occurs to this bridge device.
  - name: /sys/net/homeplug/bridge/{idx}/speed/rx
    description: |
      The current estimated speed at which the meter can receive data
      from this bridge device.  This is reported as bits/second.
  - name: /sys/net/homeplug/bridge/{idx}/speed/tx
    description: |
      The current estimated speed at which the meter can send data to
      this bridge device.  This is reported as bits/second.  On egauge2
      devices, this member is unavailable.
  - name: /sys/net/homeplug/bridge/{idx}/type
    description: |
      The HomePlug chipset used by the bridge device.  This member is
      available only if the chipset could be identified.
  - name: /sys/net/homeplug/bridge/{idx}/vendor
    description: |
      The name of the manufacturer of this HomePlug bridge device.  This
      member is available only if the chipset could be identified.
  - name: /sys/net/ipv4
    description: |
      The Internet Protocol v4 ([IPv4](https://www.rfc-editor.org/rfc/rfc791))
      configuration.
  - name: /sys/net/ipv4/address
    description: |
      An IPv4 address in dotted decimal notation.
  - name: /sys/net/ipv4/broadcast
    description: |
      An IPv4 broadcast address in dotted decimal notation.
  - name: /sys/net/ipv4/dhcp
    description: |
      Whether or not to use [DHCP](https://www.ietf.org/rfc/rfc2131.txt)
      to automatically provision the IPv4 address.  If `true`, DHCP is
      enabled. If `false`, the manually configured IPv4 settings are
      used.
  - name: /sys/net/ipv4/netmask
    description: |
      The address of the IPv4 gateway in dotted decimal notation.
  - name: /sys/net/ipv4/network
    description: |
      The IPv4 network mask in dotted decimal notation.
  - name: /sys/net/ipv4/gateway
    description: |
      The IPv4 network number in dotted decimal notation.
  - name: /sys/net/ntp
    description: |
      Network Time Protocol
      ([NTP](https://www.rfc-editor.org/rfc/rfc5905)) status.
  - name: /sys/net/ntp/server
    description: >
      Status of each [configured](/webapi/4.6/openapi/confignetntpserver) NTP
      server.
  - name: /sys/net/ntp/server/{idx}
    description: |
      Status of the NTP server.
  - name: /sys/net/ntp/server/{idx}/address
    description: |
      The network address of the configured NTP server.  This is
      typically a string-representation of the server's IP address,
      which may be either an IP v4 or v6 address. If the address is
      unknown, this is `null`.
  - name: /sys/net/ntp/server/{idx}/delay
    description: |
      The estimated time it takes for a network packet from the meter to
      reach this NTP server (or vice versa).  The unit is milliseconds.
      This is available only if the meter considers this server a peer.
  - name: /sys/net/ntp/server/{idx}/jitter
    description: |
      The estimated jitter (variation) for the time it takes for a
      network packet from the meter to reach this NTP server (or vice
      versa). The unit is milliseconds.
      This is available only if the meter considers this server a peer.
  - name: /sys/net/ntp/server/{idx}/name
    description: |
      The hostname of the configured NTP server.  If the name is
      unknown, this this is `null`.  This normally happens when the NTP
      server is configured as an IP address.
  - name: /sys/net/ntp/server/{idx}/next_poll
    description: |
      The time that needs to elapse before the meter contacts this
      server again.  The unit is seconds.
  - name: /sys/net/ntp/server/{idx}/offset
    description: |
      The estimated difference between the meter's time and this NTP
      server's time.  The unit is milliseconds.
      This is available only if the meter considers this server a peer.
  - name: /sys/net/ntp/server/{idx}/poll_interval
    description: |
      The interval of time between successive contacts from the meter to
      this server.  The unit is seconds.
  - name: /sys/net/ntp/server/{idx}/state
    description: |
      The meter's view of the current state of this NTP server.  It may
      have one of the following values:

        * `INVAL`: The server is invalid, e.g., because the hostname
        could not be resolved to a network address or because the remote
        server is not responding.

        * `TRACK`: The server is being tracked and, if everything
        continues to work fine, it will enter the `PEER` state shortly.

        * `PEER`: The server is a peer and could be used as a time source.

        * `SYNC`: The server is a peer and the meter's time is
        synchronized with this server.
  - name: /sys/net/ntp/server/{idx}/stratum
    description: |
      The meter's estimate of the time accuracy provided by this server.
      Smaller numbers mean higher accuracy.  A stratum 0 server is the
      most accurate (atomic clock or GPS clock).
      This is available only if the meter considers this server a peer.
  - name: /sys/net/ntp/server/{idx}/trust_level
    description: |
      The meter's estimate of how trustworthy this server's time is.
      Higher numbers indicate a higher level of trustworthiness.
  - name: /sys/net/ntp/server/{idx}/weight
    description: |
      The meter's estimate of the weight that should be given to this
      NTP server's time.
  - name: /sys/net/wlan
    description: |
      The WLAN (Wi-Fi) status.
  - name: /sys/net/wlan/ap
    description: |
      The list of detected access points (available WLAN networks).
  - name: /sys/net/wlan/ap/{idx}
    description: |
      Access point status.
  - name: /sys/net/wlan/ap/{idx}/bssid
    description: |
      The BSSID (basic service set identifier) of this access point.
      This is a MAC address formatted as six two-digit hex numbers,
      separated by colons (`:`).
  - name: /sys/net/wlan/ap/{idx}/flags
    description: |
      A set of flags enclosed in square brackets.  Each flag gives some
      information about the capabilities of this access point.

      The following flags are currently defined:

        * `DMG`: Indicates the access-point supports 802.11ad
          directional multi-gigabit (DMG).

        * `EBSS`: The access-point supports extended wireless networks.

        * `FILS`: The access-point supports 802.11ai fast initial link setup.

        * `FST`: The access-point supports fast session transfers.

        * `HS20`: The access-point supports Hot Spot 2.0 (Wi-Fi
          Certified Passpoint).

        * `IBSS`: The access-point supports independent basic service
          set (ad-hoc) wireless networks.

        * `MESH`: The access-point uses a mesh network.

        * `OSEN`: The access-point supports Server-only authenticated
          layer 2 Encryption Network.

        * `OWE-TRANS`: See Opportunistic Wireless Extension.

        * `OWE-TRANS-OPEN`: See Opportunistic Wireless Extension.

        * `P2P`: The access-point supports point-to-point (WiFi Direct)
          wireless networks.

        * `PBSS`: Indicates the access-point supports personal basic
          service set wireless networks.

        * `RSN`: Indicates the access-point supports Robust Security
          Network (RSN).

        * `UTF-8`: The SSID is UTF-8 encoded.

        * `WEP`: The access-point supports Wired Equivalent Privacy (WEP).

        * `WPA`: The access-point supports Wi-Fi Protected Access (WPA).

        * `WPA2`: The access-point supports Wi-Fi Protected Access (WPA)
          version 2.

        * `WPS`: The access-point supports Wi-Fi Protected Setup (WPS).

      Encryption-related flags may be followed by various sub-flags that
      are separated by a `+` character.  For example,
      `WPA2-PSK-CCMP+TKIP` indicates that WPA2-PSK-CCMP is supported
      with the TKIP protocol.
  - name: /sys/net/wlan/ap/{idx}/frequency
    description: |
      The frequency in MHz of this access point.
  - name: /sys/net/wlan/ap/{idx}/signal_level
    description: |
      The signal-strength (in dB) with which the meter is receiving this
      access point.  This is typically a negative number with larger
      (less negative) numbers indicating higher signal strength.
  - name: /sys/net/wlan/ap/{idx}/ssid
    description: |
      The SSID (service set identifier) of this WLAN network.
  - name: /sys/net/wlan/net
    description: |
      The status of configured wireless networks.
  - name: /sys/net/wlan/net/{idx}
    description: |
      The WLAN network status.
  - name: /sys/net/wlan/net/{idx}/network_id
    description: |
      Identifier for this network.
  - name: /sys/net/wlan/net/{idx}/bssid
    description: |
      The BSSID (basic service set identifier) of the access point to
      use for this network.  This is a MAC address formatted as six
      two-digit hex numbers separated by colons (`:`).  If unset, this
      is `any` instead.
  - name: /sys/net/wlan/net/{idx}/flags
    description: |
      A set of flags which are enclosed in square brackets.  The
      following flags are currently defined:

        * `CURRENT`: Indicates that this network is currently being
          used.

        * `DISABLED`: The network is disabled from being used.

        * `TEMP-DISABLED`: The network is temporarily disabled from
          being used.

        * `P2P-PERSISTENT`: Indicates a point-to-point (WiFi Direct)
          connection.  This is not used by the meter.
  - name: /sys/net/wlan/net/{idx}/ssid
    description: |
      The SSID (service set identifier) of this WLAN network.
  - name: /sys/push
    description: |
      The status of the push (data sharing) service.  See
      [/config/push](/webapi/4.6/openapi/configpush).
  - name: /sys/push/next
    description: |
      Information about the next push request.
  - name: /sys/push/next/attempt
    description: >
      The next time the meter will send push data to the server.  The

      time is expressed as a decimal [Unix

      timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp) string. 
      If unavailable, this

      is an empty string.
  - name: /sys/push/last
    description: |
      Information about the last (most recent) push request.
  - name: /sys/push/last/attempt
    description: >
      The last time the meter sent (or attempted to send) push data to

      the server.  The time is expressed as a decimal [Unix

      timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp) string. 
      If unavailable, this

      is an empty string.
  - name: /sys/push/last/count
    description: |
      The number of register data rows that were sent to the server
      during the last push.  If unavailable, this is zero.
  - name: /sys/push/last/status
    description: |
      The HTTP status returned by the server at the end of the last
      push.  If unavailable, this is zero.
  - name: /sys/push/last/success
    description: >
      The most recent time push data was successfully sent to the

      server.  The time is expressed as a decimal [Unix

      timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp) string. 
      If unavailable, this

      is an empty string.
  - name: /sys/push/last/ts
    description: >
      The time of the last register data row sent to the server.  The

      time is expressed as a decimal [Unix

      timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp) string. 
      If unavailable, this

      is an empty string.
  - name: /sys/reboot
    description: |
      This is `true` if the meter needs to be rebooted, e.g., due to a
      configuration change.  If so, a [reboot
      command](/webapi/4.6/openapi/cmd/cmdrebootpost) should be issued at the
      next opportune moment.
  - name: /sys/slowd
    description: |
      The status of slowd (serial) devices.
  - name: /sys/sn
    description: |
      The serial number of the meter.  Even though it is called
      serial-*number*, this string may contain letters, dashes (`-`) and
      underscores (`_`) as well.
  - name: /sys/status
    description: |
      The status of long-running operations.  For security reasons, this
      resource always returns an empty object.  That is, only
      applications that know the token of a long-running operation can
      inquire on its status.
  - name: /sys/status/{token}
    description: |
      The current status of the long-running operation.
  - name: /sys/status/{token}/args
    description: |
      A list of strings that provide additional information to the
      `error` or `info` tag.
  - name: /sys/status/{token}/args/{idx}
    description: |
      A string that provides additional information to the `error` or
      `info` tag.
  - name: /sys/status/{token}/done
    description: |
      This is `true` if the operation has completed or `false` if it is
      still in progress.
  - name: /sys/status/{token}/error
    description: |
      If set, indicates that an error occurred.  The meaning of this
      value depends on the operation being performed.  Generally, it is
      a short tag.  For example, `OOM` to indicate "out of
      memory". Before presenting the tag to a user, it must be
      translated to a human-readable string.  The strings in member
      `args` provide additional info about why the error occurred.
  - name: /sys/status/{token}/info
    description: |
      If set, indicates the action the long-running operation is
      currently performing.  The meaning of this value depends on the
      operation being performed.  Generally, the string is a short tag.
      For example, `RESTORE` to indicate that data is being restored to
      the database. Before presenting the tag to a user, it must be
      translated to a human-readable string.  The strings in member
      `args` provide additional info about the action being performed.
  - name: /sys/status/{token}/progress
    description: |
      A progress indicator that reports the portion of the operation (or
      action) that has been completed so far.  The value is in the range
      from 0 to 1, where 0 means that the operation has just started and
      1 means the operation is 100% complete.
  - name: /sys/status/{token}/result
    description: |
      The result of the slow operation.  Not all operations provide a
      result and while the operation is ongoing, the result may be
      changing over time.  Once the operation is done, the result is
      stable and won't change anymore.
  - name: /sys/status/{token}/ts
    description: |
      The time when this status was created.  It is a decimal [Unix
      timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp) string.
  - name: /sys/team
    description: |
      The team status.  This describes the current status of all registers
      whether locally measured or obtained from a remote device.
  - name: /sys/team/lag
    description: |
      The number of seconds the register values are lagging behind real
      time.  If all remote devices are online and responsive, lag should
      typically be less than 500 milliseconds.
  - name: /sys/team/fft
    description: |
      The status of the FFT calculations.
  - name: /sys/team/fft/last_update
    description: >
      The [Unix timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp)
      of when the FFT

      calculations were updated most recently.  If `null`, it indicates

      that no FFT calculations are being performed.  If not `null`, the

      timestamp typically lags behind the current time by a couple of

      seconds because FFTs cannot be calculated in real time.
  - name: /sys/team/reg
    description: |
      The current status of all registers (physical and virtual).
  - name: /sys/team/reg/{name}
    description: |
      The current status of the register.
  - name: /sys/team/reg/{name}/available
    description: |
      True if the register has an up-to-date value.  If false, it typically
      means that the (remote) device measuring its value is not
      reachable at the moment.
  - name: /sys/team/reg/{name}/excess
    description: |
      The pending amount of excess for this register.  For locally
      measured registers and discrete registers, this is always zero.
      For remote registers, this becomes non-zero if the rate of change
      to be recorded is outside of the actual rate plus/minus 10%.  This
      is being done to prevent recording big spikes when a remote device
      is offline for some time and then comes back online.  Instead of
      recording a big jump, an excess is recorded which will then be
      played back over time by inflating (or deflating) the recorded
      rate by up to +/-10% of the actual rate until the excess has been
      drained.  The excess of all registes can be reset to zero with the
      [clear](/webapi/4.6/openapi/cmd/cmdclearpost) command.
  - name: /sys/team/reg/{name}/last
    description: |
      The info for the most recent (last) update to the register.
  - name: /sys/team/reg/{name}/last/update
    description: >
      The decimal [Unix
      timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp) of when
      this

      register was last updated.
  - name: /sys/team/reg/{name}/last/val
    description: |
      The current value of the register as signed 64-bit integer
      converted to a decimal string.  Except for discrete registers,
      this is an accumulated value (see Section [Type
      Codes](/webapi/4.6/openapi/glossary#section/Type-Codes) for details).
  - name: /sys/time
    description: |
      The current meter time as a decimal [Unix
      timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp) string.
  - name: /sys/uptime
    description: |
      The number of seconds the device has been running since the last
      reboot.
  - name: /sys/version
    description: |
      Meter version information.
  - name: /sys/version/firmware
    description: |
      The version code of the installed firmware.
  - name: /sys/version/hardware
    description: |
      The version code of the hardware.
  - name: /sys/version/kernel
    description: |
      The version code of the installed kernel.
  - name: Glossary
    description: >
      ## Deprecated


      Items marked deprecated should not be used going forward as they

      will be removed in a future firmware release.


      ## Device Attributes


      Most device attributes are simple name/value pairs with both the

      name and the value consisting of strings.  Two exceptions are the

      `path` and `interface` attributes:

        * `path`: The value of this attribute is a list of strings.  The
          list provides a unique path to the device.  If present, it
          must be the first attribute.  This is the only attribute which
          provides a guaranteed unique identifier for the device.  The
          flip-side is that the path is not necessary _stable_.  For
          example, if a USB device is moved from one port to another,
          the path would change.  Thus, depending on the needs of the
          application, it may be more appropriate to identify a device
          through other means, such as the manufacturer, model, and
          serial-number, which, together, might provide a unique
          identifier for the device that remains stable regardless of
          how the device is connected to the meter.

        * `interface`: The value of this attribute is also a list of
          strings.  Each entry is the name of an interface that is
          supported by the device.  A description of each interface can
          be obtained from [/ctrl/interface](/webapi/4.6/openapi/ctrlinterface).

      The meaning of other attributes is given below:

        * `link`: The physical link used by the device.  If present, the
          value must be one of:

          * `Ethernet`: The device is connected via Ethernet.

          * `USB`: The device is connected via USB.

          * `serial`: The device is connected via a serial link such as
            RS485, RS232, or similar.

        * `mfg`: The name of the manufacturer of the device (e.g.,
          `eGauge`).

        * `model`: The model name of the device (e.g., `PRM3`).

        * `name`: If present, a user-selected name of the device.

        * `prot`: The communication protocol used by the device.  If
          present, it must be one of:

          * `CoAP`: The device uses the [Constrained Application
            Protocol](https://www.rfc-editor.org/rfc/rfc7252).

          * `CtrlByWeb`: The device uses the ControlByWeb XML protocol.

          * `Modbus`: The device uses the
            [Modbus](https://www.modbus.org/specs.php) protocol.

          * `RTCoA`: The device uses the Radio Thermostat Co of America
            protocol.

          * `SCPI`: The device uses the
            [SCPI](https://en.wikipedia.org/wiki/Standard_Commands_for_Programmable_Instruments)
            protocol (pronounced "skippy".

          * `SMANet`: The device uses the SMAnet protocol used by older PV
            inverters manufactured by SMA.

        * `quality`: Devices that can potentially be reached through
          multiple paths may set this attribute to indicate the
          communication-quality of a particular path.  The value of this
          attribute must be a decimal string.  Paths that provide better
          communication-quality in some sense (e.g., higher speed or
          smaller loss-rate) should have a higher value.  When mapping a
          set of attributes to a set of paths, the paths will be ordered
          by decreasing quality value such that higher quality paths
          will appear before lower quality ones.

        * `sn`: The serial "number" of the device.  Even though called a
          number, the value may also contain non-digit characters (e.g.,
          `0Y0035`).

      ## eScript


      eScript is a simple scripting langage which supports

      basic arithmetic operations (addition, subtraction, multiplication,

      and division) of double-precision floating point numbers.  The

      operations follow normal precedence rules.  Parentheses can be used

      to force evaluation in a particular order.  A C-like ternary

      operator is also supported for conditional evaluation.

      Specifically:

        > `c ? e1 : e2`

      evaluates to `e1` if `c` is non-zero and to `e2` otherwise.


      The latest instantaneous value of a meter register can be obtained

      with the `$` operator which must be followed by a register name in

      quotes.  For example:

        > `$"Grid"`

      would evaluate to the instantaneous value of register `Grid`.


      eScript also supports various functions such as `sin()` to

      calculate the sine of an angle or `THD()` to calculate

      total-harmonic distortion in a signal.  A list of functions is

      available at [/sys/func](/webapi/4.6/openapi/sysfunc).


      An eScript expression which starts with a colon (`:`) is

      interpreted as a [Lua](/webapi/4.6/openapi/glossary#section/Lua-Scripts)
      expression.


      ## Filter-Spec


      Filter-specs can be used to return only certain

      members of an object or certain elements of an array.


      For example, `{foo,bar}` would limit the output of an object to the

      members with names `foo` and `bar`.  Similarly, `[0,3:5]` would

      limit the output of an array to the elements with indices 0, 3, 4,

      and 5.


      If a member or array filter is empty, all members/elements of that

      object/array are returned.  This is handy when filtering deeper

      levels of a response.  For example `[{addr}]` would return only

      member `addr` from all the objects in the returned array.


      For a more complex example, the filter-spec `{reg[7:8{addr}]}`

      would, for each object in the response, only return the `reg` member

      and, within each `reg` array, only elements with indices 7 or 8

      would be returned.  Within the objects of those elements, only the

      `addr` member would be returned.



      Note that braces and square brackets normally need to be

      percent-encoded before using them in a URL (e.g., `%7B` for `{`).


      ### Formal Definition


      The formal syntax of a filter-spec (*FSPEC*) is given by the EBNF

      syntax below.  No whitespace is allowed between symbols.


      > *FSPEC* = [*OBJECT_FILTER* | *ARRAY_FILTER*] . \

      > *OBJECT_FILTER* = "{" *MEMBER_FILTER* {"," *MEMBER_FILTER*)} "}" . \

      > *ARRAY_FILTER* = "["*INDEX_FILTER* {"," *INDEX_FILTER*)} "]" . \

      > *MEMBER_FILTER* = [*NAME* | "(" *NAME* {"," *NAME*} ")"] *FSPEC* . \

      > *INDEX_FILTER* = [*RANGE* | "(" *RANGE* {"," *RANGE*} ")"] *FSPEC* . \

      > *RANGE* = *UINT* [ ":" *UINT* ] . \

      > *UINT* = *DIGIT* { *DIGIT* } . \

      > *DIGIT* = "0".."9". \

      > *NAME* = *ALPHA* | *DIGIT* | "-" | "." | "_" | "~" | *PCT_ENC* . \

      > *ALPHA* = "a".."z" | "A".."Z" . \

      > *PCT_ENC* = "%" *HEX* *HEX* . \

      > *HEX* = *DIGIT* | "a".."f" | "A".."F" . \

      > *EMPTY* = .


      In words: a filter-spec can restrict the members returned from an

      object by listing zero or more member names, separated by commas, in

      curly braces.  Only listed member names will be returned.  As a

      special case, the empty object filter `{}` returns all members.  A

      member name can be followed by a nested filter-spec to further

      filter the value the member with that name.  A common nested

      filter-spec can also be applied to several comma-separated member

      names by enclosing them in parentheses and writing the common

      filter-spec after the closing parenthesis.


      Similarly, a filter-spec can restrict the elements returned from an

      array by listing zero or more indices, separated by commas, in

      square brackets.  Only listed indices will be returned.  As a

      special case, the empty array filter `[]` returns all elements in an

      array.  An index can be a single unsigned integer or a range of

      indices written as a starting index, a colon, and an ending index.

      For example, range `10:20` would corresponds to indices 10 through

      20.  An index can be followed by a nested filter-spec to further

      filter the value of the element with that index.  A common nested

      filter-spec can also be applied to several comma-separated indices

      by enclosing them in parentheses and writing the common filter-spec

      after the closing parenthesis.


      ## Link Types


      The link type of a remote device determines the communication

      protocol that is used to talk to the device and the format of the

      address string.  Supported link-types are:

        * `ailux`: This link type can be used to read data from heat
          pump controllers manufactured by [Alpha
          Innotec](http://www.alpha-innotec.de/).  The address must be
          the hostname or IP address of the heat pump controller.  The
          data is fetched from TCP port 8088 of the controller.

        * `coap`: This link type can be used to read data from devices
          that support the
          [CoAP](https://en.wikipedia.org/wiki/Constrained_Application_Protocol)
          protocol.  The address must be the hostname or IP address of
          the device.  The data is fetched from UDP port 5683.

        * `ctrlbyweb`: This link type can be used to read data from
          devices manufactured by
          [ControlByWeb](https://www.controlbyweb.com/).  The address
          must be the hostname or IP address of the device.  An optional
          port number may be specified after a colon (`:`).  By default,
          port 80 is used. The data is fetched from the device with the
          HTTP protocol.

        * `modbus`: This link type can be used to read data from a
           [Modbus/TCP](https://modbus.org/docs/Modbus_Messaging_Implementation_Guide_V1_0b.pdf)
           device.  The address must have the format
           `map.unit@host:port`:

            * `map`: The name of the Modbus address map to use for the
              device (see
              [/sys/modbus/client/map](/webapi/4.6/openapi/sysmodbusclientmap) and
              [/config/modbus/client/map](/webapi/4.6/openapi/configmodbusclientmap)).
              If the Modbus device supports the [SunSpec
              standard](https://sunspec.org/), this can be `sunspec`
              instead.  With SunSpec, the meter can automatically detect
              the available Modbus registers.

            * `unit`: The Modbus unit number of the device (defaults to 255).

            * `host`: The hostname or IP address of the device.

            * `port`: The port number to use.  Defaults to the value of
              map option `default-tcp-port`, or port 502 if the option
              is not present.

            An example address is `sunspec.1@192.168.1.34` which would
            refer to a SunSpec-compatible device with unit number 1 and
            IP address `192.168.1.34`.

        * `po`: This link type can be used to read data from Aurora
          solar inverters manufactured by Power One.  The inverter's
          serial port must be connected to an RS485-to-Ethernet adapter
          such as the [Chiyu
          BF-430](https://www.chiyu-tech.com/product-bf430-serial-to-tcp-ip-converter-rs485-to-tcp-ip-converter.html).
          The default RS485 serial parameters used by the inverter are:
          19200 baud, 1 stop bit, no parity.  The address must have the
          format `devnum@addr:port`, where `devnum` is the inverter's
          serial address in the range from 2 to 254, `addr` is the host
          or IP address of the RS485-to-Ethernet adapter, and `port`
          is the port number of the adapter.

        * `rtcoa`: This link type can be used to read data from
          thermostats manufactured by [Radio Thermostat Company of
          America](https://www.radiothermostat.com/).  The address must
          be the hostname or IP address of the thermostat.  An optional
          port number may be specified after a colon (`:`).  By default,
          port 80 is used. The data is fetched from the device with the
          HTTP protocol.

        * `slowd`: This link type can be used to read data from various
          devices connected over a serial port.  The address must have
          the format `proto://devaddr`, where `proto` is the name of the
          communication protocol and `devaddr` is a device-address in a
          format that depends on the protocol.  The available protocols
          are:

            * `alphatechnics`: Implements a proprietary protocol for
              reading [AlphaTechnics
              5000](https://www.te.com/usa-en/plp/precision-thermometers/Y44qp.html)
              series precision thermometers.  These devices have a USB
              port which emulates a serial interface, so they can be
              plugged directly into EG4*xxx* meters.

              The serial port parameters default to 57600 baud, no
              parity, and one stop bit. `devaddr` must be a
              [serial-port](/webapi/4.6/openapi/glossary#section/Serial-Ports) name and optional
              serial parameters.

              An example address is `alphatechnics://USB2` which would
              connect to the thermometer plugged into the meter's `USB2`
              port.

            * `modbus`: Implements the
               [Modbus/RTU](https://modbus.org/docs/Modbus_over_serial_line_V1_02.pdf)
               protocol which can connect two or more devices over
               RS485.  `devaddr` must have the format
               `modbus://map.unit@serdev` where:

                 * `map`: The name of the Modbus address map to use for
                 the device (see
                 [/sys/modbus/client/map](/webapi/4.6/openapi/sysmodbusclientmap)
                 and
                 [/config/modbus/client/map](/webapi/4.6/openapi/configmodbusclientmap)).
                 If the Modbus device supports the [SunSpec
                 standard](https://sunspec.org/), this can be `sunspec`
                 instead.  With SunSpec, the meter can automatically
                 detect the available Modbus registers.

                 * `unit`: The Modbus unit number of the device.  This
                 defaults to the value of map option
                 `default-modbus-addr` or 0 if the option is not
                 present.

                 * `serdev`: The [serial port](/webapi/4.6/openapi/glossary#section/Serial-Ports)
                 and optional serial parameters of the meter which is
                 wired to the RS485 bus.  The serial parameters default
                 to the values given by map option
                 `default-serial-params` or 19200 baud, no parity and 1
                 stop bit if the option is not present.  Alternatively,
                 `serdev` may also have the format `host:port` where
                 `host` is the hostname or IP address of an
                 RS485-to-Ethernet adapter and `port` is an optional TCP
                 port number.

                An example address is `modbus://sunspec.1@USB1` which
                would refer to a SunSpec-compatible device with unit
                number 1, connected to the meter via serial port `USB1`.

            * `po`: Implements the protocol used by older Power One
              Aurora inverters.  These inverters are no longer being
              manufactured and Power One has been acquired by
              [ABB](https://www.abb.com/).

              The inverters are connected via RS485.  The serial
              communication parameters are 19200 baud, 1 stop-bit, and
              no parity.  `devaddr` must have the format `num@addr`
              where `num` is the inverter's serial address in the range
              from 2 to 254 and `addr` is the name of the meter's
              serial-port that is wired to the RS485 bus.
              Alternatively, `addr` may also be the hostname or IP
              address of an RS485-to-Ethernet adapter that the bus is
              wired to.

            * `scpi`: Implements the
              [SCPI](https://en.wikipedia.org/wiki/Standard_Commands_for_Programmable_Instruments)
              (skippy) protocol.  `devaddr` must be a
              [serial-port](/webapi/4.6/openapi/glossary#section/Serial-Ports) name and optional
              serial parameters or a hostname or IP-address of
              serial-to-Ethernet adapter to which the SCPI-compatible
              device is connected.

              The registers available to be read are automatically
              detected based on the result of SCPI command `*IDN?`
              (Identify).  Currently, only [eGauge
              PRM3](https://store.egauge.net/Power-Relay-Module) relay
              modules are recognized.

            * `sma`: Implements the SMA Data Communication protocol
              which is used by older inverters and weather stations
              manufactured by [SMA](https://www.sma.de/).  These devices
              are connected via RS485.  The serial communication
              parameters are 1200 baud, 1 stop-bit, and no parity.  The
              protocol automatically detects connected devices and the
              available registers.  However, since the bus operates at
              only 1200 baud, detection can take several minutes.

              `devaddr` must be the name of the meter's serial-port that
              is wired to the RS485 bus.  It may also be the hostname or
              IP address of an RS485-to-Ethernet adapter that the bus is
              wired to.

            * `sony`: Implements a proprietary protocol for reading
              certain Sony battery charge controllers (BMUs) over RS232.
              Specifically, specification P5-9 027, version 2 is
              supported.  The serial port parameters are fixed to 19200
              baud, even parity, and one stop bit.
              `devaddr` must have the format `sony://num@addr` where:

                * `num`: Is the number of the battery charge controller
                  to read from.  It must be in the range from 0 to 15.

                * `addr`: Must be the hostname or IP address of the
                  RS232-to-Ethernet adapter which the charge controller
                  is connected to.

              An example address is `sony://1@192.168.1.34:10001` which
              would connect to battery charge controller 1 which is
              wired to the RS232-to-Ethernet adapter at IP address
              192.168.1.34, port 10001.

        * `tcp`: This link type can be used to read the data from
          another eGauge meter over the TCP protocol.  The address must
          be a hostname or IP address which may optionally followed by a
          vertical bar character (`|`) and a comma-separated list of
          options.  The available options are:

            * `async`: This option must be used if two or more eGauge
              meters read each other's data.  This causes a cyclic
              dependency which, without this option, would result in
              timeouts and the inability to read the remote meter's
              data.  To break the cycle, it is sufficient for one of the
              meters in the cycle to turn on this option.  The downside
              of turning on this option is that remote data will be
              recorded at the time it is received by the local meter,
              rather than the time when it was measured by the remote
              meter, as would normally be the case.

            * `sync`: This is enables the default synchronous read mode
              where remote data is recorded with the time that it was
              measured at by the remote meter.

            * `spiky`: This option affects how data is recorded after
              the remote meter is unavailable for a period of time.  By
              default, the local meter will smooth out any jumps
              (spikes) in the data that are due to the remote meter not
              being reachable.  Turning on this option disables the
              smoothing and instead records jumps as they occur.
              Normally, smoothing is preferable.  However, if a remote
              meter is frequently unreachable (10% or more of the time),
              the local meter will fall behind the remote meter data
              more and more and, in such a case, turning on this option
              would be advisable.

            The remote data is fetched via HTTP protocol (TCP port 80).
            It is not possible to specify authentication credentials.

            An example address is `eGauge1234.local|sync,spiky`.  This
            would connect to the remote meter with hostname
            `eGauge1234.local` using the `sync` and `spiky` options.

        * `tempalert`: This link type can be used to read data from
          temperature sensors manufactured by Temperature Alert (no
          longer in business).  The address must be the hostname or IP
          address of the sensor.  The data is fetched from port 80 of
          the device with the HTTP protocol.

        * `udp`: This link type can be used to read the data from
          another eGauge meter over a proprietary UDP protocol.  As
          such, it provides the same functionality as `tcp`, but since
          it runs over UDP, it is a lighter-weight, more efficient
          protocol.  The data is read from UDP port 59046.  The address
          syntax and available options are the same as for link type
          `tcp`.

      ## Lua Scripts


      In addition to [eScript](/webapi/4.6/openapi/glossary#section/eScript),
      the meter firmware also

      supports the more powerful [Lua](https://www.lua.org/manual/5.3/)

      language.  All eScript functions can be called directly from Lua.

      Conversely, eScript may also call Lua functions as long as they

      use only numbers as arguments and return a single number as a

      result.


      ## Max-Depth

      The `max-depth` parameter can be specified to limit

      the depth to which a response object or array is output.  When the

      depth-limit is reached, only a list of member names is returned for

      objects and only the length is returned for arrays.


      For example, if the full result object were:

        > `{"obj": {"a": ..., "b": ...}, "arr": [1, 2, 3, 4]}`

      then this restricted to `max-depth=2` would return:

        > `{"obj": ["a", "b"], "arr": 4}`

      That is, the value of `obj` was replaced by the list of the

      object's member names and the value of array `arr` was replaced by

      its length.


      ## Non-Transactional Updates


      When a modification request to a resource is not executed

      transactionally, it means that it may be possible to observe the

      modification of that resource before or after modifications to the

      other resources being updated within the same request.  It is also

      possible for the modification to take effect even though the

      overall request may end up failing with an error.


      ## Password Hashes


      Passwords are never written directly to this API.  Instead, only

      hashes are written which are derived from the user name, realm,

      and password.  Specifically, the hash is calculated as the

      [MD5](https://en.wikipedia.org/wiki/MD5) sum over the string

      obtained when concatenating the user name, the realm, and the

      password while using colons as field-separators.  For example, the

      hash of user name `jane`, realm `domain`, and password `secret`,

      would be:

        > MD5("jane:domain:secret") = 251910de04f5eab86859939167d4fded

      ## Physical Register Names


      Physical register names may not be empty, contain control

      characters, dots (`.`), or commas (`,`).  They may also not

      consist entirely of digits.


      Register names of locally calculated registers (registers with

      [`dev`](/webapi/4.6/openapi/configregisterphysicalregdev) set to `local`)

      attach special meaning to the last character (suffix):

        * `+`: Allowed only for power-registers ([type
          code](/webapi/4.6/openapi/glossary#section/Type-Codes) `P`).  Only positive power will be
          accumulated.

        * `-`: Allowed only for power-registers ([type
          code](/webapi/4.6/openapi/glossary#section/Type-Codes) `P`).  Only negative measured
          power will be accumulated.

        * `|`: Allowed only for power-registers ([type
          code](/webapi/4.6/openapi/glossary#section/Type-Codes) `P`).  The absolute value of the
          measured power will be accumulated.

        * `*`: Allowed only and required for apparent-power registers
          ([type code](/webapi/4.6/openapi/glossary#section/Type-Codes) `S`).

        These suffixes are not allowed for registers whose value is
        calculated by an [eScript](/webapi/4.6/openapi/glossary#section/eScript) expression.

        If the name of a locally calculated power register does not end
        with one of the above suffixes, the measured net real power is
        accumulated.  Net real power may be positive or negative,
        depending on the direction of the power flow.

      ## Serial Ports


      A serial port may be specified either as a device name or as a USB

      path.  A device name must have the format `/dev/ttyUSBn`, where

      `n` is a non-negative integer.  A USB path must have the format

      `USBpath` where `path` is a sequence of one or more non-negative

      integers, separated by dots (`.`). Resource

      [/sys/dev/serial](/webapi/4.6/openapi/sysdevserial) returns a list of
      serial

      ports detected by the meter.


      A serial port string may optionally also specify serial

      parameters.  The parameters must follow the device name and have

      the format `:b/8ps` where `b` is the baud rate (positive integer),

      `8` is the number of bits per character (must be 8), `p` is the

      parity (`n` for none, `e` for even, `o` for odd), and `s` is the

      number of stop bits (1 or 2).


      ## Service Activation


      WebAPI provides an automatic mechanism to setup communication

      between a meter and a service provider (web server).  The

      resulting communication path can be used, for example, to send

      register data ("push data") or alerts to the service provider.


      The setup mechanism is called *service activation* and is

      initiated by posting a request to end-point

      [/cmd/activate](/webapi/4.6/openapi/cmd/cmdactivatepost).  The command, in
      turn,

      executes the follow steps:

        1) Meter sends an activation request to a URL defined by the
        service provider.  This URL is called the *control URL*.

        1) The service provider may respond with an error, a
        challenge, or a service URL.  If an error is returned, service
        activation has failed and an error response is returned.  If a
        challenge is returned, execution resumes with step 3 below.  If
        a service URL is returned, execution resumes with step 4.

        1) Given a challenge response, the meter decrypts the challenge
        using a private key and sends the result to the service
        provider.  The service provider checks if the result is valid
        and, if so, responds with a service URL.  Otherwise, it responds
        with an error and service activation has failed.

        1) The meter extracts the service URL from the service
        provider's response and starts sending data to that URL.  With
        this, service activation has completed sucessfully.

      Once activated, the meter will send data to the service URL as

      needed (e.g., periodically for push data or when an alert occurs

      for the alert service).  This stops if a post to the service URL

      returns HTTP status code 418 (I'm a teapot) or if the meter gets

      reconfigured to deactivate the service.


      The details of the above steps are described below.


      ### Activation Request to Control URL


      The activation request the meter sends to the control URL is a

      `POST` request with a JSON-body containing the following members:

        * `name` (required): The [hostname](/webapi/4.6/openapi/confignethostname)
        of the meter.

        * `sn` (required): The [serial-number](/webapi/4.6/openapi/syssn) of the
        meter.

        * `opts`: If present, this is an array of strings specifying the
        service options that are understood by the meter for the service
        being activated.  If not present, the service provider must
        assume that the meter does not understand any service options.

      Additional members may be present in the posted object.  If so,

      the service provider must ignore any members whose meaning it does

      not understand.


      #### Example Activation Request


      A typical activation request body is shown below (formatted for

      readability):

        ```json
        {
          "name": "Test1234",
          "sn": "G13456789",
          "opts": ["gzip", "json", "secure"]
        }
        ```

      ### Challenge Response


      A service provider may choose to return a challenge response to

      ascertain that the activation request was actually sent by the

      meter identified in the request.  If the service provider does not

      require authentication, it can skip to directly returning a

      service URL response (see below).


      A challenge response consists of a JSON-object with the following

      members:

        * `nnc` (required): The server nonce.  This must be a string
        consisting entirely of lowercase hexadecimal digits (0-9, or
        a-f).  The server creates this nonce by:

          1) generating a sequence of cryptographically random bytes,

          1) encrypting the sequence with the meter's public key, and, finally,

          1) converting the encrypted sequence to a hexadecimal string.

        * `rid` (required): A non-negative integer that uniquely identifies
        this service activation request.

      Additional members may be present in the returned object.  If so,

      the meter will ignore any members whose meaning it does not

      understand.


      Once the meter receives a challenge response, it:

        1) decrypts the server nonce using its private key and
        converting the resulting byte sequence to a lowercase hex string
        - we will call this `rnd`,

        1) creates a cryptographically strong random hexadecimal string
        which we'll call `cnnc` (client nonce),

        1) calculates the MD5 hash of the string obtained by
        concatenating `rnd`, a colon (`:`), and `cnnc`.

        1) sends a post request to the control URL whose body is a
        JSON object with the following members:

        * `cnnc` (required): The client nonce.

        * `hash` (required): The calculated MD5 hash as a hexadecimal
          string.

        * `rid` (required): A copy of the `rid` member as received in
        the challenge response.

      When the service provider receives the post request, it can check

      whether the meter is authentic by calculating the MD5 sum of the

      concatenation of the server's random hexadecimal string `rnd`, a

      colon, and the client nonce and confirming that it matches the

      value of `hash` in the posted JSON object.  If there is a

      mismatch, service activation has failed and the provider returns

      an error response.


      #### Example of Challenge Response and Resulting Meter Request


      A typical challenge response is shown below (formatted for

      readability and `nnc` shortened with an ellipsis):

        ```json
        {
          "nnc": "76e75...9fbc",
          "rid": 4102166033
        }
        ```

      In return to this challenge, the meter would then send a post

      request to the control URL with a body that might look like this:

        ```json
        {
          "cnnc": "565ce9541eddec103347b5174704e188",
          "hash": "ce5e308c27da651964de14f65bd8b059",
          "rid": 4102166033
        }
        ```

      If the authentication is successful, the service provider responds

      with a service URL response.


      ### Service URL Response


      Upon successful service activation, the provider returns a

      response body containing a JSON object with the following

      members:

        1) `url` (required): The service URL to which the service's data
        should be sent.

        1) `options`: The service options to use.  This must be a string
        containing a comma-separated list of option names.  Certain
        options may require a value.  For those, the option name must be
        followed immediately by an equal sign (`=`) and the option value
        (no whitespace is allowed).

        1) `pw`: If specified, the password to use when sending the post
        request to the service URL.

        1) `user`: If specified, the username to use when sending the
        post request to the service URL.  The username and password are
        sent using an [HTTP basic authentication
        header](https://datatracker.ietf.org/doc/html/rfc7617).  For
        security reasons, this should only be used over secure (`https`)
        connections.

      Additional members may be present in the returned object.  If so,

      the meter will ignore any members whose meaning it does not

      understand.


      #### Example Service URL Response


      ```json

      {
        "url": "https://provider.com/alert/post/a08b44098",
        "options": "json,gzip,min_prio=7"
      }

      ```


      ### Error Response


      If service activation fails, HTTP status 200 must be returned with

      a response body which contains member `error`.  The value of

      `error` must be a string explaining why service activation failed.

      The string is typically in the locale of the service provider.


      The returned JSON object may contain additional members which the

      meter must ignore.


      ## Time Expressions


      A time expression defines a single point in time.  An absolute

      time expression is a number, a time-point name, or a function

      call.  A number is interpreted as a [Unix

      timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp). 
      Time-point names are

      described [here](/webapi/4.6/openapi/glossary#section/Time-Point-Names). 
      A function call

      consists of a name, immediately followed by a time expression in

      parentheses.  The following supported function names and their

      meaning are as follows:

        * `soy(t)`: Returns the timestamp of the start of the year in
          which `t` falls.

        * `soq(t)`: Returns the timestamp of the start of the quarter in
          which `t` falls.

        * `sob(t)`: Returns the timestamp of the start of the billing
        cycle in which `t` falls.  [Server-storage](/webapi/4.6/openapi/configvar)
        variable `global.billing.start_day` establishes the day of the
        month a new billing period starts.  If that day is greater than
        the number of days in the current month, the last day of that
        month is taken as the start of the billing period.  The new
        billing cycle is assumed to start at 12pm on the billing day
        (meter-local time).

        * `som(t)`: Returns the timestamp of the start of the month in
          which time `t` falls.

        * `sow(t)`: Returns the timestamp of the start of the week in
        which `t` falls.  Monday is considered to be the start of
        the week.

        * `sod(t)`: Returns the timestamp of the start of the day in
          which `t` falls.

        * `soh(t)`: Returns the timestamp of the start of the hour in
          which `t` falls.

        * `soQ(t)`: Returns the timestamp of the start of the quarter
          hour in which `t` falls.

        * `soM(t)`: Returns the timestamp of the start of the minute in
          which `t` falls.

        * `sos(t)`: Returns the timestamp of the start of the second in
          which `t` falls.

      An absolute time expression may be followed by one or more offsets

      that are added to or subtracted from the value of the absolute

      time expression.  Each offset starts with a plus or minus sign, an

      integer number, and an optional unit.  Without a unit, the

      specified number may contain a fractional part and indicates the

      number of seconds to be added/subtracted.  Otherwise, the unit may

      be one of:

        * `y`: years
        * `q`: quarters
        * `b`: billing-cycles
        * `m`: months
        * `w`: weeks
        * `d`: days
        * `h`: hours
        * `Q`: quarter-hours
        * `M`: minutes

      For an offset with a unit, the specified number of time periods

      are added to/subtracted from the timestamp.  For example,

      `som(now)+1d-1h` would return the start of the last hour of the

      first day of the current month as `som(now)` returns the start of

      the current month, `+1d` would add one day to that, and `-1h`

      would subtract 1 hour from the result.


      Due to irregularities in the Gregorian calendar, normal rules of

      addition do not apply and the order in which the offsets are

      applied is significant.  When adding/subtracting months or

      billing-cycles, the operations ensures that the final date is

      valid.  For example, adding `1m` to January 31st would yield the

      last day of February, which would be either February 28th or 29th,

      depending on whether or not the year is a leap-year.


      ### Formal Definition


      The full syntax for a time expression is given in EBNF syntax below:

        > *TIME* = *ABSOLUTE* {("+" | "-")*OFFSET*} . \
        > *ABSOLUTE* = *UNIX_TS* | *POINT_NAME* | *FCALL* . \
        > *UNIX_TS* = ["+"|"-"] *SECONDS* . \
        > *FCALL* = *FNAME* "(" *TIME* ")" . \
        > *FNAME* = "soy" | "soq" | "sob" | "som" | "sow" | "sod" | "soh" | "soQ" | "soM" . \
        > *POINT_NAME* = "now" | "epoch" | *FNAME* . \
        > *OFFSET* = (*UNSIGNED_INTEGER* *UNIT*) | *SECONDS*. \
        > *UNIT* = "y" | "q" | "b" | "m" | "w" | "d" | "h" | "Q" | "M". \
        > *SECONDS* = *UNSIGNED_INTEGER* ["." *UNSIGNED_INTEGER*] .

      A time point name that consists of a function name which is not

      immediately followed by a left parenthesis is interpreted as if

      the function of the same name had been called on the current time

      (`now`).  For example, `sod` is equivalent to `sod(now)`.


      ## Time Point Names


      Time-point names provide a way to refer to both absolute points in

      time as well as times relative to the current time.  Specifically:

        * `now`: The most recent time for which the meter has collected
        data.

        * `epoch`: The time at which the meter started recording data.
        That is, the oldest time for which the database will return
        data.  This time is user configurable via
        [/config/db/epoch](/webapi/4.6/openapi/configdbepoch).

        * `soy`: Short for [`soy(now)`](/webapi/4.6/openapi/glossary#section/Time-Expressions).

        * `soq`: Short for [`soq(now)`](/webapi/4.6/openapi/glossary#section/Time-Expressions).

        * `sob`: Short for [`sob(now)`](/webapi/4.6/openapi/glossary#section/Time-Expressions).

        * `som`: Short for [`som(now)`](/webapi/4.6/openapi/glossary#section/Time-Expressions).

        * `sow`: Short for [`sow(now)`](/webapi/4.6/openapi/glossary#section/Time-Expressions).

        * `sod`: Short for [`sod(now)`](/webapi/4.6/openapi/glossary#section/Time-Expressions).

        * `soh`: Short for [`soh(now)`](/webapi/4.6/openapi/glossary#section/Time-Expressions).

        * `soQ`: Short for [`soQ(now)`](/webapi/4.6/openapi/glossary#section/Time-Expressions).

        * `soM`: Short for [`soM(now)`](/webapi/4.6/openapi/glossary#section/Time-Expressions).


      ## Time Ranges


      A time range is an ordered series of [Unix

      timestamps](/webapi/4.6/openapi/glossary#section/Unix-Timestamp) which are
      spaced out at a

      certain interval between two points in time.  Time ranges are

      written as three decimal numbers, separated by colons:

      `start:step:stop`, where `start` is the oldest timestamp, `step`

      is the interval between timestamps, and `stop` is the youngest

      timestamp.  For example, `100:1:103` would correspond to the

      timestamp series `[100, 101, 102, 103]`.  If `step` and the

      subsequent colon are left out, the interval defaults to one

      second.  If `step` is an empty string, the range consists of only

      the start and end timestamps.  For example, `100::103` would

      correspond to `[100, 103]`.  If the timerange consists of only a

      single number, it is interpreted as a singleton consisting of only

      the specified time.


      The timestamps are generated from `youngest` to `oldest`.  Thus, if

      the oldest timestamp is not an integer-multiple of `step` apart

      from `youngest`, then the oldest timestamp will not be in the

      series of generated timestamps.


      In general, `start` and `stop` can be not just Unix timestamps

      but arbitrary [time
      expressions](/webapi/4.6/openapi/glossary#section/Time-Expressions).


      Similarly, the time step may also be expressed as an integer count

      followed by a unit character.  The available units are the same as

      for offsets in time expressions.  For example, `1d` would step

      through the time range one day at a time, taking daylight savings

      into account (assuming the correct

      [timezone](/webapi/4.6/openapi/configtimezone) is set on the meter).


      As a complete example, the time range `som:1d:sod` would generate

      the timestamps that correspond to midnight each day of the current

      month to date. `sod` is the start (midnight) of today and from

      there, the timestamps step back one day at a time until `som`, the

      start of the month is reached.


      When a time range is used to select rows from the database, the

      resulting timestamps may not align with the timestamps of the rows

      stored in the database.  When this happens, the meter will, by

      default, round down the specified timestamp to that of the nearest

      older row.  However, if the starting or ending timestamp starts

      with a plus sign (`+`), the meter will instead round the timestamp

      up to that of the nearest younger row.


      ### Formal Definition


      The full syntax for a time range is given in EBNF syntax below:

        > *TIME_RANGE* = [*FROM* ":" [[*STEP*] ":"]]*TO* . \
        > *FROM* = *TIME_WITH_ROUNDING* . \
        > *TO* = *TIME_WITH_ROUNDING* . \
        > *STEP* = *OFFSET* . \
        > *TIME_WITH_ROUNDING* = ["+"]*TIME* .

      See section [Time
      Expressions](/webapi/4.6/openapi/glossary#section/Time-Expressions) for

      definitions of *OFFSET* and *TIME*.


      ## Type Codes


      Each register records values in a physical unit indicated by a

      type code.  Apart from the physical unit, the type code also

      defines the quantum with which a value is recorded in the

      database.


      To understand the role of the quantum, you need to know that the

      database stores all values as signed 64-bit integer numbers.  For

      all type codes except `d` (discrete numbers), the meter

      accumulates values before storing them in the database.  Let us

      see how this is done for a sensor that measures a voltage.  If we

      look up type code `V` in the table below, we see that the quantum

      _q_ for a voltage is 0.001.  Now, suppose the voltage _v_ of a

      sensor was measured to be 120V on average over a measurement

      interval _dt_ of one second and that the previous accumulated

      value of that sensor was _c0_.  The meter would then calculate the

      new accumulated value _c1_ as:

        > _c1_ = _c0_ + round(_v_ / _quantum_)·_dt_

      or

        > _c1_ = _c0_ + round(120V / 0.001)·1s = _c0_ + 120000 V·s

      This new accumulated value is then stored in the database.  In

      other words, for every second where the average voltage is 120V,

      the value stored in the database would increase by 120000.  This

      also shows that the accumulated values stored in the database have

      a unit that is the rate unit multiplied by seconds.  For volts,

      that turns into volt-seconds.  Similarly, power in watts would be

      recorded as watt-seconds (or joules), and speed in

      meters-per-second would be recorded as meters.


      Note that an accumulated value may eventually overflow if the

      measured rate has predominantly the same sign for a very long

      period of time.  If that were to happen, the value would wrap

      around from a large positive value to a large negative value or

      vice versa.  The quanta have been selected such that under normal

      circumstances, wrap-arounds will not occur within the lifetime of

      a meter.  Nevertheless, when calculating how much an accumulated

      value changed between two points in time, we recommend calculating

      that difference modulo 2<sup>63</sup> since that will give the

      correct result provided at most one wrap-around occurred between

      the two points in time.


      Discrete numbers (type code `d`) are unit-less and are used to

      record discrete states (such as error states or bitsets).  Such

      quantities cannot be averaged and hence they are not accumulated.

      Instead, they are stored directly as signed 64-bit integers in the

      database.


      | Type code | Physical quantity       |   Rate unit   | Quantum |

      | :-------: | ----------------------- | ------------: | ------- |

      | `#`   | Whole number                |               |       1 |

      | `#3`  | Number with 3 decimal places|               |   0.001 |

      | `%`   | Percentage                  |   %           |   0.001 |

      | `$`   | Monetary accrual rate       |${currency}/s  |2<sup>-29</sup>|

      | `a`   | Angle                       |   °           |   0.001 |

      | `aq`  | Air quality index (0=good, 500=bad)|s       |   0.001 |

      | `d`   | Discrete number             |               |       1 |

      | `Ee`  | Irradiance                  |W/m<sup>2</sup>|     1 |

      | `F`   | Frequency                   |  Hz           |   0.001 |

      | `h`   | Relative humidity           |   %           |   0.001 |

      | `I`   | Electrical current          |   A           |   0.001 |

      | `m`   | Mass                        |   g           |   0.001 |

      | `P`   | Power                       |   W           |       1 |

      | `Pa`  | Pressure                    |  Pa           |       1 |

      | `ppm` | Parts per million           | ppm           |   0.001 |

      | `var` | Reactive power              | var           |       1 |

      | `Q`   | Mass flow                   | g/s           |       1 |

      | `Qe`  | Electric charge             |  Ah           |   0.001 |

      | `Qv`  | Volumetric flow             |m<sup>3</sup>/s|10<sup>-9</sup>|

      | `R`   | Electric resistance         |   Ω           |       1 |

      | `S`   | Apparent power              |  VA           |       1 |

      | `T`   | Temperature                 |  °C           |   0.001 |

      | `THD` | Total harmonic distortion   |   %           |   0.001 |

      | `V`   | Voltage                     |   V           |   0.001 |

      | `v`   | Speed                       | m/s           |   0.001 |


      **Note** For the monetary unit, `${currency}` should be replaced

      by the the currency symbol applicable to the region the meter is

      installed in.  The builtin user interface of the meter uses the

      value of [server-storage](/webapi/4.6/openapi/configvar) variable

      `global.default.currency_symbol` for this purpose or, if

      undefined, a dollar sign (`$`).


      ## Unix Timestamp


      A Unix timestamp is a number that counts the seconds since the

      start of January 1, 1970 UTC.


      ## User Privileges


      Users may have the one or more of the following privileges:

        * `unlimited_save`: The user may change (save) the meter
          configuration.

        * `local_save`: The user may change (save) the meter
          configuration but only when connected over a local network
          connection. LAN-connections are considered local if the user's
          browser is on the same subnet as the meter. Bluetooth
          connections are always considered local. All other connections
          (e.g., via proxy server) are considered not local.

        * `view_settings`: The user may view the meter configuration.
          Without this privilege, the user only has access to
          configuration settings that are directly related to the user.

        * `ctrl`: The user may issue control operations such as putting
          a device in a particular operational state (e.g., opening or
          closing a relay or setting the temperature on a thermostat).

        * `restricted_view`: The user only has restricted access to the
          meter data. Specifically, the user may only view registers in
          the [view](/webapi/4.6/openapi/glossary#section/View-Names) that matches the user
          name.

        While access to the device is generally governed by these
        privileges, there are two exceptions:

          * Users without `view_settings` privilege may still read their
            own user configuration (but not that of any other user).

          * Users without `save` privilege (`unlimited_save` or
            `local_save`) may still change their own password.

      ## View Names


      Views are used to group related registers.  For example, if a

      single meter measures multiple apartments, a separate view could

      be defined for each apartment.  A user-interface can then offer to

      display all measurements for a particular apartment by selecting

      the desired apartment's view name.  Similarly, users can be setup

      so that they may access only a particular view.  That way, views

      can be used to ensure, for example, that each apartment tenant can

      only view their own data.


      In this API, view names are defined as part of a register name.

      Specifically, the view name is written as prefix of the register

      name, followed by a dot.  For example, the string `apt1.cooktop`

      defines register `cooktop` as being part of view `apt1`.


      ## Virtual Register Formulas


      The values of virtual registers are calculated based on the values

      of physical registers.  The formulas for these calculations are

      limited to addition and subtraction.  When expressed as a JSON

      string, virtual register formulas are written as a sequence of

      register names which are prefixed either by a plus sign (`+`) to

      indicate addition or by a minus sign (`-`) to indicate

      subtraction.  The register names are enclosed in double-quotes.

      Within a register name, a double-quote character can be included

      by prefixing it with a backslash character: `\"`.  Likewise, to

      include a literal backslash character in the name, it must be

      doubled up and written as `\\`.


      As an example, the formula:


      ```json

      +"Panel \"A\""+"Solar+"-"EV"

      ```


      would calculate the virtual register value by adding the values of

      registers `Panel "A"` and `Solar+` and then subtracting the value

      of register `EV`.


      **Note**


      Old meters may still use deprecated operators in virtual register

      formulas.  The syntax for these operators is `op(reg,n)` where

      `op` is either `MIN` or `MAX` (case-sensitive), `reg` is a

      register name, and `n` is an integer constant (usually 0).  These

      operators are deprecated because they only work correctly when the

      formula is applied to rates, not when applied to accumulated

      register values.  When applied to rates, these operators should

      work as follows:

        * `MAX(reg,n)`: Returns the value of register `reg` if it is
        greater than `n` or `n` otherwise.

        * `MIN(reg,n)`: Returns the value of register `reg` if it is
        less than `n` or `n` otherwise.
paths:
  /auth/login:
    post:
      tags:
        - /auth
      summary: Obtain token
      operationId: authLoginPost
      description: |
        There are two ways for supplying credentials to
        obtain a token:

          1) With a Digest object in the request body, a token is
          obtained without transmitting the password.

          1) With a Password object in the request body, a token is
          obtained with a password.  This option is available only over
          a secure connection (`https://` scheme).

          We recommend using Digest-based authentication whenever possible.
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/DigestObject'
                - $ref: '#/components/schemas/PasswordObject'
      responses:
        '200':
          description: Authentication response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JWTObject'
        '400':
          description: Bad Request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
              example:
                error: Bad Request
  /auth/logout:
    get:
      tags:
        - /auth
      summary: Revoke token
      operationId: authLogoutGet
      description: |
        Revoke the JWT supplied as the bearer token in the Authorization
        header.
      responses:
        '200':
          description: Logout response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '400':
          description: Bad Request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorObject'
              example:
                error: Bad Request
  /auth/unauthorized:
    get:
      tags:
        - /auth
      summary: Validate token
      operationId: authUnauthorizedGet
      description: |
        This resource returns a 401 response unless the request contains
        an `Authorized` header with a valid JWT token.  This can be used
        to check the validity of a JWT token and, if invalid, obtain the
        realm and server nonce required to refresh the token.
      responses:
        '200':
          description: Status response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
                example: You are logged in.
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /auth/rights:
    get:
      tags:
        - /auth
      summary: Get token rights
      operationId: authRightsGet
      description: Return the list of rights associated with the token.
      responses:
        '200':
          description: Rights response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RightsObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /capture:
    get:
      tags:
        - /capture
      summary: Capture waveform data
      operationId: captureGet
      parameters:
        - name: C
          in: query
          description: The channel number to use as the trigger.
          schema:
            type: integer
            minimum: 0
        - name: M
          in: query
          description: |
            The trigger mode to use.  `any` triggers immediately, `rise`
            triggers when a rising edge crosses the trigger level, `fall`
            triggers when a falling edge crosses the trigger level, `gt`
            triggers when the trigger channel's sample value is greater
            than the trigger level, and `lt` triggers when it is less than
            the trigger level.
          schema:
            type: string
            enum:
              - any
              - rise
              - fall
              - gt
              - lt
        - name: L
          in: query
          description: The trigger level.
          schema:
            type: number
        - name: R
          in: query
          description: |
            If present, this query parameter cancels a pending capture and
            resets the state to `available`.  If a value for query
            parameter `n` is also specified, only the matching capture is
            canceled.  Otherwise, any pending capture is canceled.
          allowEmptyValue: true
          schema:
            type: boolean
        - name: T
          in: query
          description: |
            Trigger timeout in milliseconds.  After starting a capture, if
            the trigger condition is not satisfied within this timeout
            period, the capture is auto-triggered.
          schema:
            type: number
            minimum: 0
        - name: c
          in: query
          description: |
            Channel number to be captured.  This query parameter can be
            specified multiple times to capture multiple channels.  If not
            specified, all configured channels are captured by default.
          schema:
            type: integer
            minimum: 0
        - name: d
          in: query
          description: |
            Capture duration in seconds.  If less than or equal to 0, the
            maximum number of samples are acquired. This maximum is
            implementation dependent but, generally, a fixed size buffer
            is used to store all samples of all channels, so the more
            channels are being captured, the lower the upper bound for
            this value.  If the value is greater than this upper bound, it
            is automatically capped at that value.
          schema:
            type: number
        - name: i
          in: query
          allowEmptyValue: true
          description: |
            Return a channel info object, describing each channel that may
            be captured, its name and its physical unit.
          schema:
            type: boolean
        - name: 'n'
          in: query
          allowEmptyValue: true
          description: |
            Non-blocking operation.  If the query parameter has no value
            or an empty string value, this requests that a capture is
            initiated without waiting for the result to be available
            (asynchronous operation).  In this case, a cookie object is
            returned which contains a token.  The token can be used in
            subsequent requests to fetch the result of the capture or to
            check on its status.

            If a value is specified, it must be a token returned in an
            earlier cookie object response.  In this case, the capture
            status is reported via a progress object if it is still
            pending or a capture result object if the capture is complete.
          schema:
            type: integer
            minimum: 0
        - name: p
          in: query
          description: |
            Pre-trigger duration in seconds.  Specifies how many seconds
            of samples before the trigger point should be acquired.  If
            omitted, this defaults to 0 seconds of pre-trigger data.
          schema:
            type: number
        - name: t
          in: query
          description: |
            If present, this query parameter requests that the data should
            be returned as plain text rather than as JSON.
          deprecated: true
          schema:
            type: boolean
        - name: r
          in: query
          allowEmptyValue: true
          description: |
            If present, this query parameter requests that the sample
            values should be returned as raw (digital) sample values
            rather than as values converted to the channel's physical
            unit.
          schema:
            type: boolean
      responses:
        '200':
          description: Capture response.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/CaptureChannelInfoObject'
                  - $ref: '#/components/schemas/CaptureCookieObject'
                  - $ref: '#/components/schemas/CaptureProgressObject'
                  - $ref: '#/components/schemas/CaptureResultObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /cmd/activate:
    post:
      tags:
        - /cmd
      summary: Activate a service
      operationId: cmdActivatePost
      description: |
        Activate a service with an external provider (web server).

        This request returns a token which can then be used to monitor
        the status of the operation.  See
        [/sys/status/*token*/result](/webapi/4.6/openapi/sysstatustokenresult)
        for details.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                service:
                  type: string
                  enum:
                    - alert
                    - push
                  description: |
                    The type of service to activate.  This can be `alert` for
                    the alert reporting service or `push` for the data-sharing
                    service.
                provider:
                  type: string
                  example: Cloudly's Alert Service
                  description: |
                    The name of the service provider with which to activate
                    the service.
              required:
                - service
                - provider
      responses:
        '200':
          description: Activation response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /cmd/cancel:
    post:
      tags:
        - /cmd
      summary: Cancel pending operation
      operationId: cmdCancelPost
      description: |
        Cancel the long-running operation identified by its token.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                token:
                  type: string
                  minLength: 32
                  description: |
                    The token of the operation to be cancelled.  This
                    token is the hexadecimal string (typically 32
                    characters long) that was returned when the
                    operation was initiated.
                  example: 473c31462e62848b5352314dfc608669
      responses:
        '200':
          description: Cancel response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /cmd/clear:
    post:
      tags:
        - /cmd
      summary: Clear data
      operationId: cmdClearPost
      description: |
        Clear data.  The string in the request body identifies what data
        to clear:

          * `excess`: For register values that are read from a remote
            device, it is possible that the meter may not be able to
            reach the remote device at times (e.g., due to a networking
            problem).  If the remote device provides cumulative values,
            this means that when the remote device becomes accessible
            again, the cumulative value may have increased
            significantly, which could then cause a spike in the graphed
            values for that register.  To prevent such spikes, the meter
            will instead record the jump as an *excess* and then replay
            that excess gradually over time so that the meter can catch
            up to the true value without causing a spike.  Executing
            this command clears to zero the excess of all registers.
            This will typically cause a spike in the graphed values for
            any remote registers which had a non-zero excess but, on the
            positive side, will then ensure that the cumulative
            values afterwards match those of the remote
            device(s).

            **Note** If excess keeps accumulating, it may be better to
            use the [`spiky`](/webapi/4.6/openapi/configremote) option for remote
            registers.

          * `web_cache`: Clears the web server cache of compressed
            files.  Under normal circumstances, it is not necessary to
            clear this cache explicitly.  However, this command can be
            used in case the cache gets corrupted, e.g., due to a power
            cycle while the meter is in the middle of writing a cache
            file.
      requestBody:
        content:
          application/json:
            schema:
              type: string
              enum:
                - excess
                - web_cache
      responses:
        '200':
          description: Clear response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /cmd/db:
    post:
      tags:
        - /cmd
      summary: Manipulate database
      operationId: cmdDbPost
      description: |
        This command supports restoring the database from a backup file,
        zeroing of all or parts of the database, as well as splitting
        the positive values of certain registers into separate
        positive-only registers.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                action:
                  type: string
                  enum:
                    - restore
                    - zero
                    - split
                  description: |
                    The action to perform.  The possible values are:

                      * `restore`: Restores data from a backup file to
                        the device database.
                      * `zero`: Zeroes out one or more registers in the
                        device database.
                      * `split`: Split the positive changes of a net
                        register into a separate positive-only register.
                from:
                  description: |
                    If specified, this limits the operation to data
                    that is not older than the timestamp specified
                    here.
                  $ref: '#/components/schemas/ForeverStamp'
                to:
                  description: |
                    If specified, this limits the operation to data
                    that is not younger than the timestamp specified
                    here.
                  $ref: '#/components/schemas/ForeverStamp'
                regs:
                  type: array
                  items:
                    type: integer
                    minimum: 0
                  description: >
                    If specified, the operation is limited to the

                    registers whose [database

                    ids](/webapi/4.6/openapi/configregisterphysicalregdid)
                    appear in

                    this list.
                data:
                  type: string
                  description: |
                    This member is required for action `restore`. It
                    contains the binary backup data to be restored,
                    encoded in
                    [base64](https://en.wikipedia.org/wiki/Base64). A
                    device may reject a restore request if this member
                    is larger than 2 MiB.  It may therefore be necessary
                    to split up a large backup file into multiple
                    smaller chunks that are then restored one after the
                    other.
                more_chunks:
                  type: boolean
                  description: |
                    This is used only for `restore` operations.  It
                    indicates whether a the backup data has been
                    split up into multiple chunks and the current chunk
                    is to be follow by the next older, adjacent chunk.
                    Setting this flag is not required, but doing so can
                    greatly speed up a restore operation.  On the other
                    hand, setting this flag to `true` without following
                    it up with the next older adjacent chunk can leave
                    the database in a corrupted state, with large spikes
                    at the beginning of the current chunk.
              required:
                - action
      responses:
        '200':
          description: DB response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /cmd/factory-restore:
    post:
      tags:
        - /cmd
      summary: Restore factory settings
      operationId: cmdFactoryRestorePost
      description: |
        Restore the factory settings and reboot the meter.

        **Warning** All existing data and settings will be lost.
      responses:
        '200':
          description: Restore factory settings response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /cmd/homeplug:
    post:
      tags:
        - /cmd
      summary: Manage HomePlug
      operationId: cmdHomePlugPost
      description: |
        Manage one or more HomePlug devices.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                action:
                  type: string
                  enum:
                    - setpwd
                  description: |
                    The action to perform.  The only action currently
                    supported is `setpwd`.  It establishes a new encryption
                    password on the meter's HomePlug bridge and one or more
                    remote bridges.
                password:
                  type: string
                  example: HomePlugAV
                  minLength: 4
                  maxLength: 24
                  description: |
                    The password to use for encrypting the HomePlug
                    traffic.  The password may consist of any characters
                    except for double-quote or control characters.
                targets:
                  type: array
                  minItems: 1
                  example:
                    - 11:22:33:44:55:66/ABCD-EFGH-IJKL-MNOP
                    - 78:9a:bc:de:f0:01/TPED-PBTX-BLRQ-CPER
                  description: |
                    The list of bridges on which to set the new
                    password.  Each bridge is identified by a string
                    that specifies its MAC address (in the form
                    `xx:xx:xx:xx:xx:xx` where `x` is a hexadecimal
                    digit), followed by a slash character (`/`),
                    followed by the bridge's device encryption key
                    (DEK).  The latter can be found printed on the label
                    of the bridge.
                  items:
                    type: string
              required:
                - action
                - password
                - targets
      responses:
        '200':
          description: Manage HomePlug response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /cmd/reboot:
    post:
      tags:
        - /cmd
      summary: Reboot the meter
      operationId: cmdRebootPost
      description: |
        Initiate a reboot of the meter. The actual reboot command is
        delayed by one second to increase the likelihood that the reply
        to this request can be received by the client before the meter
        shuts down.

        Once initiated, the meter will be unavailable for a while
        (typically, 20 to 60 seconds). If the network configuration of
        the meter was changed, the reboot may cause the meter to not
        become available again at the old network address. Thus, the
        client should check for such changes before initiating the
        reboot and take appropriate action if the network configuration
        did change.
      responses:
        '200':
          description: Set time response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /cmd/set-time:
    post:
      tags:
        - /cmd
      summary: Set date and time
      operationId: cmdSetTimePost
      description: |
        Optionally set the date/time of the meter and restart the NTP
        and/or the PTP services, if configured.
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/ForeverStamp'
                - type: 'null'
                  description: |
                    Do not set the date/time.  Only restart NTP and/or
                    PTP, if configured.
      responses:
        '200':
          description: Set time response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /cmd/test-email:
    post:
      tags:
        - /cmd
      summary: Test sending email
      operationId: cmdTestemailPost
      description: |
        Test sending an email using the mail configuration specified
        in the body of this request.

        This request returns a token which can then be used to monitor
        the status of the operation.  See
        [/sys/status/*token*/result](/webapi/4.6/openapi/sysstatustokenresult)
        for details.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                address:
                  type: string
                  example: user@domain.com
                  description: |
                    The email address to send the test email to.
                smarthost:
                  type: string
                  example: smtp.domain.com
                  description: |
                    The hostname of the smart host (mail relay) through
                    which to send the email.  If this is left
                    unspecified, the meter will attempt to send the
                    email directly to the destination address.
                mailuser:
                  type: string
                  example: username
                  description: |
                    If a smarthost is defined, this specifies the user
                    name which is used to log into the smart host.  If
                    left unspecified, the meter will attempt to send the
                    email without authentication.
                mailpass:
                  type: string
                  example: secret-pw
                  description: |
                    If a smarthost is defined, this specifies the password
                    which is used to log into the smart host.  If
                    left unspecified, the meter will attempt to send the
                    email without authentication.
                fromaddr:
                  type: string
                  example: nobody@eGauge123456
                  description: |
                    The email address to use as the sender of the email
                    ("From:" address).
              required:
                - address
      responses:
        '200':
          description: Test email response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /cmd/test-remote:
    post:
      tags:
        - /cmd
      summary: Test remote device
      operationId: cmdTestremotePost
      description: |
        Try connecting to a remote device and, if successful, return
        the set of registers available on the device.

        This request returns a token which can then be used to monitor
        the status of the operation.  See
        [/sys/status/*token*/result](/webapi/4.6/openapi/sysstatustokenresult)
        for details.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                address:
                  type: string
                  example: modbus://sunspec.1@USB2
                  description: |
                    The address of the remote device.  The format of
                    this string depends on the value of `linktype`.
                linktype:
                  type: string
                  example: slowd
                  description: >
                    The [link
                    type](/webapi/4.6/openapi/glossary#section/Link-Types) to
                    use to

                    connect to the remote device.
              required:
                - address
                - linktype
      responses:
        '200':
          description: Test remote device response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /cmd/update:
    post:
      tags:
        - /cmd
      summary: Update the meter
      operationId: cmdUpdatePost
      description: |
        Update the meter firmware or kernel.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                action:
                  type: string
                  enum:
                    - list
                    - install
                  description: |
                    The action to perform. The value `list` requests
                    that the latest available version should be returned
                    as a version object response.

                    The value `install` requests that the kernel or
                    firmware should be updated.  In this case, a token
                    is returned.  With that, the progress of the
                    installation can be monitor at
                    [/sys/status/*token*](/webapi/4.6/openapi/sysstatustoken).
                target:
                  type: string
                  enum:
                    - fw
                    - kernel
                  description: |
                    The target of the action. A value of `fw` indicates
                    that the meter firmware is the target of the action,
                    a value of `kernel` indicates that the kernel is the
                    target.
                branch:
                  type: string
                  description: |
                    The release branch to install from or to list the
                    available version for. If left unspecified, this
                    defaults to the branch the currently running
                    firmware was installed from.  An empty string refers
                    to the default release branch.
                force:
                  type: boolean
                  description: |
                    If `true`, the firmware/kernel is installed even if
                    the version to be installed does not appear to be
                    newer than the currently installed version.
                version:
                  type: string
                  example: 4.5
                  description: |
                    The version to install.

                    **Note** Downgrading to an older firmware or kernel
                    may have unpredictable effects and may damage the
                    meter.
              required:
                - action
                - target
      responses:
        '200':
          description: Update response.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/VersionObject'
                  - $ref: '#/components/schemas/TokenObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /cmd/wlan:
    post:
      tags:
        - /cmd
      summary: Manage WLAN (WiFi) connection
      operationId: cmdWlanPost
      description: |
        Manage WLAN (Wi-Fi) connection.  See
        [/sys/net/wlan](/webapi/4.6/openapi/sysnetwlan) to get the currently
        detected and configured WLAN networks.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                action:
                  type: string
                  enum:
                    - add
                    - select
                    - forget
                  description: |
                    The action to perform.  It must be one of:

                      * `add`: Add a WLAN network by specifying its SSID,
                        whether or not it is a hidden network, and,
                        optionally, its passphrase or passkey.  If adding
                        the network succeeds, it is also selected as the
                        currently active one.
                      * `select`: Select a network as the currently active one.
                      * `forget`: Forget the information associated with
                        a network.
                hex:
                  type: boolean
                  description: |
                    Must be set to `true` if member `key` is a
                    hexadecimal key rather than a passphrase.
                hidden:
                  type: boolean
                  description: |
                    Must be set to `true` if the network to be added is
                    hidden (i.e., its SSID is not being broadcast).
                id:
                  type: integer
                  minimum: 0
                  description: |
                    The id of the network that should be selected or
                    forgotten.
                key:
                  type: string
                  example: secrets-secrets
                  description: |
                    The passphrase or hex key to use for the network
                    being added. If omitted, the newly added network has
                    key management disabled.
                ssid:
                  type: string
                  description: |
                    The name (SSID) of the network to be added.  The
                    characters in this string may be any Unicode
                     character except for ASCII newline or ASCII NUL.
              required:
                - action
      responses:
        '200':
          description: WLAN response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /ctid:
    get:
      tags:
        - /ctid
      summary: Get all CTid® information
      operationId: ctidGet
      description: |
        Read the existing (previously scanned) CTid® info of all sensor
        ports.
      responses:
        '200':
          description: CTid® information response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  info:
                    type: array
                    items:
                      $ref: '#/components/schemas/CTidInfoObject'
                  error:
                    $ref: '#/components/schemas/ErrorString'
                example:
                  info:
                    - ts: '1678384222'
                      tid: 2
                      port: 1
                      polarity: +
                      version: 4
                      mfgid: 0
                      model: EV1000
                      sn: 80
                      k: 3
                      rsrc: 160
                      rload: 10000000
                      params:
                        scale: 2071.98706
                        offset: 0
                        delay: 116.27
                        unit: 0
                    - ts: '1668455577'
                      tid: 2008264382
                      port: 2
                      polarity: +
                      version: 2
                      mfgid: 0
                      model: ERA
                      sn: 2
                      k: 2
                      rsvd: 0
                      mfgdata: 0
                      rsrc: 176
                      rload: 10000000
                      params:
                        size: 106
                        i: 2775
                        v: 0.33333
                        a: 0.45
                        tv: 0
                        ta: 0
                        cal:
                          '1.5':
                            v: 0
                            a: 0
                          '5.0':
                            v: 0
                            a: 0
                          '15.0':
                            v: 0
                            a: 0
                          '50.0':
                            v: 0
                            a: 0
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    put:
      tags:
        - /ctid
      summary: Replace saved CTid® info of several sensors
      operationId: ctidPut
      description: |
        Write CTid® info of the sensor ports specified in the request
        body to the meter.  This does _not_ update the CTid® info on the
        sensors themselves.

        This method is supported mainly for testing purposes.  However,
        it could also be used to fix faulty or inaccurate sensor
        information.  The written information will persist only until
        the sensor ports are scanned again, so this would only be a
        temporary fix.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                info:
                  type: array
                  minItems: 1
                  items:
                    $ref: '#/components/schemas/CTidInfoObject'
      responses:
        '200':
          description: CTid® information response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /ctid/{port}:
    parameters:
      - description: |
          The port number to apply this request to.
        in: path
        name: port
        required: true
        schema:
          type: integer
          minimum: 1
    get:
      tags:
        - /ctid
      summary: Get CTid® info of a port
      operationId: ctidPortGet
      description: |
        Read the CTid® info of a sensor port or get the status of an
        operation that is in progress.

        Without a query parameter, this returns the CTid® info object of
        the most recent scan.  If the port has not been scanned or the
        scan failed, an empty object is returned instead.

        If the `tid` query parameter is specified, it must be the
        transaction id of a CTid® operation that was previously
        initiated on this port.  A status object is returned if the
        operation identified by `tid` is still in progress.  Otherwise,
        the request is handled as if `tid` had not been specified.
      parameters:
        - name: tid
          in: query
          description: |
            The transaction id of the CTid® operation to return
            information on.
          schema:
            type: integer
            minimum: 0
      responses:
        '200':
          description: CTid® information response.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/CTidInfoObject'
                  - $ref: '#/components/schemas/EmptyObject'
                  - $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /ctid
      summary: Initiate CTid® operation on a port
      operationId: ctidPortPost
      description: |
        Initiate the operation specified in the request body.  EG4*xxx*
        series meters are limited to performing one CTid® operation at a
        time.  If this request is received while another operation is
        pending, an error is returned.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                op:
                  type: string
                  enum:
                    - flash
                    - scan
                  description: |
                    The operation to be initiated:

                      * `flash`: Start blinking the locator LED on the
                      sensor.

                      * `scan`: Start scanning the sensor's CTid®
                      information.  A scan typically takes one to
                      five seconds.  If the scan is successful, the
                      resulting information is stored on the meter.
                polarity:
                  type: string
                  enum:
                    - +
                    - '-'
                  description: |
                    The voltage polarity with which to initiate the
                    operation.  A plus sign (`+`) requests positive
                    polarity, a minus sign (`-`) requests negative
                    polarity.

                    For operation `scan`, positive polarity should
                    succeed unless the sensor is miswired.  Thus, it is
                    usually best to attempt scanning first with positive
                    polarity and, if that fails, retry with negative
                    polarity.

                    For operation `flash`, either polarity will cause
                    the locator LED to blink, albeit with different
                    blink frequency.  For a correctly wired sensor,
                    negative polarity should be used for blinking.  If
                    this operation is not stopped explicitly, it will
                    time out automatically after about 30 minutes.
                tid:
                  type: integer
                  minimum: 0
                  maximum: 4294967295
                  description: |
                    The transaction id to use for the operation.  This
                    should be a randomly-chosen integer that uniquely
                    identifies the operation to be initiated.  The
                    client can later check on the status of the
                    operation by passing this number as the `tid` query
                    parameter to a `GET` request on this resource.
              required:
                - op
                - polarity
                - tid
      responses:
        '200':
          description: CTid® post response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    put:
      tags:
        - /ctid
      summary: Replace saved CTid® info of the port
      operationId: ctidPortPut
      description: |
        Write CTid® info of the sensor port.  This replaces any existing
        CTid® info on the meter with the one passed in the request body.
        It does _not_ update the CTid® info on the sensor itself.

        This method is supported mainly for testing purposes.  However,
        it could also be used to fix faulty or inaccurate sensor
        information.  The written information will persist only until
        the sensor port is scanned again, so this would only be a
        temporary fix.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CTidInfoObject'
      responses:
        '200':
          description: CTid® put response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /ctid
      summary: Delete CTid® information of the port
      operationId: ctidPortDelete
      description: |
        Delete the CTid® info associated with the port from the meter.
        This also terminates any pending `scan` or `flash` operations.

        The CTid® info stored in the sensor is not affected by this
        operation.
      responses:
        '200':
          description: CTid® delete response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /ctid/stop:
    post:
      tags:
        - /ctid
      summary: Stop any pending CTid® operation
      operationId: ctidStopPost
      description: |
        Immediately stop any pending `scan` or `flash` operation.
        Generally, this should be used only after successfully
        initiating a `flash` operation as `scan` operations will stop
        automatically after a few seconds.
      responses:
        '200':
          description: CTid® stop response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /ctrl/call:
    post:
      tags:
        - /ctrl/call
      summary: Issue control call
      operationId: ctrlCallPost
      description: |
        Issue a control call to a device identified by a set of [device
        attributes](/webapi/4.6/openapi/glossary#section/Device-Attributes).
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                attrs:
                  $ref: '#/components/schemas/DeviceAttributesWithIndexObject'
                  description: >
                    The [device

                    attributes](/webapi/4.6/openapi/glossary#section/Device-Attributes)
                    that

                    identify the device on which to initiate the control

                    action.


                    In addition to the usual device attributes, `index`

                    may be specified as the first attribute.  This

                    attribute is used when the other attributes match

                    multiple devices.  Specifically, if the value of

                    `index` is _n_, then the call would be issued on the

                    device with index _n_ (with the first device having

                    an index of 0).  The default value for this

                    attribute is 0.


                    For example, if there are three devices supporting

                    the `relay` interface then

                    `{"index":1,"interface":"relay"}` would result in a

                    call to the second device.
                method:
                  type: string
                  description: |
                    The name of the control action to issue on the
                    device.  This may be either a bare method name, such
                    as `close_mask`, or a fully qualified name such as
                    `relay.close_mask`. In the former case, the method
                    is invoked on the first interface registered for
                    that device that implements a method by that name.
                    In the latter case, the method is invoked only on
                    the specified interface (`relay`).
                args:
                  type: array
                  description: |
                    The list of arguments to pass to the method.  This
                    list must have values that are compatible with the
                    arguments expected by the method.
                  items:
                    format: json
            example:
              attrs:
                mfg: egauge
                model: prm3
                sn: '00000006'
              method: relay.close_mask
              args:
                - 1
      responses:
        '200':
          description: |
            Control call response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CtrlCallResponseObject'
              example:
                result:
                  tid: 4294967360
        '401':
          description: unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /ctrl/call/{tid}:
    parameters:
      - name: tid
        in: path
        required: true
        description: |
          The transaction id of the call.
        schema:
          type: integer
          format: int54
          minimum: 0
        example: 4294967360
    get:
      tags:
        - /ctrl/call
      summary: Get call result
      operationId: ctrlCallTidGet
      description: |
        Get the result of a control call on return an error message,
        e.g., if the result is not yet available.
      responses:
        '200':
          description: Control result response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CtrlCallResultObject'
              examples:
                try_again:
                  summary: Try again error
                  value:
                    error: 'EAGAIN: Call is pending.'
                call_result:
                  summary: Call result
                  value:
                    result: 6
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /ctrl/device:
    get:
      tags:
        - /ctrl/device
      summary: Get control device info
      operationId: ctrlDeviceGet
      description: |
        Get information about some or all available control devices.
      parameters:
        - name: attrs
          in: query
          description: |
            If present, return only devices matching the specified
            attributes.  Note that special characters in the query
            parameter need to URI-encoded to form a valid URL.  For
            example, `{` needs to be encoded as `%7b` and `}` needs to be
            encoded as `%7d`.

            As a special case, attribute `interface` is considered to
            match a device if the device supports the specified interface.
            The attribute may be specified multiple times to check for the
            presence of multiple interfaces. For example, the URI-encoded
            version of `attrs={"interface":"relay","interface":"modbus"}`
            would only match devices that provide both the `relay` and
            `modbus` interfaces.

            This parameter also supports the `index` attribute like
            [/ctrl/call](/webapi/4.6/openapi/ctrlcall) does.
          schema:
            type: object
            patternProperties:
              /^[-_a-zA-Z0-9]*$/:
                type: string
                description: |
                  The value of the attribute.
          example: '{"interface":"relay"}'
      responses:
        '200':
          description: Device information response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CtrlDeviceResultObject'
              example:
                result:
                  - path:
                      - net.egauge.slowd
                      - USB1
                      - '1'
                    name: prm3
                    mfg: eGauge
                    model: PRM3
                    sn: '00000007'
                    prot: Modbus
                    link: serial
                    quality: '0'
                    interface:
                      - relay
                      - modbus
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /local:
    get:
      tags:
        - /local
      summary: Get local sensor values
      operationId: localGet
      parameters:
        - name: values
          in: query
          description: |
            If present, the sensor values are returned in member `values`
            of the response.
          schema:
            type: boolean
        - name: energy
          in: query
          description: |
            If present, the calculated (real) energy values are returned
            in member `energy` of the response.
          schema:
            type: boolean
        - name: apparent
          in: query
          description: |
            If present, the calculate apparent energy values are returned
            in member `apparent` of the response.
          schema:
            type: boolean
        - name: stats
          in: query
          description: |
            If present, statistics about the internal operation of the
            meter are returned in member `stats` of the response.
          schema:
            type: boolean
        - name: rate
          in: query
          description: |
            If present, the rate metrics of each sensor are included in
            the response (members `rate`).
          schema:
            type: boolean
        - name: cumul
          in: query
          description: |
            If present, the cumulative metrics of each sensor are included
            in the response (members `cumul`).
          schema:
            type: boolean
        - name: type
          in: query
          description: >
            If present, the [type
            code](/webapi/4.6/openapi/glossary#section/Type-Codes) (physical

            unit) of each sensor is included in the response (members

            `type`).
          schema:
            type: boolean
        - name: normal
          in: query
          description: |
            If present, the normal value of each sensor is included in the
            response. For most sensor types, this is the RMS value of the
            sensor signal but for some, this may be the average value
            (e.g., for temperature sensors) or a count (e.g., for pulse
            sensors).
          schema:
            type: boolean
        - name: mean
          in: query
          description: |
            If present, the mean (average) value of each sensor is
            included in the response.
          schema:
            type: boolean
        - name: freq
          in: query
          description: |
            If present, the frequency (in hertz) of each sensor signal is
            included in the response.  It is calculated as the number of
            times the signal crosses zero per second. For some sensor
            types (e.g., temperature sensors), frequency is not calculated
            and the returned value is always zero.
          schema:
            type: boolean
        - name: env
          in: query
          description: |
            If present, this parameter specifies a comma-separated list of
            built-in environmental sensors whose measurements should be
            included in the response.  The list may contain the following
            strings (case-insensitive):

              * `ALL`: Include measurements for all built-in environmental
              sensors.

              * `Hpcb`: Include measurements for the built-in relative
              humidity sensor.  This sensor measures relative humidity
              inside the meter's enclosure. It is not available on all
              meters.

              * `Tpcb`: Include measurements for the built-in temperature
              sensor.  This sensor measures temperature inside the meter's
              enclosure, which is generally a few degrees celsius higher
              than the temperature of the air surrounding the meter.

            **Note** Environmental sensors have only rate metrics, no
            cumulative metrics, and only have a normal value, no mean or
            frequency.
          schema:
            type: array
            items:
              type: string
              enum:
                - ALL
                - Hpcb
                - Tpcb
        - name: l
          in: query
          description: |
            If present, this parameter specifies a comma-separated list of
            voltages whose metrics should be included in the response.
            The following voltage names may be specified
            (case-insensitve):

              * `ALL`: Include measurements for all available line
              voltages.

              * `L1`, `L2`, or `L3`: The voltage of the named line input
              pin relative to the neutral pin.

              * `D1`, `D2`, or `D3`: The voltage of the named line input
              pin relative to a virtual neutral.  The virtual neutral is
              calculated assuming the signals at pins D1, D2, and D3 are
              of equal amplitude and are phase-shifted by 120° relative to
              each other.  If either of these assumptions is not true, the
              measured voltages are not be meaningful.

              * `L12`, `L23`, or `L31`: The voltage between the two line
              input pin numbers.  For example, `L12` measures the voltage
              between pins `L1` and `L2`.

              * `Ldc`: The voltage at the DC input port.

            It is also possible to specify a range of voltages by using a
            colon to separate the first and the last voltage to be
            included in the range.  For example, `L1:L3` would request
            inclusion of the measurements for `L1`, `L2`, and `L3`.
          schema:
            type: array
            items:
              type: string
        - name: s
          in: query
          description: |
            If present, this parameter specifies a comma-separated list of
            sensors whose metrics should be included in the response.  The
            following sensor names may be specified (case-insensitve):

              * `ALL`: Include measurements for all available sensors.

              * `Sn`: Include measurements for sensor `Sn` where `n` is a
              number in the range from 1 to the number of sensor inputs
              supported by the meter.

              * `Sn:Sm`: Include measurements for sensors `Sn` through
              `Sm`, where `n` and `m` are numbers in the range from 1 to
              the number of sensor inputs supported by the meter and `n`
              is smaller than `m`.  For example, `S3:S5` would request
              inclusion of the measurements for `S3`, `S4`, and `S5`.
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          description: Local response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocalObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /log/alert:
    parameters:
      - $ref: '#/components/parameters/afterParam'
        description: |
          Restricts the method to apply only to those alerts whose
          `last` timestamp is newer (younger) than the specified timestamp.
        example: 1685739455.0433328
      - name: acked
        in: query
        description: |
          Restrict the method to apply only to those alerts whose
          acknowledgment status matches the value of this query parameter
          (`true` for acknowledged, `false` for unacknowledged).
        schema:
          type: boolean
      - name: ids
        in: query
        description: |
          Restricts the method to apply only to those alerts whose id
          is listed in the value of this query parameter.
        schema:
          type: array
          items:
            type: integer
            minimum: 0
      - name: min_prio
        in: query
        description: |
          Restrict the method to apply only to those alerts whose priority is
          at least as high as the value of this query parameter.
        schema:
          type: integer
          minimum: 0
          maximum: 7
    get:
      tags:
        - /log
      summary: Get alert log
      operationId: logAlertGet
      description: |
        Get the alert log.  It has a fixed maximum length and consists
        of a sequence of prioritized and time-stamped entries. When the
        log fills up, older entries are replaced.  Currently up to 50
        alert log entries are supported.
      responses:
        '200':
          description: Alert log response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlertLogObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /log
      summary: Update alert log
      operationId: logAlertPost
      description: |
        Acknowledge all or some alerts.
      requestBody:
        content:
          application/json:
            schema:
              type: string
              enum:
                - ack
      responses:
        '200':
          description: Status response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /log
      summary: Delete alert log
      operationId: logAlertDelete
      description: |
        Delete all or some alerts.
      responses:
        '200':
          description: Status response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /log/kernel:
    get:
      tags:
        - /log
      summary: Get kernel log
      operationId: logKernelGet
      parameters:
        - $ref: '#/components/parameters/afterParam'
      description: |
        Get the kernel log.  It has a fixed size and consists of a
        sequence of prioritized and time-stamped entries. When the log
        fills up, older entries are replaced.
      responses:
        '200':
          description: Kernel log response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KernelLogObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /log/lua/{name}:
    parameters:
      - description: |
          The name of a Lua log.  This may be one of:

            * `alertd`: The log for scripts that are executed when
            checking for and generating alerts.

            * `ctrld`: The log for control scripts.

            * `teamd`: The log for scripts executed while evaluating
            formula scripts and for calculating costs (tariff script).
        in: path
        name: name
        required: true
        schema:
          type: string
          enum:
            - alertd
            - ctrld
            - teamd
    get:
      tags:
        - /log
      summary: Get a Lua log
      operationId: logLuaNameGet
      parameters:
        - $ref: '#/components/parameters/afterParam'
      description: |
        Get a Lua log. Each log has a fixed size and consists of a
        sequence of time-stamped entries. When the log fills up, older
        entries are replaced.
      responses:
        '200':
          description: Lua log response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LuaLogObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /log/system:
    get:
      tags:
        - /log
      summary: Get system log
      operationId: logSystemGet
      description: |
        Get the system log.  It has a fixed size and consists of a
        sequence of messages. When the log fills up, older messages are
        replaced.  The size of this log can be configured
        with [/config/log/system/size](/webapi/4.6/openapi/configlogsystemsize).
      responses:
        '200':
          description: System log response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemLogObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /providers/alert:
    get:
      tags:
        - /providers
      summary: Get alert service providers
      operationId: providersAlertGet
      description: >
        Get a list of available alert service providers.


        Reporting alerts to a service provider requires executing the

        [service activation command](/webapi/4.6/openapi/cmd/cmdactivatepost) on
        the meter.

        That command then uses the [service activation

        protocol](/webapi/4.6/openapi/glossary#section/Service-Activation) to
        set up the provider to

        ensure it is able and willing to accept the alerts.
      responses:
        '200':
          description: Alert providers response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceProvidersObject'
              example:
                reply:
                  providers:
                    - name: Alert Service
                      control: http://alert.com/
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /providers/push:
    get:
      tags:
        - /providers
      summary: Get push service providers
      operationId: providersPushGet
      description: >
        Get a list of available push service providers.


        Sharing data with a push service provider requires executing the

        [service activation command](/webapi/4.6/openapi/cmd/cmdactivatepost) on
        the meter.

        That command then uses the [service activation

        protocol](/webapi/4.6/openapi/glossary#section/Service-Activation) to
        set up the provider to

        ensure it is able and willing to accept the data.
      responses:
        '200':
          description: Push providers response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceProvidersObject'
              example:
                reply:
                  providers:
                    - name: Backup Service
                      control: http://backup.com/
                    - name: Cloudly
                      control: http://cloud.com/
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /providers/tariff:
    get:
      tags:
        - /providers
      summary: Get tariff service providers
      operationId: providersTariffGet
      description: |
        Get a list of available tariff service providers.
      responses:
        '200':
          description: Tariff providers response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TariffProvidersObject'
              example:
                reply:
                  providers:
                    - country: Korea
                      name: KEPCO
                      tariffs: http://tariffs.com/kepco.lua
                      params:
                        - start_day
                        - taxes
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /providers/tariff/{idx}:
    get:
      tags:
        - /providers
      summary: Get list of tariffs
      operationId: providersTariffIdxGet
      parameters:
        - in: path
          name: idx
          required: true
          schema:
            type: integer
            minimum: 0
          description: |
            The index of the tariff provider (utility) whose tariff list
            to return. The index is assigned in order in which the
            services appear in `/providers/tariff`.  The first entry has
            index 0, the second has index 1, and so on.
      description: |
        Get a list of tariffs of a provider.
      responses:
        '200':
          description: Tariff list response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  tariffs:
                    type: array
                    description: |
                      The list of tariff names available from this utility.
                    items:
                      type: string
              example:
                tariffs:
                  - Residential General
                  - Medical Exemption
                  - Residential Demand
                  - C Commercial
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /register:
    get:
      tags:
        - /register
      summary: Get register data
      operationId: registerGet
      parameters:
        - name: delta
          in: query
          allowEmptyValue: true
          description: |
            If present, return the first row of data as usual and each
            subsequent row as the amount of change since the previous row.
            This delta-encoding usually reduces the size of the response
            significantly.

            With `format=csv`, the first row is skipped and not returned
            at all.

            Note that the value of this parameter is ignored and may even
            be empty.
          schema:
            type: boolean
            example: true
        - name: demand
          in: query
          description: |
            This parameter may only be specified when output format JSON
            (the default) or CSV is selected (`format=csv`).  If
            specified, it requests that the result include the _demand_ of
            the selected registers in addition to the normal register
            values.  Demand is the average rate of change over a period of
            time called the _demand interval_.  A typical demand interval
            may be 15 minutes or 30 minutes long.  _Demand_ is either the
            maximum or minimum demand across multiple demand intervals,
            such as the demand intervals in a billing cycle.

            There are two principal methods for subdividing a time period
            into demand intervals.  With the _set_ demand interval method,
            the longer time period is subdivided into contiguous,
            non-overlapping demand intervals.  For example, with 15 minute
            demand intervals, an hour would be subdivided into four demand
            intervals: from minute 0 through 14, 15 through 29, 30 through
            44, and, finally 45 through 59.  In contrast, with the
            _rolling_ demand interval method, the larger time period is
            subdivided into overlapping demand intervals.  After each
            demand calculation, the demand interval is shifted to the
            right by one minute.  With rolling demand, the first demand
            interval would span minute 46 from the previous hour up to and
            including minute 0 of the current hour.  The next interval
            would span minute 47 from the previous hour up to minute 1 of
            the current hour, and so on until the last interval would span
            minute 45 up to and including minute 59 of the current hour.

            The value of the `demand` query parameter specifies the
            details of how the demand is to be calculated.  Specifically,
            the value of this parameter has the form `TPI` where `T` is
            one of:


              * `roll`: Use the rolling demand method.

              * `set`: Use the set demand method.

            `P` indicates which demand should be returned:

              * `+`: Return the maximum demand.

              * `-`: Return the minimum demand.

              * `|`: Return the demand with the largest magnitude
                (absolute value).  For example, if the maximum demand is
                +5kW and the minimum demand is −6kW, this would return
                −6kW.

            `I` is the length of the demand interval expressed as a number
            of seconds.  The interval must be an integer multiple of 60
            and cannot exceed 3600 (one hour).

            For example, query option `demand=set+900` would return the
            maximum set demand of the selected registers when using a 900
            second (15 minute) demand interval.

            When `format=csv` is in effect, the resulting CSV file
            contains two additional column for each register which
            indicate the demand value and the starting time of that demand
            interval.
          schema:
            type: string
            example: roll|900
        - name: filename
          in: query
          description: |
            For `format=backup` and `format=csv`, this specifies the name
            of the file in which the response should be saved.  This is
            indicated via a `Content-disposition` response header.
          schema:
            type: string
            example: data.csv
        - name: format
          in: query
          description: |
            Selects the format of the response.  This must be one of:

              * `json`: Return the response as JSON.  This is the default.

              * `backup`: Return the response as a backup file.  The
              response has MIME type `text/plain`.

              * `csv`: Return the response as a CSV (comma-separated
              values) file.  The response has MIME type `text/plain`.
          schema:
            type: string
            enum:
              - backup
              - csv
              - json
          example: csv
        - name: if
          in: query
          description: >
            Only return data if the specified condition is `true`.  The

            string must have the form _texpr_ _op_ _val_ where _texpr_ is a

            [time
            expression](/webapi/4.6/openapi/glossary#section/Time-Expressions)
            (`epoch`,

            `sob` or similar), _op_ is one of `==` (test for equality) or

            `!=` (test for inequality) and _val_ is a decimal string

            specifying a [Unix
            timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp).  If

            the condition is `true`, data is returned as usual.  If

            `false`, a current condition object is returned which contains

            the current value of _texpr_.
          schema:
            type: string
            example: epoch==1675276020
        - name: rate
          in: query
          allowEmptyValue: true
          description: |
            If present, return the `rate` member in the `registers`
            section of the response.  The value of this member is the rate
            at which the value of the register has been changing most
            recently.

            Note that the value of this parameter is ignored and may even
            be empty.
          schema:
            type: boolean
            example: true
        - name: raw
          in: query
          allowEmptyValue: true
          description: >
            If present, return accumulated values of registers as raw

            cumulative values which start at zero when the meter database

            was created.  By default, the values are returned relative to

            the [meter epoch](/webapi/4.6/openapi/configdbepoch), which means
            register

            values are zero at the time of the epoch.


            Note that the value of this parameter is ignored and may even

            be empty.
          schema:
            type: boolean
            example: true
        - name: reg
          in: query
          description: |
            Select a range of registers to be included in the result.  A
            range can be one of:

              * `all`: All available registers are selected to be returned
              in the result.

              * `none`: No registers are selected to be returned in the
              result.

              * `n0`: Select the register with index `n0`.  The index of a
              register can be found in the `idx` member of the `registers`
              section of the response.

              * `n0:n1`: Select the registers with indices `n0` through
              `n1`.

            If the value of this parameter starts with a plus sign (`+`),
            the specified range is added to the set of registers to be
            returned.  If it starts with a minus sign (`-`), the specified
            range is removed from the set of registers to be returned.  If
            the value starts with any other character, the specified range
            establishes the set of registers to be returned.  Additional
            ranges can be specified by adding a plus sign followed by a
            range to add more registers or a minus sign followed by a
            range to remove registers from the selected set.

            It is also possible to specify combine `view` and `reg`
            parameters in a single request.  The parameters are processed
            in the order specified (from left-to-right) and update the set
            of selected registers incrementally.  For example,
            `view==environmentals&reg=-0:7` would select all registers in
            view `environmentals`, except those with a register index in
            the range from 0 through 7.

            Virtual registers are output only if they are selected in the
            set of registers to be returned **and** query parameter
            `virtual` is specified.
          schema:
            type: string
            example: all-0:7
        - name: time
          in: query
          description: >
            A comma-separated list of [time
            ranges](/webapi/4.6/openapi/glossary#section/Time-Ranges).

            Only data for rows that fall within the specified time ranges

            are returned.  Each time-range is processed independently and

            in the order specified.  That is, if overlapping time-ranges

            are specified, the same rows may be output multiple times.
          schema:
            type: string
            example: now-900:60:now,epoch
        - name: ts
          in: query
          description: >
            This query parameter controls how timestamps are handled

            during this `GET` request.  The value must be a string of the

            form `tz;fmt`, where `tz` is a timezone string and `fmt` is a

            format string.  Either `tz` or `fmt` may be empty.


            If non-empty, `tz` sets the timezone to use.  If left

            unspecified or empty, the [device

            timezone](/webapi/4.6/openapi/configtimezone) is used by default. 
            The

            selected timezone affects, for example, how [time point

            names](/webapi/4.6/openapi/glossary#section/Time-Point-Names) such
            as `sod` (start-of-day)

            are interpreted and how time is output in the response.  The

            timezone must be in the format defined by

            [tzset()](https://man7.org/linux/man-pages/man3/tzset.3.html).

            This parameter must appear before (to the left of) any `time`

            parameters that use timezone-dependent time-points such 'sod',

            for example.


            The `fmt` string is used only when query parameter

            `format=csv` is in effect.  In that case, `fmt` defines how

            timestamps are output in the CSV response.  By default, the

            format string `%F %T` is used, which would output July 6,

            2016 4:56pm as `2016-07-06 16:56:00`.  The full syntax

            available in the format string is documented in function

            [strftime()](https://man7.org/linux/man-pages/man3/strftime.3.html).


            Note that the format-string typically will need to be

            percent-encoded.  In particular, each `%` character needs to

            be encoded as `%25`, for example.
          schema:
            type: string
            example: UTC;%y/%m/%d %I:%M
        - name: view
          in: query
          description: >
            Select registers to be included in the result by the [view

            name](/webapi/4.6/openapi/glossary#section/View-Names) specified as
            the value of this

            parameter.  The view name must be prefixed by one of

            characters:

              * `=`: Only select the registers matching the view name are
              returned.

              * `+`: The registers matching the view name are added to the
              set of registers to be returned.

              * `-`: The registers matching the view name are removed from
              the set of registers to be returned.
          schema:
            type: string
            example: '=environmentals'
        - name: virtual
          in: query
          description: |
            This parameter specifies that virtual register should be
            returned in the response and also selects how to return them.
            The value of the parameter must be one of:

              * `formula`: Virtual registers are returned via the
              `formula` member in the `registers` section.  See [virtual
              register formulas](/webapi/4.6/openapi/glossary#section/Virtual-Register-Formulas) for
              details.

              * `value`: The value of virtual registers is calculated by
              the meter and then return in the `ranges` section like any
              other register value.
          schema:
            type: string
            enum:
              - value
              - formula
          example: formula
        - name: noHTTP
          in: query
          description: |
            If present, requests that the response is to be returned
            without the normal HTTP headers.  Only the body of the
            response will be returned.

            Note that the value of this parameter is ignored and may
            even be empty.
          allowEmptyValue: true
          deprecated: true
          schema:
            type: boolean
      responses:
        '200':
          description: Register response.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/RegisterResponseObject'
                  - $ref: '#/components/schemas/RegisterConditionObject'
            text/plain; charset=utf-8:
              schema:
                type: string
                example: |
                  "Date & Time","Humidity [%]"
                  "23/03/08 08:44","18.138051351"
                  "23/03/08 08:43","18.151999919"
                  "23/03/08 08:42","18.441518148"
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /sys/slowd:
    get:
      tags:
        - /sys/slowd
      summary: Get /sys/slowd
      operationId: sysSlowdGet
      description: |
        Get the status of the slowd (serial device) service.
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/SlowdStatusObject'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /store/{section}:
    parameters:
      - name: section
        in: path
        required: true
        description: |
          Name of the server-storage section.
        schema:
          type: string
          example: global
    get:
      deprecated: true
      tags:
        - /store
      summary: Get section
      operationId: storeSectionGet
      responses:
        '200':
          description: Store content response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreContentObject'
              examples:
                url_encoded:
                  summary: URL-encoded values
                  value:
                    name: global/
                    content:
                      billing/start_day: '6'
                      billing/contract_demand: '10'
                      billing/bill_contracted_demand: 'false'
                      billing/schedule: R%20Residential%20General
                      billing/surcharges: 0%2E07
                      billing/taxes: 8%2E2
                      billing/tariff_uri: >-
                        https%3A%2F%2Fapi%2Eegauge%2Enet%2Fv1%2Ftariffs%2F2%2Elua
                      billing/provider: Xcel%20Colorado
                json_encoded:
                  summary: JSON-encoded values
                  value:
                    name: dash/
                    content:
                      dashCfg-default: >-
                        {"name":"default","changed":false,"dashlets":[{"tag":"flow","id":1,"cfg":{"nodes":[{"pos":[0,0],"icon":"house","reg":"use"},{"pos":[0,1],"icon":"solar","reg":"gen"},{"pos":[1,0],"icon":"battery","reg":"bat"},{"pos":[0,-1],"icon":"grid","reg":"Grid","costsMoney":true}]}}],"layouts":[{"designWidth":0,"designHeight":0,"pages":[{"locs":[{"id":1,"x":0,"y":0,"w":10,"h":10}]}]}]}
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    put:
      deprecated: true
      tags:
        - /store
      summary: Update or delete section
      operationId: storeSectionPut
      description: |
        Update or delete a server-storage section according to the
        contents of the request body.
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/StoreVariableUpdates'
                - type: 'null'
                  description: Delete the entire section.
            example:
              test/delete_me: null
              prefs/color: cyan
      responses:
        '200':
          description: Store update response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /store/{section}/{variable}:
    parameters:
      - name: section
        in: path
        required: true
        description: |
          Name of the server-storage section.
        schema:
          type: string
          example: dash
      - name: variable
        in: path
        required: true
        description: |
          Name of the section variable.
        schema:
          type: string
          example: dashCfg-default
    get:
      deprecated: true
      tags:
        - /store
      summary: Get section variable
      operationId: storeSectionVarGet
      responses:
        '200':
          description: Store variable response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreContentObject'
              example:
                name: dash/dashCfg-default
                content:
                  '': >-
                    {"name":"default","changed":false,"dashlets":[{"tag":"flow","id":1,"cfg":{"nodes":[{"pos":[0,0],"icon":"house","reg":"use"},{"pos":[0,1],"icon":"solar","reg":"gen"},{"pos":[1,0],"icon":"battery","reg":"bat"},{"pos":[0,-1],"icon":"grid","reg":"Grid","costsMoney":true}]}}],"layouts":[{"designWidth":0,"designHeight":0,"pages":[{"locs":[{"id":1,"x":0,"y":0,"w":10,"h":10}]}]}]}
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    put:
      deprecated: true
      tags:
        - /store
      summary: Update or delete section variable
      operationId: storeSectionVarPut
      description: |
        Update or delete a section variable according to the contents of
        the request body.
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/StoreSingleVariableUpdate'
                - type: 'null'
                  description: Delete the section variable.
            example:
              '': >-
                {"name":"default","changed":false,"dashlets":[{"tag":"flow","id":1,"cfg":{"nodes":[{"pos":[0,0],"icon":"house","reg":"use"},{"pos":[0,1],"icon":"solar","reg":"gen"},{"pos":[1,0],"icon":"battery","reg":"bat"},{"pos":[0,-1],"icon":"grid","reg":"Grid","costsMoney":true}]}}],"layouts":[{"designWidth":0,"designHeight":0,"pages":[{"locs":[{"id":1,"x":0,"y":0,"w":10,"h":10}]}]}]}
      responses:
        '200':
          description: Delete section variable response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /store/{section}/{paragraph}/:
    parameters:
      - name: section
        in: path
        required: true
        description: |
          Name of the server-storage section.
        schema:
          type: string
          example: global
      - name: paragraph
        in: path
        required: true
        description: |
          Name of the paragraph.
        schema:
          type: string
          example: billing
    get:
      deprecated: true
      tags:
        - /store
      summary: Get paragraph
      operationId: storeParagraphGet
      responses:
        '200':
          description: Store paragraph response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreContentObject'
              example:
                name: global/billing/
                content:
                  start_day: '6'
                  contract_demand: '10'
                  bill_contracted_demand: 'false'
                  schedule: R%20Residential%20General
                  surcharges: 0%2E07
                  taxes: 8%2E2
                  tariff_uri: https%3A%2F%2Fapi%2Eegauge%2Enet%2Fv1%2Ftariffs%2F2%2Elua
                  provider: Xcel%20Colorado
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    put:
      deprecated: true
      tags:
        - /store
      summary: Update or delete paragraph
      operationId: storeParagraphPut
      description: |
        Update or delete a paragraph according to the contents of the request
        body.
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/StoreVariableUpdates'
                - type: 'null'
                  description: Delete the paragraph.
            example:
              start_day: '7'
              taxes: null
      responses:
        '200':
          description: Store update response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /store/{section}/{paragraph}/{variable}:
    parameters:
      - name: section
        in: path
        required: true
        description: |
          Name of the server-storage section.
        schema:
          type: string
          example: global
      - name: paragraph
        in: path
        required: true
        description: |
          Name of the paragraph.
        schema:
          type: string
          example: billing
      - name: variable
        in: path
        required: true
        description: |
          Name of the variable.
        schema:
          type: string
          example: start_day
    get:
      deprecated: true
      tags:
        - /store
      summary: Get variable
      operationId: storeVarGet
      responses:
        '200':
          description: Store content response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StoreContentObject'
              example:
                name: global/billing/start_day
                content:
                  '': '6'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    put:
      deprecated: true
      tags:
        - /store
      summary: Update or delete variable
      operationId: storeVarPut
      description: |
        Update or delete a variable according to the contents of the
        request body.
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/StoreVariableUpdates'
                - type: 'null'
                  description: Delete the variable.
            example:
              '': '7'
      responses:
        '200':
          description: Store update response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
  /config:
    get:
      tags:
        - /config
      summary: Get /config
      operationId: configGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/config'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config
      summary: Replace /config
      operationId: configPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/config'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        A `PUT` request is equivalent to a `DELETE` followed by a `POST`
        with the same request body.  Because of that, care must be taken
        to ensure the desired configuration is written.  Specifically:

          * The classic interface uses CGI-BIN programs.  It is
            therefore recommended to include member
            `"net":{"http":{"cgi-bin":"user-required"}}` in the request
            body as otherwise CGI-BIN support is disabled.

          * Member `alert` may contain references to register names (as
            part of custom alert conditions).  This member should
            therefore appear after member `register`.

          * Member `remote` must appear in the request body before
            member `register` as otherwise the remote registers in this
            member will be deleted when member `remote` is processed.
    post:
      tags:
        - /config
      summary: Update /config
      operationId: configPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/config'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config
      summary: Delete /config
      operationId: configDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/bacnet:
    get:
      tags:
        - /config/bacnet
      summary: Get /config/bacnet
      operationId: configBacnetGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configBacnet'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/bacnet
      summary: Replace /config/bacnet
      operationId: configBacnetPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnet'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/bacnet
      summary: Update /config/bacnet
      operationId: configBacnetPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnet'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/bacnet
      summary: Delete /config/bacnet
      operationId: configBacnetDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/bacnet/server:
    get:
      tags:
        - /config/bacnet/server
      summary: Get /config/bacnet/server
      operationId: configBacnetServerGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configBacnetServer'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/bacnet/server
      summary: Replace /config/bacnet/server
      operationId: configBacnetServerPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnetServer'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/bacnet/server
      summary: Update /config/bacnet/server
      operationId: configBacnetServerPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnetServer'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/bacnet/server
      summary: Delete /config/bacnet/server
      operationId: configBacnetServerDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/bacnet/server/bip:
    get:
      tags:
        - /config/bacnet/server/bip
      summary: Get /config/bacnet/server/bip
      operationId: configBacnetServerBipGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configBacnetServerBip'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/bacnet/server/bip
      summary: Replace /config/bacnet/server/bip
      operationId: configBacnetServerBipPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnetServerBip'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/bacnet/server/bip
      summary: Update /config/bacnet/server/bip
      operationId: configBacnetServerBipPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnetServerBip'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/bacnet/server/bip
      summary: Delete /config/bacnet/server/bip
      operationId: configBacnetServerBipDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/bacnet/server/bip/port:
    get:
      tags:
        - /config/bacnet/server/bip/port
      summary: Get /config/bacnet/server/bip/port
      operationId: configBacnetServerBipPortGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configBacnetServerBipPort'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/bacnet/server/bip/port
      summary: Replace /config/bacnet/server/bip/port
      operationId: configBacnetServerBipPortPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnetServerBipPort'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/bacnet/server/bip/port
      summary: Update /config/bacnet/server/bip/port
      operationId: configBacnetServerBipPortPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnetServerBipPort'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/bacnet/server/bip/port
      summary: Delete /config/bacnet/server/bip/port
      operationId: configBacnetServerBipPortDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to 47808 (BAC0 in hex).
  /config/bacnet/server/enable:
    get:
      tags:
        - /config/bacnet/server/enable
      summary: Get /config/bacnet/server/enable
      operationId: configBacnetServerEnableGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configBacnetServerEnable'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/bacnet/server/enable
      summary: Replace /config/bacnet/server/enable
      operationId: configBacnetServerEnablePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnetServerEnable'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/bacnet/server/enable
      summary: Update /config/bacnet/server/enable
      operationId: configBacnetServerEnablePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnetServerEnable'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/bacnet/server/enable
      summary: Delete /config/bacnet/server/enable
      operationId: configBacnetServerEnableDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Disable the BACnet server.
  /config/bacnet/server/enable/{idx}:
    parameters:
      - name: idx
        in: path
        description: |
          The index of an enabled BACnet protocol.
        required: true
        schema:
          type: integer
          minimum: 0
          maximum: 0
    get:
      tags:
        - /config/bacnet/server/enable/{idx}
      summary: Get /config/bacnet/server/enable/{idx}
      operationId: configBacnetServerEnableItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configBacnetServerEnableItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/bacnet/server/enable/{idx}
      summary: Replace /config/bacnet/server/enable/{idx}
      operationId: configBacnetServerEnableItemPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnetServerEnableItem'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/bacnet/server/enable/{idx}
      summary: Update /config/bacnet/server/enable/{idx}
      operationId: configBacnetServerEnableItemPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnetServerEnableItem'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/bacnet/server/enable/{idx}
      summary: Delete /config/bacnet/server/enable/{idx}
      operationId: configBacnetServerEnableItemDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Disable this protocol.
  /config/bacnet/server/epoch-relative:
    get:
      tags:
        - /config/bacnet/server/epoch-relative
      summary: Get /config/bacnet/server/epoch-relative
      operationId: configBacnetServerEpochRelativeGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configBacnetServerEpochRelative'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/bacnet/server/epoch-relative
      summary: Replace /config/bacnet/server/epoch-relative
      operationId: configBacnetServerEpochRelativePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnetServerEpochRelative'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/bacnet/server/epoch-relative
      summary: Update /config/bacnet/server/epoch-relative
      operationId: configBacnetServerEpochRelativePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnetServerEpochRelative'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/bacnet/server/epoch-relative
      summary: Delete /config/bacnet/server/epoch-relative
      operationId: configBacnetServerEpochRelativeDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to `true`.
  /config/bacnet/server/id:
    get:
      tags:
        - /config/bacnet/server/id
      summary: Get /config/bacnet/server/id
      operationId: configBacnetServerIdGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configBacnetServerId'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/bacnet/server/id
      summary: Replace /config/bacnet/server/id
      operationId: configBacnetServerIdPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnetServerId'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/bacnet/server/id
      summary: Update /config/bacnet/server/id
      operationId: configBacnetServerIdPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnetServerId'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/bacnet/server/id
      summary: Delete /config/bacnet/server/id
      operationId: configBacnetServerIdDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to 1.
  /config/bacnet/server/mstp:
    get:
      tags:
        - /config/bacnet/server/mstp
      summary: Get /config/bacnet/server/mstp
      operationId: configBacnetServerMstpGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configBacnetServerMstp'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/bacnet/server/mstp
      summary: Replace /config/bacnet/server/mstp
      operationId: configBacnetServerMstpPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnetServerMstp'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/bacnet/server/mstp
      summary: Update /config/bacnet/server/mstp
      operationId: configBacnetServerMstpPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnetServerMstp'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/bacnet/server/mstp
      summary: Delete /config/bacnet/server/mstp
      operationId: configBacnetServerMstpDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/bacnet/server/mstp/mac:
    get:
      tags:
        - /config/bacnet/server/mstp/mac
      summary: Get /config/bacnet/server/mstp/mac
      operationId: configBacnetServerMstpMacGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configBacnetServerMstpMac'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/bacnet/server/mstp/mac
      summary: Replace /config/bacnet/server/mstp/mac
      operationId: configBacnetServerMstpMacPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnetServerMstpMac'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/bacnet/server/mstp/mac
      summary: Update /config/bacnet/server/mstp/mac
      operationId: configBacnetServerMstpMacPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnetServerMstpMac'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/bacnet/server/mstp/mac
      summary: Delete /config/bacnet/server/mstp/mac
      operationId: configBacnetServerMstpMacDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to 0.
  /config/bacnet/server/mstp/max-mac:
    get:
      tags:
        - /config/bacnet/server/mstp/max-mac
      summary: Get /config/bacnet/server/mstp/max-mac
      operationId: configBacnetServerMstpMaxMacGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configBacnetServerMstpMaxMac'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/bacnet/server/mstp/max-mac
      summary: Replace /config/bacnet/server/mstp/max-mac
      operationId: configBacnetServerMstpMaxMacPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnetServerMstpMaxMac'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/bacnet/server/mstp/max-mac
      summary: Update /config/bacnet/server/mstp/max-mac
      operationId: configBacnetServerMstpMaxMacPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnetServerMstpMaxMac'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/bacnet/server/mstp/max-mac
      summary: Delete /config/bacnet/server/mstp/max-mac
      operationId: configBacnetServerMstpMaxMacDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to 0.
  /config/bacnet/server/mstp/port:
    get:
      tags:
        - /config/bacnet/server/mstp/port
      summary: Get /config/bacnet/server/mstp/port
      operationId: configBacnetServerMstpPortGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configBacnetServerMstpPort'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/bacnet/server/mstp/port
      summary: Replace /config/bacnet/server/mstp/port
      operationId: configBacnetServerMstpPortPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnetServerMstpPort'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/bacnet/server/mstp/port
      summary: Update /config/bacnet/server/mstp/port
      operationId: configBacnetServerMstpPortPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configBacnetServerMstpPort'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/bacnet/server/mstp/port
      summary: Delete /config/bacnet/server/mstp/port
      operationId: configBacnetServerMstpPortDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/db:
    get:
      tags:
        - /config/db
      summary: Get /config/db
      operationId: configDbGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configDb'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/db
      summary: Replace /config/db
      operationId: configDbPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDb'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/db
      summary: Update /config/db
      operationId: configDbPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDb'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/db
      summary: Delete /config/db
      operationId: configDbDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/db/epoch:
    get:
      tags:
        - /config/db/epoch
      summary: Get /config/db/epoch
      operationId: configDbEpochGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configDbEpoch'
                  error:
                    $ref: '#/components/schemas/ErrorString'
                example:
                  result: '1194937200'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Get the meter epoch.
      parameters: []
    put:
      tags:
        - /config/db/epoch
      summary: Replace /config/db/epoch
      operationId: configDbEpochPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDbEpoch'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >
        Update the epoch with the value passed in the request body.


        This resource is **not** updated

        [transactionally](/webapi/4.6/openapi/glossary#section/Non-Transactional-Updates).
    post:
      tags:
        - /config/db/epoch
      summary: Update /config/db/epoch
      operationId: configDbEpochPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDbEpoch'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >
        Update the epoch with the value passed in the request body.


        This resource is **not** updated

        [transactionally](/webapi/4.6/openapi/glossary#section/Non-Transactional-Updates).
    delete:
      tags:
        - /config/db/epoch
      summary: Delete /config/db/epoch
      operationId: configDbEpochDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >
        Reset the database epoch to the current time of the meter.


        This resource is **not** updated

        [transactionally](/webapi/4.6/openapi/glossary#section/Non-Transactional-Updates).
  /config/display:
    get:
      tags:
        - /config/display
      summary: Get /config/display
      operationId: configDisplayGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configDisplay'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/display
      summary: Replace /config/display
      operationId: configDisplayPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDisplay'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/display
      summary: Update /config/display
      operationId: configDisplayPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDisplay'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/display
      summary: Delete /config/display
      operationId: configDisplayDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/display/backlight:
    get:
      tags:
        - /config/display/backlight
      summary: Get /config/display/backlight
      operationId: configDisplayBacklightGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configDisplayBacklight'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/display/backlight
      summary: Replace /config/display/backlight
      operationId: configDisplayBacklightPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDisplayBacklight'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/display/backlight
      summary: Update /config/display/backlight
      operationId: configDisplayBacklightPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDisplayBacklight'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/display/backlight
      summary: Delete /config/display/backlight
      operationId: configDisplayBacklightDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/display/backlight/brightness:
    get:
      tags:
        - /config/display/backlight/brightness
      summary: Get /config/display/backlight/brightness
      operationId: configDisplayBacklightBrightnessGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configDisplayBacklightBrightness'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/display/backlight/brightness
      summary: Replace /config/display/backlight/brightness
      operationId: configDisplayBacklightBrightnessPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDisplayBacklightBrightness'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/display/backlight/brightness
      summary: Update /config/display/backlight/brightness
      operationId: configDisplayBacklightBrightnessPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDisplayBacklightBrightness'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/display/backlight/brightness
      summary: Delete /config/display/backlight/brightness
      operationId: configDisplayBacklightBrightnessDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to 0.
  /config/display/backlight/duration:
    get:
      tags:
        - /config/display/backlight/duration
      summary: Get /config/display/backlight/duration
      operationId: configDisplayBacklightDurationGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configDisplayBacklightDuration'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/display/backlight/duration
      summary: Replace /config/display/backlight/duration
      operationId: configDisplayBacklightDurationPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDisplayBacklightDuration'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/display/backlight/duration
      summary: Update /config/display/backlight/duration
      operationId: configDisplayBacklightDurationPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDisplayBacklightDuration'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/display/backlight/duration
      summary: Delete /config/display/backlight/duration
      operationId: configDisplayBacklightDurationDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to 0.
  /config/display/contrast:
    get:
      tags:
        - /config/display/contrast
      summary: Get /config/display/contrast
      operationId: configDisplayContrastGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configDisplayContrast'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/display/contrast
      summary: Replace /config/display/contrast
      operationId: configDisplayContrastPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDisplayContrast'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/display/contrast
      summary: Update /config/display/contrast
      operationId: configDisplayContrastPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDisplayContrast'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/display/contrast
      summary: Delete /config/display/contrast
      operationId: configDisplayContrastDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to 0.
  /config/display/fontset:
    get:
      tags:
        - /config/display/fontset
      summary: Get /config/display/fontset
      operationId: configDisplayFontsetGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configDisplayFontset'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/display/fontset
      summary: Replace /config/display/fontset
      operationId: configDisplayFontsetPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDisplayFontset'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/display/fontset
      summary: Update /config/display/fontset
      operationId: configDisplayFontsetPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDisplayFontset'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/display/fontset
      summary: Delete /config/display/fontset
      operationId: configDisplayFontsetDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to `normal`.
  /config/display/screen:
    get:
      tags:
        - /config/display/screen
      summary: Get /config/display/screen
      operationId: configDisplayScreenGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configDisplayScreen'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/display/screen
      summary: Replace /config/display/screen
      operationId: configDisplayScreenPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDisplayScreen'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/display/screen
      summary: Update /config/display/screen
      operationId: configDisplayScreenPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDisplayScreen'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/display/screen
      summary: Delete /config/display/screen
      operationId: configDisplayScreenDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/display/screen/registers:
    get:
      tags:
        - /config/display/screen/registers
      summary: Get /config/display/screen/registers
      operationId: configDisplayScreenRegistersGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configDisplayScreenRegisters'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/display/screen/registers
      summary: Replace /config/display/screen/registers
      operationId: configDisplayScreenRegistersPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDisplayScreenRegisters'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/display/screen/registers
      summary: Update /config/display/screen/registers
      operationId: configDisplayScreenRegistersPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDisplayScreenRegisters'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/display/screen/registers
      summary: Delete /config/display/screen/registers
      operationId: configDisplayScreenRegistersDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to empty (no registers displayed).
  /config/display/screen/registers/{name}:
    parameters:
      - name: name
        in: path
        description: |
          The name of a register or the special keyword `.default`.
        required: true
        schema:
          type: string
          example: Solar
    get:
      tags:
        - /config/display/screen/registers/{name}
      summary: Get /config/display/screen/registers/{name}
      operationId: configDisplayScreenRegistersNameGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configDisplayScreenRegistersName'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/display/screen/registers/{name}
      summary: Replace /config/display/screen/registers/{name}
      operationId: configDisplayScreenRegistersNamePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDisplayScreenRegistersName'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/display/screen/registers/{name}
      summary: Update /config/display/screen/registers/{name}
      operationId: configDisplayScreenRegistersNamePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDisplayScreenRegistersName'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/display/screen/registers/{name}
      summary: Delete /config/display/screen/registers/{name}
      operationId: configDisplayScreenRegistersNameDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Remove this register from the screen.
  /config/display/orientation:
    get:
      tags:
        - /config/display/orientation
      summary: Get /config/display/orientation
      operationId: configDisplayOrientationGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configDisplayOrientation'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/display/orientation
      summary: Replace /config/display/orientation
      operationId: configDisplayOrientationPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDisplayOrientation'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/display/orientation
      summary: Update /config/display/orientation
      operationId: configDisplayOrientationPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configDisplayOrientation'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/display/orientation
      summary: Delete /config/display/orientation
      operationId: configDisplayOrientationDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to 0.
  /config/language_code:
    get:
      tags:
        - /config/language_code
      summary: Get /config/language_code
      operationId: configLanguageCodeGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLanguageCode'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/language_code
      summary: Replace /config/language_code
      operationId: configLanguageCodePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLanguageCode'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/language_code
      summary: Update /config/language_code
      operationId: configLanguageCodePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLanguageCode'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/language_code
      summary: Delete /config/language_code
      operationId: configLanguageCodeDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to default language code `en`.
  /config/local:
    get:
      tags:
        - /config/local
      summary: Get /config/local
      operationId: configLocalGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLocal'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/local
      summary: Replace /config/local
      operationId: configLocalPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocal'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/local
      summary: Update /config/local
      operationId: configLocalPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocal'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/local
      summary: Delete /config/local
      operationId: configLocalDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset configuration to the default (all sensors off).
  /config/local/sensor:
    get:
      tags:
        - /config/local/sensor
      summary: Get /config/local/sensor
      operationId: configLocalSensorGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLocalSensor'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/local/sensor
      summary: Replace /config/local/sensor
      operationId: configLocalSensorPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocalSensor'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/local/sensor
      summary: Update /config/local/sensor
      operationId: configLocalSensorPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocalSensor'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/local/sensor
      summary: Delete /config/local/sensor
      operationId: configLocalSensorDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset configuration to all sensors off.
  /config/local/sensor/{name}:
    parameters:
      - name: name
        in: path
        description: |
          The name of a sensor (L1-L3, Ldc, or S1-S30).
        required: true
        schema:
          type: string
        example: S1
    get:
      tags:
        - /config/local/sensor/{name}
      summary: Get /config/local/sensor/{name}
      operationId: configLocalSensorNameGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLocalSensorName'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/local/sensor/{name}
      summary: Replace /config/local/sensor/{name}
      operationId: configLocalSensorNamePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocalSensorName'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/local/sensor/{name}
      summary: Update /config/local/sensor/{name}
      operationId: configLocalSensorNamePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocalSensorName'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/local/sensor/{name}
      summary: Delete /config/local/sensor/{name}
      operationId: configLocalSensorNameDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset configuration to off.
  /config/local/sensor/{name}/channel:
    parameters:
      - name: name
        in: path
        description: |
          The name of a sensor (L1-L3, Ldc, or S1-S30).
        required: true
        schema:
          type: string
        example: S1
    get:
      tags:
        - /config/local/sensor/{name}/channel
      summary: Get /config/local/sensor/{name}/channel
      operationId: configLocalSensorNameChannelGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLocalSensorNameChannel'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/local/sensor/{name}/channel
      summary: Replace /config/local/sensor/{name}/channel
      operationId: configLocalSensorNameChannelPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocalSensorNameChannel'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/local/sensor/{name}/channel
      summary: Update /config/local/sensor/{name}/channel
      operationId: configLocalSensorNameChannelPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocalSensorNameChannel'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/local/sensor/{name}/channel
      summary: Delete /config/local/sensor/{name}/channel
      operationId: configLocalSensorNameChannelDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset channel to default configuration.
  /config/local/sensor/{name}/channel/bias:
    parameters:
      - name: name
        in: path
        description: |
          The name of a sensor (L1-L3, Ldc, or S1-S30).
        required: true
        schema:
          type: string
        example: S1
    get:
      tags:
        - /config/local/sensor/{name}/channel/bias
      summary: Get /config/local/sensor/{name}/channel/bias
      operationId: configLocalSensorNameChannelBiasGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLocalSensorNameChannelBias'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/local/sensor/{name}/channel/bias
      summary: Replace /config/local/sensor/{name}/channel/bias
      operationId: configLocalSensorNameChannelBiasPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocalSensorNameChannelBias'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/local/sensor/{name}/channel/bias
      summary: Update /config/local/sensor/{name}/channel/bias
      operationId: configLocalSensorNameChannelBiasPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocalSensorNameChannelBias'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/local/sensor/{name}/channel/bias
      summary: Delete /config/local/sensor/{name}/channel/bias
      operationId: configLocalSensorNameChannelBiasDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to 0.
  /config/local/sensor/{name}/channel/mode:
    parameters:
      - name: name
        in: path
        description: |
          The name of a sensor (L1-L3, Ldc, or S1-S30).
        required: true
        schema:
          type: string
        example: S1
    get:
      tags:
        - /config/local/sensor/{name}/channel/mode
      summary: Get /config/local/sensor/{name}/channel/mode
      operationId: configLocalSensorNameChannelModeGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLocalSensorNameChannelMode'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/local/sensor/{name}/channel/mode
      summary: Replace /config/local/sensor/{name}/channel/mode
      operationId: configLocalSensorNameChannelModePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocalSensorNameChannelMode'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/local/sensor/{name}/channel/mode
      summary: Update /config/local/sensor/{name}/channel/mode
      operationId: configLocalSensorNameChannelModePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocalSensorNameChannelMode'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/local/sensor/{name}/channel/mode
      summary: Delete /config/local/sensor/{name}/channel/mode
      operationId: configLocalSensorNameChannelModeDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to `off`.
  /config/local/sensor/{name}/channel/scale:
    parameters:
      - name: name
        in: path
        description: |
          The name of a sensor (L1-L3, Ldc, or S1-S30).
        required: true
        schema:
          type: string
        example: S1
    get:
      tags:
        - /config/local/sensor/{name}/channel/scale
      summary: Get /config/local/sensor/{name}/channel/scale
      operationId: configLocalSensorNameChannelScaleGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLocalSensorNameChannelScale'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/local/sensor/{name}/channel/scale
      summary: Replace /config/local/sensor/{name}/channel/scale
      operationId: configLocalSensorNameChannelScalePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocalSensorNameChannelScale'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/local/sensor/{name}/channel/scale
      summary: Update /config/local/sensor/{name}/channel/scale
      operationId: configLocalSensorNameChannelScalePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocalSensorNameChannelScale'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/local/sensor/{name}/channel/scale
      summary: Delete /config/local/sensor/{name}/channel/scale
      operationId: configLocalSensorNameChannelScaleDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to 0.
  /config/local/sensor/{name}/error:
    parameters:
      - name: name
        in: path
        description: |
          The name of a sensor (L1-L3, Ldc, or S1-S30).
        required: true
        schema:
          type: string
        example: S1
    get:
      tags:
        - /config/local/sensor/{name}/error
      summary: Get /config/local/sensor/{name}/error
      operationId: configLocalSensorNameErrorGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLocalSensorNameError'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/local/sensor/{name}/error
      summary: Replace /config/local/sensor/{name}/error
      operationId: configLocalSensorNameErrorPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocalSensorNameError'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/local/sensor/{name}/error
      summary: Update /config/local/sensor/{name}/error
      operationId: configLocalSensorNameErrorPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocalSensorNameError'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/local/sensor/{name}/error
      summary: Delete /config/local/sensor/{name}/error
      operationId: configLocalSensorNameErrorDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to 0.
  /config/local/sensor/{name}/model:
    parameters:
      - name: name
        in: path
        description: |
          The name of a sensor (L1-L3, Ldc, or S1-S30).
        required: true
        schema:
          type: string
        example: S1
    get:
      tags:
        - /config/local/sensor/{name}/model
      summary: Get /config/local/sensor/{name}/model
      operationId: configLocalSensorNameModelGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLocalSensorNameModel'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/local/sensor/{name}/model
      summary: Replace /config/local/sensor/{name}/model
      operationId: configLocalSensorNameModelPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocalSensorNameModel'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/local/sensor/{name}/model
      summary: Update /config/local/sensor/{name}/model
      operationId: configLocalSensorNameModelPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocalSensorNameModel'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/local/sensor/{name}/model
      summary: Delete /config/local/sensor/{name}/model
      operationId: configLocalSensorNameModelDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/local/sensor/{name}/phase:
    parameters:
      - name: name
        in: path
        description: |
          The name of a sensor (L1-L3, Ldc, or S1-S30).
        required: true
        schema:
          type: string
        example: S1
    get:
      tags:
        - /config/local/sensor/{name}/phase
      summary: Get /config/local/sensor/{name}/phase
      operationId: configLocalSensorNamePhaseGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLocalSensorNamePhase'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/local/sensor/{name}/phase
      summary: Replace /config/local/sensor/{name}/phase
      operationId: configLocalSensorNamePhasePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocalSensorNamePhase'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/local/sensor/{name}/phase
      summary: Update /config/local/sensor/{name}/phase
      operationId: configLocalSensorNamePhasePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocalSensorNamePhase'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/local/sensor/{name}/phase
      summary: Delete /config/local/sensor/{name}/phase
      operationId: configLocalSensorNamePhaseDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/local/gain:
    get:
      tags:
        - /config/local/gain
      summary: Get /config/local/gain
      operationId: configLocalGainGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLocalGain'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/local/gain
      summary: Replace /config/local/gain
      operationId: configLocalGainPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocalGain'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/local/gain
      summary: Update /config/local/gain
      operationId: configLocalGainPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocalGain'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/local/gain
      summary: Delete /config/local/gain
      operationId: configLocalGainDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset gain to `normal`.
  /config/local/update-interval:
    get:
      tags:
        - /config/local/update-interval
      summary: Get /config/local/update-interval
      operationId: configLocalUpdateIntervalGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLocalUpdateInterval'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/local/update-interval
      summary: Replace /config/local/update-interval
      operationId: configLocalUpdateIntervalPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocalUpdateInterval'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/local/update-interval
      summary: Update /config/local/update-interval
      operationId: configLocalUpdateIntervalPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocalUpdateInterval'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/local/update-interval
      summary: Delete /config/local/update-interval
      operationId: configLocalUpdateIntervalDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to 1000 milliseconds.
  /config/location:
    get:
      tags:
        - /config/location
      summary: Get /config/location
      operationId: configLocationGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLocation'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/location
      summary: Replace /config/location
      operationId: configLocationPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocation'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/location
      summary: Update /config/location
      operationId: configLocationPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocation'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/location
      summary: Delete /config/location
      operationId: configLocationDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/location/latitude:
    get:
      tags:
        - /config/location/latitude
      summary: Get /config/location/latitude
      operationId: configLocationLatitudeGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLocationLatitude'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/location/latitude
      summary: Replace /config/location/latitude
      operationId: configLocationLatitudePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocationLatitude'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/location/latitude
      summary: Update /config/location/latitude
      operationId: configLocationLatitudePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocationLatitude'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/location/latitude
      summary: Delete /config/location/latitude
      operationId: configLocationLatitudeDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to 0.
  /config/location/longitude:
    get:
      tags:
        - /config/location/longitude
      summary: Get /config/location/longitude
      operationId: configLocationLongitudeGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLocationLongitude'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/location/longitude
      summary: Replace /config/location/longitude
      operationId: configLocationLongitudePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocationLongitude'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/location/longitude
      summary: Update /config/location/longitude
      operationId: configLocationLongitudePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLocationLongitude'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/location/longitude
      summary: Delete /config/location/longitude
      operationId: configLocationLongitudeDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to 0.
  /config/log:
    get:
      tags:
        - /config/log
      summary: Get /config/log
      operationId: configLogGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLog'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/log
      summary: Replace /config/log
      operationId: configLogPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLog'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/log
      summary: Update /config/log
      operationId: configLogPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLog'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/log
      summary: Delete /config/log
      operationId: configLogDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/log/system:
    get:
      tags:
        - /config/log/system
      summary: Get /config/log/system
      operationId: configLogSystemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLogSystem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/log/system
      summary: Replace /config/log/system
      operationId: configLogSystemPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLogSystem'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/log/system
      summary: Update /config/log/system
      operationId: configLogSystemPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLogSystem'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/log/system
      summary: Delete /config/log/system
      operationId: configLogSystemDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/log/system/size:
    get:
      tags:
        - /config/log/system/size
      summary: Get /config/log/system/size
      operationId: configLogSystemSizeGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLogSystemSize'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/log/system/size
      summary: Replace /config/log/system/size
      operationId: configLogSystemSizePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLogSystemSize'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/log/system/size
      summary: Update /config/log/system/size
      operationId: configLogSystemSizePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLogSystemSize'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/log/system/size
      summary: Delete /config/log/system/size
      operationId: configLogSystemSizeDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to 0.
  /config/lua:
    get:
      tags:
        - /config/lua
      summary: Get /config/lua
      operationId: configLuaGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLua'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/lua
      summary: Replace /config/lua
      operationId: configLuaPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLua'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/lua
      summary: Update /config/lua
      operationId: configLuaPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLua'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/lua
      summary: Delete /config/lua
      operationId: configLuaDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/lua/script:
    get:
      tags:
        - /config/lua/script
      summary: Get /config/lua/script
      operationId: configLuaScriptGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLuaScript'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/lua/script
      summary: Replace /config/lua/script
      operationId: configLuaScriptPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLuaScript'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/lua/script
      summary: Update /config/lua/script
      operationId: configLuaScriptPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLuaScript'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/lua/script
      summary: Delete /config/lua/script
      operationId: configLuaScriptDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/lua/script/alertd:
    get:
      tags:
        - /config/lua/script/alertd
      summary: Get /config/lua/script/alertd
      operationId: configLuaScriptAlertdGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLuaScriptAlertd'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/lua/script/alertd
      summary: Replace /config/lua/script/alertd
      operationId: configLuaScriptAlertdPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLuaScriptAlertd'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/lua/script/alertd
      summary: Update /config/lua/script/alertd
      operationId: configLuaScriptAlertdPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLuaScriptAlertd'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/lua/script/alertd
      summary: Delete /config/lua/script/alertd
      operationId: configLuaScriptAlertdDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/lua/script/tariff:
    get:
      tags:
        - /config/lua/script/tariff
      summary: Get /config/lua/script/tariff
      operationId: configLuaScriptTariffGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLuaScriptTariff'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/lua/script/tariff
      summary: Replace /config/lua/script/tariff
      operationId: configLuaScriptTariffPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLuaScriptTariff'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/lua/script/tariff
      summary: Update /config/lua/script/tariff
      operationId: configLuaScriptTariffPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLuaScriptTariff'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/lua/script/tariff
      summary: Delete /config/lua/script/tariff
      operationId: configLuaScriptTariffDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/lua/script/teamd:
    get:
      tags:
        - /config/lua/script/teamd
      summary: Get /config/lua/script/teamd
      operationId: configLuaScriptTeamdGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLuaScriptTeamd'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/lua/script/teamd
      summary: Replace /config/lua/script/teamd
      operationId: configLuaScriptTeamdPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLuaScriptTeamd'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/lua/script/teamd
      summary: Update /config/lua/script/teamd
      operationId: configLuaScriptTeamdPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLuaScriptTeamd'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/lua/script/teamd
      summary: Delete /config/lua/script/teamd
      operationId: configLuaScriptTeamdDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/lua/ctrld:
    get:
      tags:
        - /config/lua/ctrld
      summary: Get /config/lua/ctrld
      operationId: configLuaCtrldGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLuaCtrld'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/lua/ctrld
      summary: Replace /config/lua/ctrld
      operationId: configLuaCtrldPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLuaCtrld'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/lua/ctrld
      summary: Update /config/lua/ctrld
      operationId: configLuaCtrldPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLuaCtrld'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/lua/ctrld
      summary: Delete /config/lua/ctrld
      operationId: configLuaCtrldDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Delete all control scripts.
  /config/lua/ctrld/{script}:
    parameters:
      - name: script
        in: path
        description: |
          The name of a Lua script.
        required: true
        schema:
          type: string
    get:
      tags:
        - /config/lua/ctrld/{script}
      summary: Get /config/lua/ctrld/{script}
      operationId: configLuaCtrldScriptGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configLuaCtrldScript'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/lua/ctrld/{script}
      summary: Replace /config/lua/ctrld/{script}
      operationId: configLuaCtrldScriptPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLuaCtrldScript'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/lua/ctrld/{script}
      summary: Update /config/lua/ctrld/{script}
      operationId: configLuaCtrldScriptPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configLuaCtrldScript'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/lua/ctrld/{script}
      summary: Delete /config/lua/ctrld/{script}
      operationId: configLuaCtrldScriptDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Delete the script.
  /config/modbus:
    get:
      tags:
        - /config/modbus
      summary: Get /config/modbus
      operationId: configModbusGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configModbus'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/modbus
      summary: Replace /config/modbus
      operationId: configModbusPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbus'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus
      summary: Update /config/modbus
      operationId: configModbusPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbus'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus
      summary: Delete /config/modbus
      operationId: configModbusDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/modbus/client:
    get:
      tags:
        - /config/modbus/client
      summary: Get /config/modbus/client
      operationId: configModbusClientGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configModbusClient'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/modbus/client
      summary: Replace /config/modbus/client
      operationId: configModbusClientPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClient'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/client
      summary: Update /config/modbus/client
      operationId: configModbusClientPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClient'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/client
      summary: Delete /config/modbus/client
      operationId: configModbusClientDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/modbus/client/map:
    get:
      tags:
        - /config/modbus/client/map
      summary: Get /config/modbus/client/map
      operationId: configModbusClientMapGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configModbusClientMap'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/modbus/client/map
      summary: Replace /config/modbus/client/map
      operationId: configModbusClientMapPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMap'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/client/map
      summary: Update /config/modbus/client/map
      operationId: configModbusClientMapPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMap'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/client/map
      summary: Delete /config/modbus/client/map
      operationId: configModbusClientMapDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Delete all user maps.
  /config/modbus/client/map/{name}:
    parameters:
      - name: name
        in: path
        description: |
          The name of a user Modbus map (editable).
        required: true
        schema:
          type: string
          example: my_modbus_map
    get:
      tags:
        - /config/modbus/client/map/{name}
      summary: Get /config/modbus/client/map/{name}
      operationId: configModbusClientMapNameGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configModbusClientMapName'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/modbus/client/map/{name}
      summary: Replace /config/modbus/client/map/{name}
      operationId: configModbusClientMapNamePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapName'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/client/map/{name}
      summary: Update /config/modbus/client/map/{name}
      operationId: configModbusClientMapNamePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapName'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/client/map/{name}
      summary: Delete /config/modbus/client/map/{name}
      operationId: configModbusClientMapNameDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Delete this map.
  /config/modbus/client/map/{name}/option:
    parameters:
      - name: name
        in: path
        description: |
          The name of a user Modbus map (editable).
        required: true
        schema:
          type: string
          example: my_modbus_map
    get:
      tags:
        - /config/modbus/client/map/{name}/option
      summary: Get /config/modbus/client/map/{name}/option
      operationId: configModbusClientMapNameOptionGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configModbusClientMapNameOption'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/modbus/client/map/{name}/option
      summary: Replace /config/modbus/client/map/{name}/option
      operationId: configModbusClientMapNameOptionPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameOption'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/client/map/{name}/option
      summary: Update /config/modbus/client/map/{name}/option
      operationId: configModbusClientMapNameOptionPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameOption'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/client/map/{name}/option
      summary: Delete /config/modbus/client/map/{name}/option
      operationId: configModbusClientMapNameOptionDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Delete all options.
  /config/modbus/client/map/{name}/option/{opt}:
    parameters:
      - name: name
        in: path
        description: |
          The name of a user Modbus map (editable).
        required: true
        schema:
          type: string
          example: my_modbus_map
      - name: opt
        in: path
        description: |
          The name of a Modbus map option.
        required: true
        schema:
          type: string
          enum:
            - default-modbus-addr
            - default-serial-params
            - default-tcp-port
    get:
      tags:
        - /config/modbus/client/map/{name}/option/{opt}
      summary: Get /config/modbus/client/map/{name}/option/{opt}
      operationId: configModbusClientMapNameOptionOptGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configModbusClientMapNameOptionOpt'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/modbus/client/map/{name}/option/{opt}
      summary: Replace /config/modbus/client/map/{name}/option/{opt}
      operationId: configModbusClientMapNameOptionOptPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameOptionOpt'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/client/map/{name}/option/{opt}
      summary: Update /config/modbus/client/map/{name}/option/{opt}
      operationId: configModbusClientMapNameOptionOptPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameOptionOpt'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/client/map/{name}/option/{opt}
      summary: Delete /config/modbus/client/map/{name}/option/{opt}
      operationId: configModbusClientMapNameOptionOptDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Delete this option.
  /config/modbus/client/map/{name}/reg:
    parameters:
      - name: name
        in: path
        description: |
          The name of a user Modbus map (editable).
        required: true
        schema:
          type: string
          example: my_modbus_map
    get:
      tags:
        - /config/modbus/client/map/{name}/reg
      summary: Get /config/modbus/client/map/{name}/reg
      operationId: configModbusClientMapNameRegGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configModbusClientMapNameReg'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/modbus/client/map/{name}/reg
      summary: Replace /config/modbus/client/map/{name}/reg
      operationId: configModbusClientMapNameRegPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameReg'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/client/map/{name}/reg
      summary: Update /config/modbus/client/map/{name}/reg
      operationId: configModbusClientMapNameRegPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameReg'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/client/map/{name}/reg
      summary: Delete /config/modbus/client/map/{name}/reg
      operationId: configModbusClientMapNameRegDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty array.
  /config/modbus/client/map/{name}/reg/{idx}:
    parameters:
      - name: name
        in: path
        description: |
          The name of a user Modbus map (editable).
        required: true
        schema:
          type: string
          example: my_modbus_map
      - name: idx
        in: path
        description: |
          The index of a Modbus map register.
        required: true
        schema:
          type: string
    get:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}
      summary: Get /config/modbus/client/map/{name}/reg/{idx}
      operationId: configModbusClientMapNameRegItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configModbusClientMapNameRegItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}
      summary: Replace /config/modbus/client/map/{name}/reg/{idx}
      operationId: configModbusClientMapNameRegItemPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameRegItem'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}
      summary: Update /config/modbus/client/map/{name}/reg/{idx}
      operationId: configModbusClientMapNameRegItemPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameRegItem'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}
      summary: Delete /config/modbus/client/map/{name}/reg/{idx}
      operationId: configModbusClientMapNameRegItemDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Delete this register definition.
  /config/modbus/client/map/{name}/reg/{idx}/name:
    parameters:
      - name: name
        in: path
        description: |
          The name of a user Modbus map (editable).
        required: true
        schema:
          type: string
          example: my_modbus_map
      - name: idx
        in: path
        description: |
          The index of a Modbus map register.
        required: true
        schema:
          type: string
    get:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/name
      summary: Get /config/modbus/client/map/{name}/reg/{idx}/name
      operationId: configModbusClientMapNameRegItemNameGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configModbusClientMapNameRegItemName'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/name
      summary: Replace /config/modbus/client/map/{name}/reg/{idx}/name
      operationId: configModbusClientMapNameRegItemNamePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameRegItemName'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/name
      summary: Update /config/modbus/client/map/{name}/reg/{idx}/name
      operationId: configModbusClientMapNameRegItemNamePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameRegItemName'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/name
      summary: Delete /config/modbus/client/map/{name}/reg/{idx}/name
      operationId: configModbusClientMapNameRegItemNameDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/modbus/client/map/{name}/reg/{idx}/addr:
    parameters:
      - name: name
        in: path
        description: |
          The name of a user Modbus map (editable).
        required: true
        schema:
          type: string
          example: my_modbus_map
      - name: idx
        in: path
        description: |
          The index of a Modbus map register.
        required: true
        schema:
          type: string
    get:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/addr
      summary: Get /config/modbus/client/map/{name}/reg/{idx}/addr
      operationId: configModbusClientMapNameRegItemAddrGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configModbusClientMapNameRegItemAddr'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/addr
      summary: Replace /config/modbus/client/map/{name}/reg/{idx}/addr
      operationId: configModbusClientMapNameRegItemAddrPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameRegItemAddr'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/addr
      summary: Update /config/modbus/client/map/{name}/reg/{idx}/addr
      operationId: configModbusClientMapNameRegItemAddrPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameRegItemAddr'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/addr
      summary: Delete /config/modbus/client/map/{name}/reg/{idx}/addr
      operationId: configModbusClientMapNameRegItemAddrDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to 0.
  /config/modbus/client/map/{name}/reg/{idx}/type:
    parameters:
      - name: name
        in: path
        description: |
          The name of a user Modbus map (editable).
        required: true
        schema:
          type: string
          example: my_modbus_map
      - name: idx
        in: path
        description: |
          The index of a Modbus map register.
        required: true
        schema:
          type: string
    get:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/type
      summary: Get /config/modbus/client/map/{name}/reg/{idx}/type
      operationId: configModbusClientMapNameRegItemTypeGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configModbusClientMapNameRegItemType'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/type
      summary: Replace /config/modbus/client/map/{name}/reg/{idx}/type
      operationId: configModbusClientMapNameRegItemTypePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameRegItemType'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/type
      summary: Update /config/modbus/client/map/{name}/reg/{idx}/type
      operationId: configModbusClientMapNameRegItemTypePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameRegItemType'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/type
      summary: Delete /config/modbus/client/map/{name}/reg/{idx}/type
      operationId: configModbusClientMapNameRegItemTypeDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to `u16`.
  /config/modbus/client/map/{name}/reg/{idx}/kind:
    parameters:
      - name: name
        in: path
        description: |
          The name of a user Modbus map (editable).
        required: true
        schema:
          type: string
          example: my_modbus_map
      - name: idx
        in: path
        description: |
          The index of a Modbus map register.
        required: true
        schema:
          type: string
    get:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/kind
      summary: Get /config/modbus/client/map/{name}/reg/{idx}/kind
      operationId: configModbusClientMapNameRegItemKindGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configModbusClientMapNameRegItemKind'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/kind
      summary: Replace /config/modbus/client/map/{name}/reg/{idx}/kind
      operationId: configModbusClientMapNameRegItemKindPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameRegItemKind'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/kind
      summary: Update /config/modbus/client/map/{name}/reg/{idx}/kind
      operationId: configModbusClientMapNameRegItemKindPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameRegItemKind'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/kind
      summary: Delete /config/modbus/client/map/{name}/reg/{idx}/kind
      operationId: configModbusClientMapNameRegItemKindDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to `analog`.
  /config/modbus/client/map/{name}/reg/{idx}/unit:
    parameters:
      - name: name
        in: path
        description: |
          The name of a user Modbus map (editable).
        required: true
        schema:
          type: string
          example: my_modbus_map
      - name: idx
        in: path
        description: |
          The index of a Modbus map register.
        required: true
        schema:
          type: string
    get:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/unit
      summary: Get /config/modbus/client/map/{name}/reg/{idx}/unit
      operationId: configModbusClientMapNameRegItemUnitGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configModbusClientMapNameRegItemUnit'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/unit
      summary: Replace /config/modbus/client/map/{name}/reg/{idx}/unit
      operationId: configModbusClientMapNameRegItemUnitPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameRegItemUnit'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/unit
      summary: Update /config/modbus/client/map/{name}/reg/{idx}/unit
      operationId: configModbusClientMapNameRegItemUnitPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameRegItemUnit'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/unit
      summary: Delete /config/modbus/client/map/{name}/reg/{idx}/unit
      operationId: configModbusClientMapNameRegItemUnitDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/modbus/client/map/{name}/reg/{idx}/offset:
    parameters:
      - name: name
        in: path
        description: |
          The name of a user Modbus map (editable).
        required: true
        schema:
          type: string
          example: my_modbus_map
      - name: idx
        in: path
        description: |
          The index of a Modbus map register.
        required: true
        schema:
          type: string
    get:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/offset
      summary: Get /config/modbus/client/map/{name}/reg/{idx}/offset
      operationId: configModbusClientMapNameRegItemOffsetGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: >-
                      #/components/schemas/configModbusClientMapNameRegItemOffset
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/offset
      summary: Replace /config/modbus/client/map/{name}/reg/{idx}/offset
      operationId: configModbusClientMapNameRegItemOffsetPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameRegItemOffset'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/offset
      summary: Update /config/modbus/client/map/{name}/reg/{idx}/offset
      operationId: configModbusClientMapNameRegItemOffsetPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameRegItemOffset'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/offset
      summary: Delete /config/modbus/client/map/{name}/reg/{idx}/offset
      operationId: configModbusClientMapNameRegItemOffsetDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to 0.
  /config/modbus/client/map/{name}/reg/{idx}/scale:
    parameters:
      - name: name
        in: path
        description: |
          The name of a user Modbus map (editable).
        required: true
        schema:
          type: string
          example: my_modbus_map
      - name: idx
        in: path
        description: |
          The index of a Modbus map register.
        required: true
        schema:
          type: string
    get:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/scale
      summary: Get /config/modbus/client/map/{name}/reg/{idx}/scale
      operationId: configModbusClientMapNameRegItemScaleGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configModbusClientMapNameRegItemScale'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/scale
      summary: Replace /config/modbus/client/map/{name}/reg/{idx}/scale
      operationId: configModbusClientMapNameRegItemScalePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameRegItemScale'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/scale
      summary: Update /config/modbus/client/map/{name}/reg/{idx}/scale
      operationId: configModbusClientMapNameRegItemScalePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameRegItemScale'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/scale
      summary: Delete /config/modbus/client/map/{name}/reg/{idx}/scale
      operationId: configModbusClientMapNameRegItemScaleDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to 1.
  /config/modbus/client/map/{name}/reg/{idx}/access:
    parameters:
      - name: name
        in: path
        description: |
          The name of a user Modbus map (editable).
        required: true
        schema:
          type: string
          example: my_modbus_map
      - name: idx
        in: path
        description: |
          The index of a Modbus map register.
        required: true
        schema:
          type: string
    get:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/access
      summary: Get /config/modbus/client/map/{name}/reg/{idx}/access
      operationId: configModbusClientMapNameRegItemAccessGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: >-
                      #/components/schemas/configModbusClientMapNameRegItemAccess
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/access
      summary: Replace /config/modbus/client/map/{name}/reg/{idx}/access
      operationId: configModbusClientMapNameRegItemAccessPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameRegItemAccess'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/access
      summary: Update /config/modbus/client/map/{name}/reg/{idx}/access
      operationId: configModbusClientMapNameRegItemAccessPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusClientMapNameRegItemAccess'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/client/map/{name}/reg/{idx}/access
      summary: Delete /config/modbus/client/map/{name}/reg/{idx}/access
      operationId: configModbusClientMapNameRegItemAccessDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to `rw`.
  /config/modbus/server:
    get:
      tags:
        - /config/modbus/server
      summary: Get /config/modbus/server
      operationId: configModbusServerGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configModbusServer'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/modbus/server
      summary: Replace /config/modbus/server
      operationId: configModbusServerPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusServer'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/server
      summary: Update /config/modbus/server
      operationId: configModbusServerPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusServer'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/server
      summary: Delete /config/modbus/server
      operationId: configModbusServerDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/modbus/server/enable:
    get:
      tags:
        - /config/modbus/server/enable
      summary: Get /config/modbus/server/enable
      operationId: configModbusServerEnableGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configModbusServerEnable'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/modbus/server/enable
      summary: Replace /config/modbus/server/enable
      operationId: configModbusServerEnablePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusServerEnable'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/server/enable
      summary: Update /config/modbus/server/enable
      operationId: configModbusServerEnablePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusServerEnable'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/server/enable
      summary: Delete /config/modbus/server/enable
      operationId: configModbusServerEnableDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty array.
  /config/modbus/server/enable/{idx}:
    parameters:
      - name: idx
        in: path
        description: |
          The index of an enabled Modbus protocol.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /config/modbus/server/enable/{idx}
      summary: Get /config/modbus/server/enable/{idx}
      operationId: configModbusServerEnableItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configModbusServerEnableItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/modbus/server/enable/{idx}
      summary: Replace /config/modbus/server/enable/{idx}
      operationId: configModbusServerEnableItemPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusServerEnableItem'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/server/enable/{idx}
      summary: Update /config/modbus/server/enable/{idx}
      operationId: configModbusServerEnableItemPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusServerEnableItem'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/server/enable/{idx}
      summary: Delete /config/modbus/server/enable/{idx}
      operationId: configModbusServerEnableItemDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Disable this protocol.
  /config/modbus/server/id:
    get:
      tags:
        - /config/modbus/server/id
      summary: Get /config/modbus/server/id
      operationId: configModbusServerIdGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configModbusServerId'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/modbus/server/id
      summary: Replace /config/modbus/server/id
      operationId: configModbusServerIdPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusServerId'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/server/id
      summary: Update /config/modbus/server/id
      operationId: configModbusServerIdPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusServerId'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/server/id
      summary: Delete /config/modbus/server/id
      operationId: configModbusServerIdDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to 1.
  /config/modbus/server/rtu:
    get:
      tags:
        - /config/modbus/server/rtu
      summary: Get /config/modbus/server/rtu
      operationId: configModbusServerRtuGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configModbusServerRtu'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/modbus/server/rtu
      summary: Replace /config/modbus/server/rtu
      operationId: configModbusServerRtuPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusServerRtu'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/server/rtu
      summary: Update /config/modbus/server/rtu
      operationId: configModbusServerRtuPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusServerRtu'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/server/rtu
      summary: Delete /config/modbus/server/rtu
      operationId: configModbusServerRtuDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/modbus/server/rtu/port:
    get:
      tags:
        - /config/modbus/server/rtu/port
      summary: Get /config/modbus/server/rtu/port
      operationId: configModbusServerRtuPortGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configModbusServerRtuPort'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/modbus/server/rtu/port
      summary: Replace /config/modbus/server/rtu/port
      operationId: configModbusServerRtuPortPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusServerRtuPort'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/server/rtu/port
      summary: Update /config/modbus/server/rtu/port
      operationId: configModbusServerRtuPortPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusServerRtuPort'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/server/rtu/port
      summary: Delete /config/modbus/server/rtu/port
      operationId: configModbusServerRtuPortDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/modbus/server/tcp:
    get:
      tags:
        - /config/modbus/server/tcp
      summary: Get /config/modbus/server/tcp
      operationId: configModbusServerTcpGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configModbusServerTcp'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/modbus/server/tcp
      summary: Replace /config/modbus/server/tcp
      operationId: configModbusServerTcpPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusServerTcp'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/server/tcp
      summary: Update /config/modbus/server/tcp
      operationId: configModbusServerTcpPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusServerTcp'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/server/tcp
      summary: Delete /config/modbus/server/tcp
      operationId: configModbusServerTcpDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/modbus/server/tcp/port:
    get:
      tags:
        - /config/modbus/server/tcp/port
      summary: Get /config/modbus/server/tcp/port
      operationId: configModbusServerTcpPortGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configModbusServerTcpPort'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/modbus/server/tcp/port
      summary: Replace /config/modbus/server/tcp/port
      operationId: configModbusServerTcpPortPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusServerTcpPort'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/modbus/server/tcp/port
      summary: Update /config/modbus/server/tcp/port
      operationId: configModbusServerTcpPortPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configModbusServerTcpPort'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/modbus/server/tcp/port
      summary: Delete /config/modbus/server/tcp/port
      operationId: configModbusServerTcpPortDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to 502.
  /config/net:
    get:
      tags:
        - /config/net
      summary: Get /config/net
      operationId: configNetGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNet'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/net
      summary: Replace /config/net
      operationId: configNetPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNet'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net
      summary: Update /config/net
      operationId: configNetPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNet'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net
      summary: Delete /config/net
      operationId: configNetDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/net/ethernet:
    get:
      tags:
        - /config/net/ethernet
      summary: Get /config/net/ethernet
      operationId: configNetEthernetGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetEthernet'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/net/ethernet
      summary: Replace /config/net/ethernet
      operationId: configNetEthernetPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetEthernet'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/ethernet
      summary: Update /config/net/ethernet
      operationId: configNetEthernetPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetEthernet'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/ethernet
      summary: Delete /config/net/ethernet
      operationId: configNetEthernetDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/net/ethernet/watchdog:
    get:
      tags:
        - /config/net/ethernet/watchdog
      summary: Get /config/net/ethernet/watchdog
      operationId: configNetEthernetWatchdogGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetEthernetWatchdog'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/net/ethernet/watchdog
      summary: Replace /config/net/ethernet/watchdog
      operationId: configNetEthernetWatchdogPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetEthernetWatchdog'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/ethernet/watchdog
      summary: Update /config/net/ethernet/watchdog
      operationId: configNetEthernetWatchdogPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetEthernetWatchdog'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/ethernet/watchdog
      summary: Delete /config/net/ethernet/watchdog
      operationId: configNetEthernetWatchdogDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to `true`.
  /config/net/goproxy:
    get:
      tags:
        - /config/net/goproxy
      summary: Get /config/net/goproxy
      operationId: configNetGoproxyGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetGoproxy'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/net/goproxy
      summary: Replace /config/net/goproxy
      operationId: configNetGoproxyPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetGoproxy'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/goproxy
      summary: Update /config/net/goproxy
      operationId: configNetGoproxyPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetGoproxy'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/goproxy
      summary: Delete /config/net/goproxy
      operationId: configNetGoproxyDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/net/goproxy/enable:
    get:
      tags:
        - /config/net/goproxy/enable
      summary: Get /config/net/goproxy/enable
      operationId: configNetGoproxyEnableGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetGoproxyEnable'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/net/goproxy/enable
      summary: Replace /config/net/goproxy/enable
      operationId: configNetGoproxyEnablePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetGoproxyEnable'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/goproxy/enable
      summary: Update /config/net/goproxy/enable
      operationId: configNetGoproxyEnablePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetGoproxyEnable'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/goproxy/enable
      summary: Delete /config/net/goproxy/enable
      operationId: configNetGoproxyEnableDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to `false`.
  /config/net/goproxy/server:
    get:
      tags:
        - /config/net/goproxy/server
      summary: Get /config/net/goproxy/server
      operationId: configNetGoproxyServerGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetGoproxyServer'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/net/goproxy/server
      summary: Replace /config/net/goproxy/server
      operationId: configNetGoproxyServerPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetGoproxyServer'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/goproxy/server
      summary: Update /config/net/goproxy/server
      operationId: configNetGoproxyServerPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetGoproxyServer'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/goproxy/server
      summary: Delete /config/net/goproxy/server
      operationId: configNetGoproxyServerDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/net/homeplug:
    get:
      tags:
        - /config/net/homeplug
      summary: Get /config/net/homeplug
      operationId: configNetHomeplugGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetHomeplug'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/net/homeplug
      summary: Replace /config/net/homeplug
      operationId: configNetHomeplugPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetHomeplug'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/homeplug
      summary: Update /config/net/homeplug
      operationId: configNetHomeplugPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetHomeplug'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/homeplug
      summary: Delete /config/net/homeplug
      operationId: configNetHomeplugDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/net/homeplug/region:
    get:
      tags:
        - /config/net/homeplug/region
      summary: Get /config/net/homeplug/region
      operationId: configNetHomeplugRegionGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetHomeplugRegion'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/net/homeplug/region
      summary: Replace /config/net/homeplug/region
      operationId: configNetHomeplugRegionPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetHomeplugRegion'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/homeplug/region
      summary: Update /config/net/homeplug/region
      operationId: configNetHomeplugRegionPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetHomeplugRegion'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/homeplug/region
      summary: Delete /config/net/homeplug/region
      operationId: configNetHomeplugRegionDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to `NA`.
  /config/net/hostname:
    get:
      tags:
        - /config/net/hostname
      summary: Get /config/net/hostname
      operationId: configNetHostnameGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetHostname'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/net/hostname
      summary: Replace /config/net/hostname
      operationId: configNetHostnamePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetHostname'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/hostname
      summary: Update /config/net/hostname
      operationId: configNetHostnamePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetHostname'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/hostname
      summary: Delete /config/net/hostname
      operationId: configNetHostnameDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/net/http:
    get:
      tags:
        - /config/net/http
      summary: Get /config/net/http
      operationId: configNetHttpGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetHttp'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/net/http
      summary: Replace /config/net/http
      operationId: configNetHttpPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetHttp'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/http
      summary: Update /config/net/http
      operationId: configNetHttpPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetHttp'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/http
      summary: Delete /config/net/http
      operationId: configNetHttpDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/net/http/client:
    get:
      tags:
        - /config/net/http/client
      summary: Get /config/net/http/client
      operationId: configNetHttpClientGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetHttpClient'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/net/http/client
      summary: Replace /config/net/http/client
      operationId: configNetHttpClientPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetHttpClient'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/http/client
      summary: Update /config/net/http/client
      operationId: configNetHttpClientPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetHttpClient'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/http/client
      summary: Delete /config/net/http/client
      operationId: configNetHttpClientDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/net/http/client/insecure:
    get:
      tags:
        - /config/net/http/client/insecure
      summary: Get /config/net/http/client/insecure
      operationId: configNetHttpClientInsecureGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetHttpClientInsecure'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/net/http/client/insecure
      summary: Replace /config/net/http/client/insecure
      operationId: configNetHttpClientInsecurePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetHttpClientInsecure'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/http/client/insecure
      summary: Update /config/net/http/client/insecure
      operationId: configNetHttpClientInsecurePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetHttpClientInsecure'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/http/client/insecure
      summary: Delete /config/net/http/client/insecure
      operationId: configNetHttpClientInsecureDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to `false`.
  /config/net/http/certificate:
    put:
      tags:
        - /config/net/http/certificate
      summary: Replace /config/net/http/certificate
      operationId: configNetHttpCertificatePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetHttpCertificate'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >
        Set the HTTP certificate to the one passed in the request body.


        This resource is **not** updated

        [transactionally](/webapi/4.6/openapi/glossary#section/Non-Transactional-Updates).
    post:
      tags:
        - /config/net/http/certificate
      summary: Update /config/net/http/certificate
      operationId: configNetHttpCertificatePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetHttpCertificate'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >
        Set the HTTP certificate to the one passed in the request body.


        This resource is **not** updated

        [transactionally](/webapi/4.6/openapi/glossary#section/Non-Transactional-Updates).
    delete:
      tags:
        - /config/net/http/certificate
      summary: Delete /config/net/http/certificate
      operationId: configNetHttpCertificateDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >
        Reset to a factory-installed self-signed certificate.


        This resource is **not** updated

        [transactionally](/webapi/4.6/openapi/glossary#section/Non-Transactional-Updates).
  /config/net/http/cgi-bin:
    get:
      tags:
        - /config/net/http/cgi-bin
      summary: Get /config/net/http/cgi-bin
      operationId: configNetHttpCgiBinGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetHttpCgiBin'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/net/http/cgi-bin
      summary: Replace /config/net/http/cgi-bin
      operationId: configNetHttpCgiBinPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetHttpCgiBin'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >
        Set CGI-BIN support according to the value passed in the request body.


        This resource is **not** updated

        [transactionally](/webapi/4.6/openapi/glossary#section/Non-Transactional-Updates).
    post:
      tags:
        - /config/net/http/cgi-bin
      summary: Update /config/net/http/cgi-bin
      operationId: configNetHttpCgiBinPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetHttpCgiBin'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >
        Set CGI-BIN support according to the value passed in the request body.


        This resource is **not** updated

        [transactionally](/webapi/4.6/openapi/glossary#section/Non-Transactional-Updates).
    delete:
      tags:
        - /config/net/http/cgi-bin
      summary: Delete /config/net/http/cgi-bin
      operationId: configNetHttpCgiBinDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >
        Reset to `disable`.


        This resource is **not** updated

        [transactionally](/webapi/4.6/openapi/glossary#section/Non-Transactional-Updates).
  /config/net/ipv4:
    get:
      tags:
        - /config/net/ipv4
      summary: Get /config/net/ipv4
      operationId: configNetIpv4Get
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetIpv4'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/net/ipv4
      summary: Replace /config/net/ipv4
      operationId: configNetIpv4Put
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetIpv4'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/ipv4
      summary: Update /config/net/ipv4
      operationId: configNetIpv4Post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetIpv4'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/ipv4
      summary: Delete /config/net/ipv4
      operationId: configNetIpv4Delete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/net/ipv4/dhcp:
    get:
      tags:
        - /config/net/ipv4/dhcp
      summary: Get /config/net/ipv4/dhcp
      operationId: configNetIpv4DhcpGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetIpv4Dhcp'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/net/ipv4/dhcp
      summary: Replace /config/net/ipv4/dhcp
      operationId: configNetIpv4DhcpPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetIpv4Dhcp'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/ipv4/dhcp
      summary: Update /config/net/ipv4/dhcp
      operationId: configNetIpv4DhcpPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetIpv4Dhcp'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/ipv4/dhcp
      summary: Delete /config/net/ipv4/dhcp
      operationId: configNetIpv4DhcpDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to `true`.
  /config/net/ipv4/address:
    get:
      tags:
        - /config/net/ipv4/address
      summary: Get /config/net/ipv4/address
      operationId: configNetIpv4AddressGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetIpv4Address'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/net/ipv4/address
      summary: Replace /config/net/ipv4/address
      operationId: configNetIpv4AddressPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetIpv4Address'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/ipv4/address
      summary: Update /config/net/ipv4/address
      operationId: configNetIpv4AddressPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetIpv4Address'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/ipv4/address
      summary: Delete /config/net/ipv4/address
      operationId: configNetIpv4AddressDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to 0.0.0.0.
  /config/net/ipv4/broadcast:
    get:
      tags:
        - /config/net/ipv4/broadcast
      summary: Get /config/net/ipv4/broadcast
      operationId: configNetIpv4BroadcastGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetIpv4Broadcast'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/net/ipv4/broadcast
      summary: Replace /config/net/ipv4/broadcast
      operationId: configNetIpv4BroadcastPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetIpv4Broadcast'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/ipv4/broadcast
      summary: Update /config/net/ipv4/broadcast
      operationId: configNetIpv4BroadcastPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetIpv4Broadcast'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/ipv4/broadcast
      summary: Delete /config/net/ipv4/broadcast
      operationId: configNetIpv4BroadcastDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to 0.0.0.0.
  /config/net/ipv4/netmask:
    get:
      tags:
        - /config/net/ipv4/netmask
      summary: Get /config/net/ipv4/netmask
      operationId: configNetIpv4NetmaskGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetIpv4Netmask'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/net/ipv4/netmask
      summary: Replace /config/net/ipv4/netmask
      operationId: configNetIpv4NetmaskPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetIpv4Netmask'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/ipv4/netmask
      summary: Update /config/net/ipv4/netmask
      operationId: configNetIpv4NetmaskPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetIpv4Netmask'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/ipv4/netmask
      summary: Delete /config/net/ipv4/netmask
      operationId: configNetIpv4NetmaskDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to 0.0.0.0.
  /config/net/ipv4/network:
    get:
      tags:
        - /config/net/ipv4/network
      summary: Get /config/net/ipv4/network
      operationId: configNetIpv4NetworkGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetIpv4Network'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/net/ipv4/network
      summary: Replace /config/net/ipv4/network
      operationId: configNetIpv4NetworkPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetIpv4Network'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/ipv4/network
      summary: Update /config/net/ipv4/network
      operationId: configNetIpv4NetworkPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetIpv4Network'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/ipv4/network
      summary: Delete /config/net/ipv4/network
      operationId: configNetIpv4NetworkDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to 0.0.0.0.
  /config/net/ipv4/gateway:
    get:
      tags:
        - /config/net/ipv4/gateway
      summary: Get /config/net/ipv4/gateway
      operationId: configNetIpv4GatewayGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetIpv4Gateway'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/net/ipv4/gateway
      summary: Replace /config/net/ipv4/gateway
      operationId: configNetIpv4GatewayPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetIpv4Gateway'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/ipv4/gateway
      summary: Update /config/net/ipv4/gateway
      operationId: configNetIpv4GatewayPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetIpv4Gateway'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/ipv4/gateway
      summary: Delete /config/net/ipv4/gateway
      operationId: configNetIpv4GatewayDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to 0.0.0.0.
  /config/net/nameserver:
    get:
      tags:
        - /config/net/nameserver
      summary: Get /config/net/nameserver
      operationId: configNetNameserverGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetNameserver'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/net/nameserver
      summary: Replace /config/net/nameserver
      operationId: configNetNameserverPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetNameserver'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/nameserver
      summary: Update /config/net/nameserver
      operationId: configNetNameserverPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetNameserver'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/nameserver
      summary: Delete /config/net/nameserver
      operationId: configNetNameserverDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/net/nameserver/server:
    get:
      tags:
        - /config/net/nameserver/server
      summary: Get /config/net/nameserver/server
      operationId: configNetNameserverServerGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetNameserverServer'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/net/nameserver/server
      summary: Replace /config/net/nameserver/server
      operationId: configNetNameserverServerPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetNameserverServer'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/nameserver/server
      summary: Update /config/net/nameserver/server
      operationId: configNetNameserverServerPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetNameserverServer'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/nameserver/server
      summary: Delete /config/net/nameserver/server
      operationId: configNetNameserverServerDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty array.
  /config/net/nameserver/server/{idx}:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a DNS server.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /config/net/nameserver/server/{idx}
      summary: Get /config/net/nameserver/server/{idx}
      operationId: configNetNameserverServerItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetNameserverServerItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/net/nameserver/server/{idx}
      summary: Replace /config/net/nameserver/server/{idx}
      operationId: configNetNameserverServerItemPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetNameserverServerItem'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/nameserver/server/{idx}
      summary: Update /config/net/nameserver/server/{idx}
      operationId: configNetNameserverServerItemPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetNameserverServerItem'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/nameserver/server/{idx}
      summary: Delete /config/net/nameserver/server/{idx}
      operationId: configNetNameserverServerItemDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Remove this name server.
  /config/net/ntp:
    get:
      tags:
        - /config/net/ntp
      summary: Get /config/net/ntp
      operationId: configNetNtpGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetNtp'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/net/ntp
      summary: Replace /config/net/ntp
      operationId: configNetNtpPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetNtp'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/ntp
      summary: Update /config/net/ntp
      operationId: configNetNtpPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetNtp'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/ntp
      summary: Delete /config/net/ntp
      operationId: configNetNtpDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/net/ntp/server:
    get:
      tags:
        - /config/net/ntp/server
      summary: Get /config/net/ntp/server
      operationId: configNetNtpServerGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetNtpServer'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/net/ntp/server
      summary: Replace /config/net/ntp/server
      operationId: configNetNtpServerPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetNtpServer'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/ntp/server
      summary: Update /config/net/ntp/server
      operationId: configNetNtpServerPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetNtpServer'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/ntp/server
      summary: Delete /config/net/ntp/server
      operationId: configNetNtpServerDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty array.
  /config/net/ntp/server/{idx}:
    parameters:
      - name: idx
        in: path
        description: |
          The index of an NTP server.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /config/net/ntp/server/{idx}
      summary: Get /config/net/ntp/server/{idx}
      operationId: configNetNtpServerItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetNtpServerItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/net/ntp/server/{idx}
      summary: Replace /config/net/ntp/server/{idx}
      operationId: configNetNtpServerItemPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetNtpServerItem'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/ntp/server/{idx}
      summary: Update /config/net/ntp/server/{idx}
      operationId: configNetNtpServerItemPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetNtpServerItem'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/ntp/server/{idx}
      summary: Delete /config/net/ntp/server/{idx}
      operationId: configNetNtpServerItemDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Remove this NTP server.
  /config/net/option:
    get:
      tags:
        - /config/net/option
      summary: Get /config/net/option
      operationId: configNetOptionGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetOption'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/net/option
      summary: Replace /config/net/option
      operationId: configNetOptionPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetOption'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/option
      summary: Update /config/net/option
      operationId: configNetOptionPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetOption'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/option
      summary: Delete /config/net/option
      operationId: configNetOptionDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/net/option/secure_only:
    get:
      tags:
        - /config/net/option/secure_only
      summary: Get /config/net/option/secure_only
      operationId: configNetOptionSecureOnlyGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetOptionSecureOnly'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/net/option/secure_only
      summary: Replace /config/net/option/secure_only
      operationId: configNetOptionSecureOnlyPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetOptionSecureOnly'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/option/secure_only
      summary: Update /config/net/option/secure_only
      operationId: configNetOptionSecureOnlyPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetOptionSecureOnly'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/option/secure_only
      summary: Delete /config/net/option/secure_only
      operationId: configNetOptionSecureOnlyDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to `false`.
  /config/net/proxy:
    get:
      tags:
        - /config/net/proxy
      summary: Get /config/net/proxy
      operationId: configNetProxyGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetProxy'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/net/proxy
      summary: Replace /config/net/proxy
      operationId: configNetProxyPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetProxy'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/proxy
      summary: Update /config/net/proxy
      operationId: configNetProxyPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetProxy'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/proxy
      summary: Delete /config/net/proxy
      operationId: configNetProxyDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/net/proxy/enable:
    get:
      tags:
        - /config/net/proxy/enable
      summary: Get /config/net/proxy/enable
      operationId: configNetProxyEnableGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetProxyEnable'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/net/proxy/enable
      summary: Replace /config/net/proxy/enable
      operationId: configNetProxyEnablePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetProxyEnable'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/proxy/enable
      summary: Update /config/net/proxy/enable
      operationId: configNetProxyEnablePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetProxyEnable'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/proxy/enable
      summary: Delete /config/net/proxy/enable
      operationId: configNetProxyEnableDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to `false`.
  /config/net/proxy/server:
    get:
      tags:
        - /config/net/proxy/server
      summary: Get /config/net/proxy/server
      operationId: configNetProxyServerGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetProxyServer'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/net/proxy/server
      summary: Replace /config/net/proxy/server
      operationId: configNetProxyServerPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetProxyServer'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/proxy/server
      summary: Update /config/net/proxy/server
      operationId: configNetProxyServerPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetProxyServer'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/proxy/server
      summary: Delete /config/net/proxy/server
      operationId: configNetProxyServerDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/net/ptp:
    get:
      tags:
        - /config/net/ptp
      summary: Get /config/net/ptp
      operationId: configNetPtpGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetPtp'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/net/ptp
      summary: Replace /config/net/ptp
      operationId: configNetPtpPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetPtp'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/ptp
      summary: Update /config/net/ptp
      operationId: configNetPtpPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetPtp'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/ptp
      summary: Delete /config/net/ptp
      operationId: configNetPtpDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/net/ptp/client_only:
    get:
      tags:
        - /config/net/ptp/client_only
      summary: Get /config/net/ptp/client_only
      operationId: configNetPtpClientOnlyGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetPtpClientOnly'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/net/ptp/client_only
      summary: Replace /config/net/ptp/client_only
      operationId: configNetPtpClientOnlyPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetPtpClientOnly'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/ptp/client_only
      summary: Update /config/net/ptp/client_only
      operationId: configNetPtpClientOnlyPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetPtpClientOnly'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/ptp/client_only
      summary: Delete /config/net/ptp/client_only
      operationId: configNetPtpClientOnlyDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to `false`.
  /config/net/ptp/interface:
    get:
      tags:
        - /config/net/ptp/interface
      summary: Get /config/net/ptp/interface
      operationId: configNetPtpInterfaceGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetPtpInterface'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/net/ptp/interface
      summary: Replace /config/net/ptp/interface
      operationId: configNetPtpInterfacePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetPtpInterface'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/ptp/interface
      summary: Update /config/net/ptp/interface
      operationId: configNetPtpInterfacePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetPtpInterface'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/ptp/interface
      summary: Delete /config/net/ptp/interface
      operationId: configNetPtpInterfaceDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to empty (PTP disabled).
  /config/net/ptp/interface/{if}:
    parameters:
      - name: if
        in: path
        description: |
          The name of a network interface to use for PTP.
        required: true
        schema:
          type: string
          example: eth0
    get:
      tags:
        - /config/net/ptp/interface/{if}
      summary: Get /config/net/ptp/interface/{if}
      operationId: configNetPtpInterfaceIfGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetPtpInterfaceIf'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/net/ptp/interface/{if}
      summary: Replace /config/net/ptp/interface/{if}
      operationId: configNetPtpInterfaceIfPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetPtpInterfaceIf'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/ptp/interface/{if}
      summary: Update /config/net/ptp/interface/{if}
      operationId: configNetPtpInterfaceIfPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetPtpInterfaceIf'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/ptp/interface/{if}
      summary: Delete /config/net/ptp/interface/{if}
      operationId: configNetPtpInterfaceIfDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Remove this interface.
  /config/net/ptp/interface/{if}/transport:
    parameters:
      - name: if
        in: path
        description: |
          The name of a network interface to use for PTP.
        required: true
        schema:
          type: string
          example: eth0
    get:
      tags:
        - /config/net/ptp/interface/{if}/transport
      summary: Get /config/net/ptp/interface/{if}/transport
      operationId: configNetPtpInterfaceIfTransportGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetPtpInterfaceIfTransport'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/net/ptp/interface/{if}/transport
      summary: Replace /config/net/ptp/interface/{if}/transport
      operationId: configNetPtpInterfaceIfTransportPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetPtpInterfaceIfTransport'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/ptp/interface/{if}/transport
      summary: Update /config/net/ptp/interface/{if}/transport
      operationId: configNetPtpInterfaceIfTransportPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetPtpInterfaceIfTransport'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/ptp/interface/{if}/transport
      summary: Delete /config/net/ptp/interface/{if}/transport
      operationId: configNetPtpInterfaceIfTransportDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to `UDPv4`.
  /config/net/ptp/interface/{if}/udp_ttl:
    parameters:
      - name: if
        in: path
        description: |
          The name of a network interface to use for PTP.
        required: true
        schema:
          type: string
          example: eth0
    get:
      tags:
        - /config/net/ptp/interface/{if}/udp_ttl
      summary: Get /config/net/ptp/interface/{if}/udp_ttl
      operationId: configNetPtpInterfaceIfUdpTtlGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configNetPtpInterfaceIfUdpTtl'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/net/ptp/interface/{if}/udp_ttl
      summary: Replace /config/net/ptp/interface/{if}/udp_ttl
      operationId: configNetPtpInterfaceIfUdpTtlPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetPtpInterfaceIfUdpTtl'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/net/ptp/interface/{if}/udp_ttl
      summary: Update /config/net/ptp/interface/{if}/udp_ttl
      operationId: configNetPtpInterfaceIfUdpTtlPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configNetPtpInterfaceIfUdpTtl'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/net/ptp/interface/{if}/udp_ttl
      summary: Delete /config/net/ptp/interface/{if}/udp_ttl
      operationId: configNetPtpInterfaceIfUdpTtlDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to 1.
  /config/push:
    get:
      tags:
        - /config/push
      summary: Get /config/push
      operationId: configPushGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configPush'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/push
      summary: Replace /config/push
      operationId: configPushPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configPush'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/push
      summary: Update /config/push
      operationId: configPushPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configPush'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/push
      summary: Delete /config/push
      operationId: configPushDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/push/interval:
    get:
      tags:
        - /config/push/interval
      summary: Get /config/push/interval
      operationId: configPushIntervalGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configPushInterval'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/push/interval
      summary: Replace /config/push/interval
      operationId: configPushIntervalPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configPushInterval'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/push/interval
      summary: Update /config/push/interval
      operationId: configPushIntervalPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configPushInterval'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/push/interval
      summary: Delete /config/push/interval
      operationId: configPushIntervalDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to 60.
  /config/push/options:
    get:
      tags:
        - /config/push/options
      summary: Get /config/push/options
      operationId: configPushOptionsGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configPushOptions'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/push/options
      summary: Replace /config/push/options
      operationId: configPushOptionsPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configPushOptions'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/push/options
      summary: Update /config/push/options
      operationId: configPushOptionsPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configPushOptions'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/push/options
      summary: Delete /config/push/options
      operationId: configPushOptionsDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/push/password:
    put:
      tags:
        - /config/push/password
      summary: Replace /config/push/password
      operationId: configPushPasswordPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configPushPassword'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/push/password
      summary: Update /config/push/password
      operationId: configPushPasswordPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configPushPassword'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/push/password
      summary: Delete /config/push/password
      operationId: configPushPasswordDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/push/service:
    get:
      tags:
        - /config/push/service
      summary: Get /config/push/service
      operationId: configPushServiceGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configPushService'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    delete:
      tags:
        - /config/push/service
      summary: Delete /config/push/service
      operationId: configPushServiceDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/push/uri:
    get:
      tags:
        - /config/push/uri
      summary: Get /config/push/uri
      operationId: configPushUriGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configPushUri'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/push/uri
      summary: Replace /config/push/uri
      operationId: configPushUriPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configPushUri'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/push/uri
      summary: Update /config/push/uri
      operationId: configPushUriPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configPushUri'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/push/uri
      summary: Delete /config/push/uri
      operationId: configPushUriDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/push/user:
    get:
      tags:
        - /config/push/user
      summary: Get /config/push/user
      operationId: configPushUserGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configPushUser'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/push/user
      summary: Replace /config/push/user
      operationId: configPushUserPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configPushUser'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/push/user
      summary: Update /config/push/user
      operationId: configPushUserPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configPushUser'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/push/user
      summary: Delete /config/push/user
      operationId: configPushUserDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/remote:
    get:
      tags:
        - /config/remote
      summary: Get /config/remote
      operationId: configRemoteGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configRemote'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/remote
      summary: Replace /config/remote
      operationId: configRemotePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRemote'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/remote
      summary: Update /config/remote
      operationId: configRemotePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRemote'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/remote
      summary: Delete /config/remote
      operationId: configRemoteDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Deletes all remote device configurations and the physical registers
        using them.
  /config/remote/{name}:
    parameters:
      - name: name
        in: path
        description: |
          The name of a remote device.  It must consist of printable
          characters only.  The name `local` is reserved for internal use
          and may not appear here.
        required: true
        schema:
          type: string
          example: PRM3
    get:
      tags:
        - /config/remote/{name}
      summary: Get /config/remote/{name}
      operationId: configRemoteNameGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configRemoteName'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/remote/{name}
      summary: Replace /config/remote/{name}
      operationId: configRemoteNamePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRemoteName'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/remote/{name}
      summary: Update /config/remote/{name}
      operationId: configRemoteNamePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRemoteName'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/remote/{name}
      summary: Delete /config/remote/{name}
      operationId: configRemoteNameDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Delete the remote device configuration and the physical registers
        associated with it.
  /config/remote/{name}/address:
    parameters:
      - name: name
        in: path
        description: |
          The name of a remote device.  It must consist of printable
          characters only.  The name `local` is reserved for internal use
          and may not appear here.
        required: true
        schema:
          type: string
          example: PRM3
    get:
      tags:
        - /config/remote/{name}/address
      summary: Get /config/remote/{name}/address
      operationId: configRemoteNameAddressGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configRemoteNameAddress'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/remote/{name}/address
      summary: Replace /config/remote/{name}/address
      operationId: configRemoteNameAddressPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRemoteNameAddress'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/remote/{name}/address
      summary: Update /config/remote/{name}/address
      operationId: configRemoteNameAddressPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRemoteNameAddress'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/remote/{name}/address
      summary: Delete /config/remote/{name}/address
      operationId: configRemoteNameAddressDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/remote/{name}/link_type:
    parameters:
      - name: name
        in: path
        description: |
          The name of a remote device.  It must consist of printable
          characters only.  The name `local` is reserved for internal use
          and may not appear here.
        required: true
        schema:
          type: string
          example: PRM3
    get:
      tags:
        - /config/remote/{name}/link_type
      summary: Get /config/remote/{name}/link_type
      operationId: configRemoteNameLinkTypeGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configRemoteNameLinkType'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/remote/{name}/link_type
      summary: Replace /config/remote/{name}/link_type
      operationId: configRemoteNameLinkTypePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRemoteNameLinkType'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/remote/{name}/link_type
      summary: Update /config/remote/{name}/link_type
      operationId: configRemoteNameLinkTypePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRemoteNameLinkType'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/remote/{name}/link_type
      summary: Delete /config/remote/{name}/link_type
      operationId: configRemoteNameLinkTypeDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Clears this value to `tcp`.
  /config/register:
    get:
      tags:
        - /config/register
      summary: Get /config/register
      operationId: configRegisterGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configRegister'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/register
      summary: Replace /config/register
      operationId: configRegisterPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegister'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/register
      summary: Update /config/register
      operationId: configRegisterPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegister'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/register
      summary: Delete /config/register
      operationId: configRegisterDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/register/physical:
    get:
      tags:
        - /config/register/physical
      summary: Get /config/register/physical
      operationId: configRegisterPhysicalGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configRegisterPhysical'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/register/physical
      summary: Replace /config/register/physical
      operationId: configRegisterPhysicalPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterPhysical'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/register/physical
      summary: Update /config/register/physical
      operationId: configRegisterPhysicalPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterPhysical'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/register/physical
      summary: Delete /config/register/physical
      operationId: configRegisterPhysicalDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/register/physical/{reg}:
    parameters:
      - name: reg
        in: path
        description: >
          The [name of a
          register](/webapi/4.6/openapi/glossary#section/Physical-Register-Names).
        required: true
        schema:
          type: string
    get:
      tags:
        - /config/register/physical/{reg}
      summary: Get /config/register/physical/{reg}
      operationId: configRegisterPhysicalRegGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configRegisterPhysicalReg'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/register/physical/{reg}
      summary: Replace /config/register/physical/{reg}
      operationId: configRegisterPhysicalRegPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterPhysicalReg'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/register/physical/{reg}
      summary: Update /config/register/physical/{reg}
      operationId: configRegisterPhysicalRegPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterPhysicalReg'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/register/physical/{reg}
      summary: Delete /config/register/physical/{reg}
      operationId: configRegisterPhysicalRegDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/register/physical/{reg}/dev:
    parameters:
      - name: reg
        in: path
        description: >
          The [name of a
          register](/webapi/4.6/openapi/glossary#section/Physical-Register-Names).
        required: true
        schema:
          type: string
    get:
      tags:
        - /config/register/physical/{reg}/dev
      summary: Get /config/register/physical/{reg}/dev
      operationId: configRegisterPhysicalRegDevGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configRegisterPhysicalRegDev'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/register/physical/{reg}/dev
      summary: Replace /config/register/physical/{reg}/dev
      operationId: configRegisterPhysicalRegDevPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterPhysicalRegDev'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/register/physical/{reg}/dev
      summary: Update /config/register/physical/{reg}/dev
      operationId: configRegisterPhysicalRegDevPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterPhysicalRegDev'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/register/physical/{reg}/dev
      summary: Delete /config/register/physical/{reg}/dev
      operationId: configRegisterPhysicalRegDevDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to `local`.
  /config/register/physical/{reg}/did:
    parameters:
      - name: reg
        in: path
        description: >
          The [name of a
          register](/webapi/4.6/openapi/glossary#section/Physical-Register-Names).
        required: true
        schema:
          type: string
    get:
      tags:
        - /config/register/physical/{reg}/did
      summary: Get /config/register/physical/{reg}/did
      operationId: configRegisterPhysicalRegDidGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configRegisterPhysicalRegDid'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/register/physical/{reg}/did
      summary: Replace /config/register/physical/{reg}/did
      operationId: configRegisterPhysicalRegDidPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterPhysicalRegDid'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/register/physical/{reg}/did
      summary: Update /config/register/physical/{reg}/did
      operationId: configRegisterPhysicalRegDidPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterPhysicalRegDid'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/register/physical/{reg}/did
      summary: Delete /config/register/physical/{reg}/did
      operationId: configRegisterPhysicalRegDidDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to 0.
  /config/register/physical/{reg}/type:
    parameters:
      - name: reg
        in: path
        description: >
          The [name of a
          register](/webapi/4.6/openapi/glossary#section/Physical-Register-Names).
        required: true
        schema:
          type: string
    get:
      tags:
        - /config/register/physical/{reg}/type
      summary: Get /config/register/physical/{reg}/type
      operationId: configRegisterPhysicalRegTypeGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configRegisterPhysicalRegType'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/register/physical/{reg}/type
      summary: Replace /config/register/physical/{reg}/type
      operationId: configRegisterPhysicalRegTypePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterPhysicalRegType'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/register/physical/{reg}/type
      summary: Update /config/register/physical/{reg}/type
      operationId: configRegisterPhysicalRegTypePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterPhysicalRegType'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/register/physical/{reg}/type
      summary: Delete /config/register/physical/{reg}/type
      operationId: configRegisterPhysicalRegTypeDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/register/physical/{reg}/value:
    parameters:
      - name: reg
        in: path
        description: >
          The [name of a
          register](/webapi/4.6/openapi/glossary#section/Physical-Register-Names).
        required: true
        schema:
          type: string
    get:
      tags:
        - /config/register/physical/{reg}/value
      summary: Get /config/register/physical/{reg}/value
      operationId: configRegisterPhysicalRegValueGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configRegisterPhysicalRegValue'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/register/physical/{reg}/value
      summary: Replace /config/register/physical/{reg}/value
      operationId: configRegisterPhysicalRegValuePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterPhysicalRegValue'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/register/physical/{reg}/value
      summary: Update /config/register/physical/{reg}/value
      operationId: configRegisterPhysicalRegValuePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterPhysicalRegValue'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/register/physical/{reg}/value
      summary: Delete /config/register/physical/{reg}/value
      operationId: configRegisterPhysicalRegValueDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/register/virtual:
    get:
      tags:
        - /config/register/virtual
      summary: Get /config/register/virtual
      operationId: configRegisterVirtualGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configRegisterVirtual'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/register/virtual
      summary: Replace /config/register/virtual
      operationId: configRegisterVirtualPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterVirtual'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/register/virtual
      summary: Update /config/register/virtual
      operationId: configRegisterVirtualPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterVirtual'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/register/virtual
      summary: Delete /config/register/virtual
      operationId: configRegisterVirtualDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/register/virtual/{reg}:
    parameters:
      - name: reg
        in: path
        description: |
          The name of a virtual register.  May not be empty, contain
          commas (`,`), and may not consist entirely of digits. Virtual
          register names may contain a single dot (`.`) between a prefix
          and a suffix.  The prefix is called the [view
          name](/webapi/4.6/openapi/glossary#section/View-Names).
        required: true
        schema:
          type: string
    get:
      tags:
        - /config/register/virtual/{reg}
      summary: Get /config/register/virtual/{reg}
      operationId: configRegisterVirtualRegGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configRegisterVirtualReg'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/register/virtual/{reg}
      summary: Replace /config/register/virtual/{reg}
      operationId: configRegisterVirtualRegPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterVirtualReg'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/register/virtual/{reg}
      summary: Update /config/register/virtual/{reg}
      operationId: configRegisterVirtualRegPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterVirtualReg'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/register/virtual/{reg}
      summary: Delete /config/register/virtual/{reg}
      operationId: configRegisterVirtualRegDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Remove this virtual register.
  /config/register/virtual/{reg}/value:
    parameters:
      - name: reg
        in: path
        description: |
          The name of a virtual register.  May not be empty, contain
          commas (`,`), and may not consist entirely of digits. Virtual
          register names may contain a single dot (`.`) between a prefix
          and a suffix.  The prefix is called the [view
          name](/webapi/4.6/openapi/glossary#section/View-Names).
        required: true
        schema:
          type: string
    get:
      tags:
        - /config/register/virtual/{reg}/value
      summary: Get /config/register/virtual/{reg}/value
      operationId: configRegisterVirtualRegValueGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configRegisterVirtualRegValue'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/register/virtual/{reg}/value
      summary: Replace /config/register/virtual/{reg}/value
      operationId: configRegisterVirtualRegValuePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterVirtualRegValue'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/register/virtual/{reg}/value
      summary: Update /config/register/virtual/{reg}/value
      operationId: configRegisterVirtualRegValuePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterVirtualRegValue'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/register/virtual/{reg}/value
      summary: Delete /config/register/virtual/{reg}/value
      operationId: configRegisterVirtualRegValueDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty array.
  /config/register/virtual/{reg}/value/{idx}:
    parameters:
      - name: reg
        in: path
        description: |
          The name of a virtual register.  May not be empty, contain
          commas (`,`), and may not consist entirely of digits. Virtual
          register names may contain a single dot (`.`) between a prefix
          and a suffix.  The prefix is called the [view
          name](/webapi/4.6/openapi/glossary#section/View-Names).
        required: true
        schema:
          type: string
      - name: idx
        in: path
        description: |
          The index of a virtual register addend.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /config/register/virtual/{reg}/value/{idx}
      summary: Get /config/register/virtual/{reg}/value/{idx}
      operationId: configRegisterVirtualRegValueItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configRegisterVirtualRegValueItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/register/virtual/{reg}/value/{idx}
      summary: Replace /config/register/virtual/{reg}/value/{idx}
      operationId: configRegisterVirtualRegValueItemPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterVirtualRegValueItem'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/register/virtual/{reg}/value/{idx}
      summary: Update /config/register/virtual/{reg}/value/{idx}
      operationId: configRegisterVirtualRegValueItemPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterVirtualRegValueItem'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/register/virtual/{reg}/value/{idx}
      summary: Delete /config/register/virtual/{reg}/value/{idx}
      operationId: configRegisterVirtualRegValueItemDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/register/virtual/{reg}/value/{idx}/op:
    parameters:
      - name: reg
        in: path
        description: |
          The name of a virtual register.  May not be empty, contain
          commas (`,`), and may not consist entirely of digits. Virtual
          register names may contain a single dot (`.`) between a prefix
          and a suffix.  The prefix is called the [view
          name](/webapi/4.6/openapi/glossary#section/View-Names).
        required: true
        schema:
          type: string
      - name: idx
        in: path
        description: |
          The index of a virtual register addend.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /config/register/virtual/{reg}/value/{idx}/op
      summary: Get /config/register/virtual/{reg}/value/{idx}/op
      operationId: configRegisterVirtualRegValueItemOpGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configRegisterVirtualRegValueItemOp'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/register/virtual/{reg}/value/{idx}/op
      summary: Replace /config/register/virtual/{reg}/value/{idx}/op
      operationId: configRegisterVirtualRegValueItemOpPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterVirtualRegValueItemOp'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/register/virtual/{reg}/value/{idx}/op
      summary: Update /config/register/virtual/{reg}/value/{idx}/op
      operationId: configRegisterVirtualRegValueItemOpPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterVirtualRegValueItemOp'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/register/virtual/{reg}/value/{idx}/op
      summary: Delete /config/register/virtual/{reg}/value/{idx}/op
      operationId: configRegisterVirtualRegValueItemOpDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to `+`.
  /config/register/virtual/{reg}/value/{idx}/register:
    parameters:
      - name: reg
        in: path
        description: |
          The name of a virtual register.  May not be empty, contain
          commas (`,`), and may not consist entirely of digits. Virtual
          register names may contain a single dot (`.`) between a prefix
          and a suffix.  The prefix is called the [view
          name](/webapi/4.6/openapi/glossary#section/View-Names).
        required: true
        schema:
          type: string
      - name: idx
        in: path
        description: |
          The index of a virtual register addend.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /config/register/virtual/{reg}/value/{idx}/register
      summary: Get /config/register/virtual/{reg}/value/{idx}/register
      operationId: configRegisterVirtualRegValueItemRegisterGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: >-
                      #/components/schemas/configRegisterVirtualRegValueItemRegister
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/register/virtual/{reg}/value/{idx}/register
      summary: Replace /config/register/virtual/{reg}/value/{idx}/register
      operationId: configRegisterVirtualRegValueItemRegisterPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterVirtualRegValueItemRegister'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/register/virtual/{reg}/value/{idx}/register
      summary: Update /config/register/virtual/{reg}/value/{idx}/register
      operationId: configRegisterVirtualRegValueItemRegisterPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configRegisterVirtualRegValueItemRegister'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/register/virtual/{reg}/value/{idx}/register
      summary: Delete /config/register/virtual/{reg}/value/{idx}/register
      operationId: configRegisterVirtualRegValueItemRegisterDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/time:
    get:
      tags:
        - /config/time
      summary: Get /config/time
      operationId: configTimeGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configTime'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/time
      summary: Replace /config/time
      operationId: configTimePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configTime'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/time
      summary: Update /config/time
      operationId: configTimePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configTime'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/time
      summary: Delete /config/time
      operationId: configTimeDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/time/zone:
    get:
      tags:
        - /config/time/zone
      summary: Get /config/time/zone
      operationId: configTimeZoneGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configTimeZone'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/time/zone
      summary: Replace /config/time/zone
      operationId: configTimeZonePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configTimeZone'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/time/zone
      summary: Update /config/time/zone
      operationId: configTimeZonePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configTimeZone'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/time/zone
      summary: Delete /config/time/zone
      operationId: configTimeZoneDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to
        [`UTC`](https://en.wikipedia.org/wiki/Coordinated_Universal_Time).
  /config/user:
    get:
      tags:
        - /config/user
      summary: Get /config/user
      operationId: configUserGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configUser'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/user
      summary: Replace /config/user
      operationId: configUserPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configUser'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/user
      summary: Update /config/user
      operationId: configUserPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configUser'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/user
      summary: Delete /config/user
      operationId: configUserDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Delete all user accounts.
  /config/user/{name}:
    parameters:
      - name: name
        in: path
        description: |
          The name of a user.  Must consist of alpha-numeric characters or
          underscores (`_`).
        required: true
        schema:
          type: string
    get:
      tags:
        - /config/user/{name}
      summary: Get /config/user/{name}
      operationId: configUserNameGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configUserName'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/user/{name}
      summary: Replace /config/user/{name}
      operationId: configUserNamePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configUserName'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/user/{name}
      summary: Update /config/user/{name}
      operationId: configUserNamePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configUserName'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/user/{name}
      summary: Delete /config/user/{name}
      operationId: configUserNameDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Delete this user account.
  /config/user/{name}/priv:
    parameters:
      - name: name
        in: path
        description: |
          The name of a user.  Must consist of alpha-numeric characters or
          underscores (`_`).
        required: true
        schema:
          type: string
    get:
      tags:
        - /config/user/{name}/priv
      summary: Get /config/user/{name}/priv
      operationId: configUserNamePrivGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configUserNamePriv'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/user/{name}/priv
      summary: Replace /config/user/{name}/priv
      operationId: configUserNamePrivPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configUserNamePriv'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/user/{name}/priv
      summary: Update /config/user/{name}/priv
      operationId: configUserNamePrivPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configUserNamePriv'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/user/{name}/priv
      summary: Delete /config/user/{name}/priv
      operationId: configUserNamePrivDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty array.
  /config/user/{name}/priv/{idx}:
    parameters:
      - name: name
        in: path
        description: |
          The name of a user.  Must consist of alpha-numeric characters or
          underscores (`_`).
        required: true
        schema:
          type: string
      - name: idx
        in: path
        description: |
          The index of a privilege.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /config/user/{name}/priv/{idx}
      summary: Get /config/user/{name}/priv/{idx}
      operationId: configUserNamePrivItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configUserNamePrivItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/user/{name}/priv/{idx}
      summary: Replace /config/user/{name}/priv/{idx}
      operationId: configUserNamePrivItemPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configUserNamePrivItem'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/user/{name}/priv/{idx}
      summary: Update /config/user/{name}/priv/{idx}
      operationId: configUserNamePrivItemPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configUserNamePrivItem'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/user/{name}/priv/{idx}
      summary: Delete /config/user/{name}/priv/{idx}
      operationId: configUserNamePrivItemDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Remove this privilege.
  /config/user/{name}/hash:
    parameters:
      - name: name
        in: path
        description: |
          The name of a user.  Must consist of alpha-numeric characters or
          underscores (`_`).
        required: true
        schema:
          type: string
    put:
      tags:
        - /config/user/{name}/hash
      summary: Replace /config/user/{name}/hash
      operationId: configUserNameHashPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configUserNameHash'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/user/{name}/hash
      summary: Update /config/user/{name}/hash
      operationId: configUserNameHashPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configUserNameHash'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/user/{name}/hash
      summary: Delete /config/user/{name}/hash
      operationId: configUserNameHashDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Delete this user account.
  /config/var:
    get:
      tags:
        - /config/var
      summary: Get /config/var
      operationId: configVarGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configVar'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/var
      summary: Replace /config/var
      operationId: configVarPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configVar'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/var
      summary: Update /config/var
      operationId: configVarPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configVar'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/var
      summary: Delete /config/var
      operationId: configVarDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Delete all meter variables.
  /config/var/{section}:
    parameters:
      - name: section
        in: path
        description: |
          The name of the section to access.
        required: true
        schema:
          type: string
          pattern: ^[a-zA-Z0-9_%-]+$
        example: global
    get:
      tags:
        - /config/var/{section}
      summary: Get /config/var/{section}
      operationId: configVarSectionGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configVarSection'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/var/{section}
      summary: Replace /config/var/{section}
      operationId: configVarSectionPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configVarSection'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/var/{section}
      summary: Update /config/var/{section}
      operationId: configVarSectionPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configVarSection'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/var/{section}
      summary: Delete /config/var/{section}
      operationId: configVarSectionDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Delete all meter variables in the named section.
  /config/var/{section}/{var}:
    parameters:
      - name: section
        in: path
        description: |
          The name of the section to access.
        required: true
        schema:
          type: string
          pattern: ^[a-zA-Z0-9_%-]+$
        example: global
      - name: var
        in: path
        description: |
          The name of a variable.
        required: true
        schema:
          type: string
          pattern: ^[a-zA-Z0-9_%.-]+$
        example: billing.start_day
    get:
      tags:
        - /config/var/{section}/{var}
      summary: Get /config/var/{section}/{var}
      operationId: configVarSectionVarGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configVarSectionVar'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/var/{section}/{var}
      summary: Replace /config/var/{section}/{var}
      operationId: configVarSectionVarPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configVarSectionVar'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/var/{section}/{var}
      summary: Update /config/var/{section}/{var}
      operationId: configVarSectionVarPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configVarSectionVar'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/var/{section}/{var}
      summary: Delete /config/var/{section}/{var}
      operationId: configVarSectionVarDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Delete the named meter variable.
  /config/alert:
    get:
      tags:
        - /config/alert
      summary: Get /config/alert
      operationId: configAlertGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlert'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/alert
      summary: Replace /config/alert
      operationId: configAlertPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlert'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert
      summary: Update /config/alert
      operationId: configAlertPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlert'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert
      summary: Delete /config/alert
      operationId: configAlertDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/alert/custom:
    get:
      tags:
        - /config/alert/custom
      summary: Get /config/alert/custom
      operationId: configAlertCustomGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertCustom'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/alert/custom
      summary: Replace /config/alert/custom
      operationId: configAlertCustomPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertCustom'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/custom
      summary: Update /config/alert/custom
      operationId: configAlertCustomPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertCustom'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/custom
      summary: Delete /config/alert/custom
      operationId: configAlertCustomDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty array.
  /config/alert/custom/{idx}:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a custom alert.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /config/alert/custom/{idx}
      summary: Get /config/alert/custom/{idx}
      operationId: configAlertCustomItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertCustomItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/alert/custom/{idx}
      summary: Replace /config/alert/custom/{idx}
      operationId: configAlertCustomItemPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertCustomItem'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/custom/{idx}
      summary: Update /config/alert/custom/{idx}
      operationId: configAlertCustomItemPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertCustomItem'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/custom/{idx}
      summary: Delete /config/alert/custom/{idx}
      operationId: configAlertCustomItemDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Delete this custom alert.
  /config/alert/custom/{idx}/name:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a custom alert.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /config/alert/custom/{idx}/name
      summary: Get /config/alert/custom/{idx}/name
      operationId: configAlertCustomItemNameGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertCustomItemName'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/alert/custom/{idx}/name
      summary: Replace /config/alert/custom/{idx}/name
      operationId: configAlertCustomItemNamePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertCustomItemName'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/custom/{idx}/name
      summary: Update /config/alert/custom/{idx}/name
      operationId: configAlertCustomItemNamePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertCustomItemName'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/custom/{idx}/name
      summary: Delete /config/alert/custom/{idx}/name
      operationId: configAlertCustomItemNameDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/alert/custom/{idx}/detail:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a custom alert.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /config/alert/custom/{idx}/detail
      summary: Get /config/alert/custom/{idx}/detail
      operationId: configAlertCustomItemDetailGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertCustomItemDetail'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/alert/custom/{idx}/detail
      summary: Replace /config/alert/custom/{idx}/detail
      operationId: configAlertCustomItemDetailPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertCustomItemDetail'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/custom/{idx}/detail
      summary: Update /config/alert/custom/{idx}/detail
      operationId: configAlertCustomItemDetailPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertCustomItemDetail'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/custom/{idx}/detail
      summary: Delete /config/alert/custom/{idx}/detail
      operationId: configAlertCustomItemDetailDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/alert/custom/{idx}/frequency:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a custom alert.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /config/alert/custom/{idx}/frequency
      summary: Get /config/alert/custom/{idx}/frequency
      operationId: configAlertCustomItemFrequencyGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertCustomItemFrequency'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/alert/custom/{idx}/frequency
      summary: Replace /config/alert/custom/{idx}/frequency
      operationId: configAlertCustomItemFrequencyPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertCustomItemFrequency'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/custom/{idx}/frequency
      summary: Update /config/alert/custom/{idx}/frequency
      operationId: configAlertCustomItemFrequencyPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertCustomItemFrequency'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/custom/{idx}/frequency
      summary: Delete /config/alert/custom/{idx}/frequency
      operationId: configAlertCustomItemFrequencyDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to `sec`.
  /config/alert/custom/{idx}/priority:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a custom alert.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /config/alert/custom/{idx}/priority
      summary: Get /config/alert/custom/{idx}/priority
      operationId: configAlertCustomItemPriorityGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertCustomItemPriority'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/alert/custom/{idx}/priority
      summary: Replace /config/alert/custom/{idx}/priority
      operationId: configAlertCustomItemPriorityPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertCustomItemPriority'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/custom/{idx}/priority
      summary: Update /config/alert/custom/{idx}/priority
      operationId: configAlertCustomItemPriorityPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertCustomItemPriority'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/custom/{idx}/priority
      summary: Delete /config/alert/custom/{idx}/priority
      operationId: configAlertCustomItemPriorityDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to 0.
  /config/alert/custom/{idx}/cond:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a custom alert.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /config/alert/custom/{idx}/cond
      summary: Get /config/alert/custom/{idx}/cond
      operationId: configAlertCustomItemCondGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertCustomItemCond'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/alert/custom/{idx}/cond
      summary: Replace /config/alert/custom/{idx}/cond
      operationId: configAlertCustomItemCondPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertCustomItemCond'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/custom/{idx}/cond
      summary: Update /config/alert/custom/{idx}/cond
      operationId: configAlertCustomItemCondPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertCustomItemCond'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/custom/{idx}/cond
      summary: Delete /config/alert/custom/{idx}/cond
      operationId: configAlertCustomItemCondDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to default condition which is always false.
  /config/alert/custom/{idx}/cond/lhs:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a custom alert.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /config/alert/custom/{idx}/cond/lhs
      summary: Get /config/alert/custom/{idx}/cond/lhs
      operationId: configAlertCustomItemCondLhsGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertCustomItemCondLhs'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/alert/custom/{idx}/cond/lhs
      summary: Replace /config/alert/custom/{idx}/cond/lhs
      operationId: configAlertCustomItemCondLhsPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertCustomItemCondLhs'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/custom/{idx}/cond/lhs
      summary: Update /config/alert/custom/{idx}/cond/lhs
      operationId: configAlertCustomItemCondLhsPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertCustomItemCondLhs'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/custom/{idx}/cond/lhs
      summary: Delete /config/alert/custom/{idx}/cond/lhs
      operationId: configAlertCustomItemCondLhsDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/alert/custom/{idx}/cond/op:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a custom alert.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /config/alert/custom/{idx}/cond/op
      summary: Get /config/alert/custom/{idx}/cond/op
      operationId: configAlertCustomItemCondOpGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertCustomItemCondOp'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/alert/custom/{idx}/cond/op
      summary: Replace /config/alert/custom/{idx}/cond/op
      operationId: configAlertCustomItemCondOpPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertCustomItemCondOp'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/custom/{idx}/cond/op
      summary: Update /config/alert/custom/{idx}/cond/op
      operationId: configAlertCustomItemCondOpPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertCustomItemCondOp'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/custom/{idx}/cond/op
      summary: Delete /config/alert/custom/{idx}/cond/op
      operationId: configAlertCustomItemCondOpDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to `<`.
  /config/alert/custom/{idx}/cond/rhs:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a custom alert.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /config/alert/custom/{idx}/cond/rhs
      summary: Get /config/alert/custom/{idx}/cond/rhs
      operationId: configAlertCustomItemCondRhsGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertCustomItemCondRhs'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/alert/custom/{idx}/cond/rhs
      summary: Replace /config/alert/custom/{idx}/cond/rhs
      operationId: configAlertCustomItemCondRhsPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertCustomItemCondRhs'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/custom/{idx}/cond/rhs
      summary: Update /config/alert/custom/{idx}/cond/rhs
      operationId: configAlertCustomItemCondRhsPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertCustomItemCondRhs'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/custom/{idx}/cond/rhs
      summary: Delete /config/alert/custom/{idx}/cond/rhs
      operationId: configAlertCustomItemCondRhsDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/alert/reporter:
    get:
      tags:
        - /config/alert/reporter
      summary: Get /config/alert/reporter
      operationId: configAlertReporterGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertReporter'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/alert/reporter
      summary: Replace /config/alert/reporter
      operationId: configAlertReporterPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporter'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/reporter
      summary: Update /config/alert/reporter
      operationId: configAlertReporterPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporter'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/reporter
      summary: Delete /config/alert/reporter
      operationId: configAlertReporterDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to default (reporting disabled).
  /config/alert/reporter/web:
    get:
      tags:
        - /config/alert/reporter/web
      summary: Get /config/alert/reporter/web
      operationId: configAlertReporterWebGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertReporterWeb'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/alert/reporter/web
      summary: Replace /config/alert/reporter/web
      operationId: configAlertReporterWebPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterWeb'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/reporter/web
      summary: Update /config/alert/reporter/web
      operationId: configAlertReporterWebPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterWeb'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/reporter/web
      summary: Delete /config/alert/reporter/web
      operationId: configAlertReporterWebDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/alert/reporter/web/min-priority:
    get:
      tags:
        - /config/alert/reporter/web/min-priority
      summary: Get /config/alert/reporter/web/min-priority
      operationId: configAlertReporterWebMinPriorityGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertReporterWebMinPriority'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/alert/reporter/web/min-priority
      summary: Replace /config/alert/reporter/web/min-priority
      operationId: configAlertReporterWebMinPriorityPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterWebMinPriority'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/reporter/web/min-priority
      summary: Update /config/alert/reporter/web/min-priority
      operationId: configAlertReporterWebMinPriorityPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterWebMinPriority'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/reporter/web/min-priority
      summary: Delete /config/alert/reporter/web/min-priority
      operationId: configAlertReporterWebMinPriorityDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to 0.
  /config/alert/reporter/web/service:
    get:
      tags:
        - /config/alert/reporter/web/service
      summary: Get /config/alert/reporter/web/service
      operationId: configAlertReporterWebServiceGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertReporterWebService'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/alert/reporter/web/service
      summary: Replace /config/alert/reporter/web/service
      operationId: configAlertReporterWebServicePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterWebService'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/reporter/web/service
      summary: Update /config/alert/reporter/web/service
      operationId: configAlertReporterWebServicePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterWebService'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/reporter/web/service
      summary: Delete /config/alert/reporter/web/service
      operationId: configAlertReporterWebServiceDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/alert/reporter/web/uri:
    get:
      tags:
        - /config/alert/reporter/web/uri
      summary: Get /config/alert/reporter/web/uri
      operationId: configAlertReporterWebUriGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertReporterWebUri'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/alert/reporter/web/uri
      summary: Replace /config/alert/reporter/web/uri
      operationId: configAlertReporterWebUriPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterWebUri'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/reporter/web/uri
      summary: Update /config/alert/reporter/web/uri
      operationId: configAlertReporterWebUriPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterWebUri'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/reporter/web/uri
      summary: Delete /config/alert/reporter/web/uri
      operationId: configAlertReporterWebUriDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/alert/reporter/web/options:
    get:
      tags:
        - /config/alert/reporter/web/options
      summary: Get /config/alert/reporter/web/options
      operationId: configAlertReporterWebOptionsGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertReporterWebOptions'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/alert/reporter/web/options
      summary: Replace /config/alert/reporter/web/options
      operationId: configAlertReporterWebOptionsPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterWebOptions'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/reporter/web/options
      summary: Update /config/alert/reporter/web/options
      operationId: configAlertReporterWebOptionsPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterWebOptions'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/reporter/web/options
      summary: Delete /config/alert/reporter/web/options
      operationId: configAlertReporterWebOptionsDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/alert/reporter/web/user:
    get:
      tags:
        - /config/alert/reporter/web/user
      summary: Get /config/alert/reporter/web/user
      operationId: configAlertReporterWebUserGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertReporterWebUser'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/alert/reporter/web/user
      summary: Replace /config/alert/reporter/web/user
      operationId: configAlertReporterWebUserPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterWebUser'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/reporter/web/user
      summary: Update /config/alert/reporter/web/user
      operationId: configAlertReporterWebUserPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterWebUser'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/reporter/web/user
      summary: Delete /config/alert/reporter/web/user
      operationId: configAlertReporterWebUserDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/alert/reporter/web/password:
    put:
      tags:
        - /config/alert/reporter/web/password
      summary: Replace /config/alert/reporter/web/password
      operationId: configAlertReporterWebPasswordPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterWebPassword'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/reporter/web/password
      summary: Update /config/alert/reporter/web/password
      operationId: configAlertReporterWebPasswordPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterWebPassword'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/reporter/web/password
      summary: Delete /config/alert/reporter/web/password
      operationId: configAlertReporterWebPasswordDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/alert/reporter/mail:
    get:
      tags:
        - /config/alert/reporter/mail
      summary: Get /config/alert/reporter/mail
      operationId: configAlertReporterMailGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertReporterMail'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/alert/reporter/mail
      summary: Replace /config/alert/reporter/mail
      operationId: configAlertReporterMailPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterMail'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/reporter/mail
      summary: Update /config/alert/reporter/mail
      operationId: configAlertReporterMailPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterMail'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/reporter/mail
      summary: Delete /config/alert/reporter/mail
      operationId: configAlertReporterMailDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset to default (email reporting disabled).
  /config/alert/reporter/mail/server:
    get:
      tags:
        - /config/alert/reporter/mail/server
      summary: Get /config/alert/reporter/mail/server
      operationId: configAlertReporterMailServerGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertReporterMailServer'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/alert/reporter/mail/server
      summary: Replace /config/alert/reporter/mail/server
      operationId: configAlertReporterMailServerPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterMailServer'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/reporter/mail/server
      summary: Update /config/alert/reporter/mail/server
      operationId: configAlertReporterMailServerPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterMailServer'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/reporter/mail/server
      summary: Delete /config/alert/reporter/mail/server
      operationId: configAlertReporterMailServerDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/alert/reporter/mail/user:
    get:
      tags:
        - /config/alert/reporter/mail/user
      summary: Get /config/alert/reporter/mail/user
      operationId: configAlertReporterMailUserGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertReporterMailUser'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/alert/reporter/mail/user
      summary: Replace /config/alert/reporter/mail/user
      operationId: configAlertReporterMailUserPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterMailUser'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/reporter/mail/user
      summary: Update /config/alert/reporter/mail/user
      operationId: configAlertReporterMailUserPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterMailUser'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/reporter/mail/user
      summary: Delete /config/alert/reporter/mail/user
      operationId: configAlertReporterMailUserDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/alert/reporter/mail/password:
    put:
      tags:
        - /config/alert/reporter/mail/password
      summary: Replace /config/alert/reporter/mail/password
      operationId: configAlertReporterMailPasswordPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterMailPassword'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/reporter/mail/password
      summary: Update /config/alert/reporter/mail/password
      operationId: configAlertReporterMailPasswordPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterMailPassword'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/reporter/mail/password
      summary: Delete /config/alert/reporter/mail/password
      operationId: configAlertReporterMailPasswordDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/alert/reporter/mail/from-address:
    get:
      tags:
        - /config/alert/reporter/mail/from-address
      summary: Get /config/alert/reporter/mail/from-address
      operationId: configAlertReporterMailFromAddressGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertReporterMailFromAddress'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/alert/reporter/mail/from-address
      summary: Replace /config/alert/reporter/mail/from-address
      operationId: configAlertReporterMailFromAddressPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterMailFromAddress'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/reporter/mail/from-address
      summary: Update /config/alert/reporter/mail/from-address
      operationId: configAlertReporterMailFromAddressPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterMailFromAddress'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/reporter/mail/from-address
      summary: Delete /config/alert/reporter/mail/from-address
      operationId: configAlertReporterMailFromAddressDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/alert/reporter/mail/to:
    get:
      tags:
        - /config/alert/reporter/mail/to
      summary: Get /config/alert/reporter/mail/to
      operationId: configAlertReporterMailToGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertReporterMailTo'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/alert/reporter/mail/to
      summary: Replace /config/alert/reporter/mail/to
      operationId: configAlertReporterMailToPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterMailTo'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/reporter/mail/to
      summary: Update /config/alert/reporter/mail/to
      operationId: configAlertReporterMailToPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterMailTo'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/reporter/mail/to
      summary: Delete /config/alert/reporter/mail/to
      operationId: configAlertReporterMailToDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty array.
  /config/alert/reporter/mail/to/{idx}:
    parameters:
      - name: idx
        in: path
        description: |
          The index of an alert destination.
        required: true
        schema:
          type: integer
          minimum: 0
          maximum: 3
    get:
      tags:
        - /config/alert/reporter/mail/to/{idx}
      summary: Get /config/alert/reporter/mail/to/{idx}
      operationId: configAlertReporterMailToItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertReporterMailToItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/alert/reporter/mail/to/{idx}
      summary: Replace /config/alert/reporter/mail/to/{idx}
      operationId: configAlertReporterMailToItemPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterMailToItem'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/reporter/mail/to/{idx}
      summary: Update /config/alert/reporter/mail/to/{idx}
      operationId: configAlertReporterMailToItemPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterMailToItem'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/reporter/mail/to/{idx}
      summary: Delete /config/alert/reporter/mail/to/{idx}
      operationId: configAlertReporterMailToItemDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /config/alert/reporter/mail/to/{idx}/format:
    parameters:
      - name: idx
        in: path
        description: |
          The index of an alert destination.
        required: true
        schema:
          type: integer
          minimum: 0
          maximum: 3
    get:
      tags:
        - /config/alert/reporter/mail/to/{idx}/format
      summary: Get /config/alert/reporter/mail/to/{idx}/format
      operationId: configAlertReporterMailToItemFormatGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertReporterMailToItemFormat'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/alert/reporter/mail/to/{idx}/format
      summary: Replace /config/alert/reporter/mail/to/{idx}/format
      operationId: configAlertReporterMailToItemFormatPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterMailToItemFormat'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/reporter/mail/to/{idx}/format
      summary: Update /config/alert/reporter/mail/to/{idx}/format
      operationId: configAlertReporterMailToItemFormatPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterMailToItemFormat'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/reporter/mail/to/{idx}/format
      summary: Delete /config/alert/reporter/mail/to/{idx}/format
      operationId: configAlertReporterMailToItemFormatDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Delete this mail destination.
  /config/alert/reporter/mail/to/{idx}/min-priority:
    parameters:
      - name: idx
        in: path
        description: |
          The index of an alert destination.
        required: true
        schema:
          type: integer
          minimum: 0
          maximum: 3
    get:
      tags:
        - /config/alert/reporter/mail/to/{idx}/min-priority
      summary: Get /config/alert/reporter/mail/to/{idx}/min-priority
      operationId: configAlertReporterMailToItemMinPriorityGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: >-
                      #/components/schemas/configAlertReporterMailToItemMinPriority
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/alert/reporter/mail/to/{idx}/min-priority
      summary: Replace /config/alert/reporter/mail/to/{idx}/min-priority
      operationId: configAlertReporterMailToItemMinPriorityPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterMailToItemMinPriority'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/reporter/mail/to/{idx}/min-priority
      summary: Update /config/alert/reporter/mail/to/{idx}/min-priority
      operationId: configAlertReporterMailToItemMinPriorityPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterMailToItemMinPriority'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/reporter/mail/to/{idx}/min-priority
      summary: Delete /config/alert/reporter/mail/to/{idx}/min-priority
      operationId: configAlertReporterMailToItemMinPriorityDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to 0.
  /config/alert/reporter/mail/to/{idx}/address:
    parameters:
      - name: idx
        in: path
        description: |
          The index of an alert destination.
        required: true
        schema:
          type: integer
          minimum: 0
          maximum: 3
    get:
      tags:
        - /config/alert/reporter/mail/to/{idx}/address
      summary: Get /config/alert/reporter/mail/to/{idx}/address
      operationId: configAlertReporterMailToItemAddressGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertReporterMailToItemAddress'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/alert/reporter/mail/to/{idx}/address
      summary: Replace /config/alert/reporter/mail/to/{idx}/address
      operationId: configAlertReporterMailToItemAddressPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterMailToItemAddress'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/reporter/mail/to/{idx}/address
      summary: Update /config/alert/reporter/mail/to/{idx}/address
      operationId: configAlertReporterMailToItemAddressPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertReporterMailToItemAddress'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/reporter/mail/to/{idx}/address
      summary: Delete /config/alert/reporter/mail/to/{idx}/address
      operationId: configAlertReporterMailToItemAddressDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /config/alert/sys-prio:
    get:
      tags:
        - /config/alert/sys-prio
      summary: Get /config/alert/sys-prio
      operationId: configAlertSysPrioGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertSysPrio'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /config/alert/sys-prio
      summary: Replace /config/alert/sys-prio
      operationId: configAlertSysPrioPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertSysPrio'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/sys-prio
      summary: Update /config/alert/sys-prio
      operationId: configAlertSysPrioPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertSysPrio'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/sys-prio
      summary: Delete /config/alert/sys-prio
      operationId: configAlertSysPrioDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: |
        Reset system alert priorities to 0.
  /config/alert/sys-prio/{idx}:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a system alert.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /config/alert/sys-prio/{idx}
      summary: Get /config/alert/sys-prio/{idx}
      operationId: configAlertSysPrioItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/configAlertSysPrioItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
          headers:
            ETag:
              $ref: '#/components/headers/ETagHeader'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /config/alert/sys-prio/{idx}
      summary: Replace /config/alert/sys-prio/{idx}
      operationId: configAlertSysPrioItemPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertSysPrioItem'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /config/alert/sys-prio/{idx}
      summary: Update /config/alert/sys-prio/{idx}
      operationId: configAlertSysPrioItemPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/configAlertSysPrioItem'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /config/alert/sys-prio/{idx}
      summary: Delete /config/alert/sys-prio/{idx}
      operationId: configAlertSysPrioItemDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to 0.
  /ctrl/interface:
    get:
      tags:
        - /ctrl/interface
      summary: Get /ctrl/interface
      operationId: ctrlInterfaceGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/ctrlInterface'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /ctrl/interface/{if}:
    parameters:
      - name: if
        in: path
        description: |
          The name of an interface.  Valid interface names must start with
          a letter and consist entirely of letters, digits, or
          underscores.
        required: true
        schema:
          type: string
        example: relay
    get:
      tags:
        - /ctrl/interface/{if}
      summary: Get /ctrl/interface/{if}
      operationId: ctrlInterfaceIfGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/ctrlInterfaceIf'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /ctrl/interface/{if}/method:
    parameters:
      - name: if
        in: path
        description: |
          The name of an interface.  Valid interface names must start with
          a letter and consist entirely of letters, digits, or
          underscores.
        required: true
        schema:
          type: string
        example: relay
    get:
      tags:
        - /ctrl/interface/{if}/method
      summary: Get /ctrl/interface/{if}/method
      operationId: ctrlInterfaceIfMethodGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/ctrlInterfaceIfMethod'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /ctrl/interface/{if}/method/{idx}:
    parameters:
      - name: if
        in: path
        description: |
          The name of an interface.  Valid interface names must start with
          a letter and consist entirely of letters, digits, or
          underscores.
        required: true
        schema:
          type: string
        example: relay
      - name: idx
        in: path
        description: |
          The index of a method.
        required: true
        schema:
          type: integer
          minimum: 0
        example: 0
    get:
      tags:
        - /ctrl/interface/{if}/method/{idx}
      summary: Get /ctrl/interface/{if}/method/{idx}
      operationId: ctrlInterfaceIfMethodItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/ctrlInterfaceIfMethodItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /ctrl/interface/{if}/method/{idx}/name:
    parameters:
      - name: if
        in: path
        description: |
          The name of an interface.  Valid interface names must start with
          a letter and consist entirely of letters, digits, or
          underscores.
        required: true
        schema:
          type: string
        example: relay
      - name: idx
        in: path
        description: |
          The index of a method.
        required: true
        schema:
          type: integer
          minimum: 0
        example: 0
    get:
      tags:
        - /ctrl/interface/{if}/method/{idx}/name
      summary: Get /ctrl/interface/{if}/method/{idx}/name
      operationId: ctrlInterfaceIfMethodItemNameGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/ctrlInterfaceIfMethodItemName'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /ctrl/interface/{if}/method/{idx}/in:
    parameters:
      - name: if
        in: path
        description: |
          The name of an interface.  Valid interface names must start with
          a letter and consist entirely of letters, digits, or
          underscores.
        required: true
        schema:
          type: string
        example: relay
      - name: idx
        in: path
        description: |
          The index of a method.
        required: true
        schema:
          type: integer
          minimum: 0
        example: 0
    get:
      tags:
        - /ctrl/interface/{if}/method/{idx}/in
      summary: Get /ctrl/interface/{if}/method/{idx}/in
      operationId: ctrlInterfaceIfMethodItemInGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/ctrlInterfaceIfMethodItemIn'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /ctrl/interface/{if}/method/{idx}/in_names:
    parameters:
      - name: if
        in: path
        description: |
          The name of an interface.  Valid interface names must start with
          a letter and consist entirely of letters, digits, or
          underscores.
        required: true
        schema:
          type: string
        example: relay
      - name: idx
        in: path
        description: |
          The index of a method.
        required: true
        schema:
          type: integer
          minimum: 0
        example: 0
    get:
      tags:
        - /ctrl/interface/{if}/method/{idx}/in_names
      summary: Get /ctrl/interface/{if}/method/{idx}/in_names
      operationId: ctrlInterfaceIfMethodItemInNamesGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/ctrlInterfaceIfMethodItemInNames'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /ctrl/interface/{if}/method/{idx}/in_names/{argidx}:
    parameters:
      - name: if
        in: path
        description: |
          The name of an interface.  Valid interface names must start with
          a letter and consist entirely of letters, digits, or
          underscores.
        required: true
        schema:
          type: string
        example: relay
      - name: idx
        in: path
        description: |
          The index of a method.
        required: true
        schema:
          type: integer
          minimum: 0
        example: 0
      - name: argidx
        in: path
        description: |
          The index of a method argument.
        required: true
        schema:
          type: integer
          minimum: 0
        example: 0
    get:
      tags:
        - /ctrl/interface/{if}/method/{idx}/in_names/{argidx}
      summary: Get /ctrl/interface/{if}/method/{idx}/in_names/{argidx}
      operationId: ctrlInterfaceIfMethodItemInNamesItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/ctrlInterfaceIfMethodItemInNamesItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /ctrl/interface/{if}/method/{idx}/out:
    parameters:
      - name: if
        in: path
        description: |
          The name of an interface.  Valid interface names must start with
          a letter and consist entirely of letters, digits, or
          underscores.
        required: true
        schema:
          type: string
        example: relay
      - name: idx
        in: path
        description: |
          The index of a method.
        required: true
        schema:
          type: integer
          minimum: 0
        example: 0
    get:
      tags:
        - /ctrl/interface/{if}/method/{idx}/out
      summary: Get /ctrl/interface/{if}/method/{idx}/out
      operationId: ctrlInterfaceIfMethodItemOutGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/ctrlInterfaceIfMethodItemOut'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /ctrl/interface/{if}/method/{idx}/doc:
    parameters:
      - name: if
        in: path
        description: |
          The name of an interface.  Valid interface names must start with
          a letter and consist entirely of letters, digits, or
          underscores.
        required: true
        schema:
          type: string
        example: relay
      - name: idx
        in: path
        description: |
          The index of a method.
        required: true
        schema:
          type: integer
          minimum: 0
        example: 0
    get:
      tags:
        - /ctrl/interface/{if}/method/{idx}/doc
      summary: Get /ctrl/interface/{if}/method/{idx}/doc
      operationId: ctrlInterfaceIfMethodItemDocGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/ctrlInterfaceIfMethodItemDoc'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /lua:
    get:
      tags:
        - /lua
      summary: Get /lua
      operationId: luaGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/lua'
                  error:
                    $ref: '#/components/schemas/ErrorString'
                example:
                  result:
                    var:
                      sob_Grid-RD:
                        value: '1677697200'
                        desc: Start of the current billing interval.
                      kwh_sob_Grid-RD:
                        value: '0'
                        desc: Accumulated kWh for billing period.
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /lua
      summary: Replace /lua
      operationId: luaPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/lua'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /lua
      summary: Update /lua
      operationId: luaPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/lua'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /lua
      summary: Delete /lua
      operationId: luaDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /lua/var:
    get:
      tags:
        - /lua/var
      summary: Get /lua/var
      operationId: luaVarGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/luaVar'
                  error:
                    $ref: '#/components/schemas/ErrorString'
                example:
                  result:
                    sob_Grid-RD:
                      value: '1677697200'
                      desc: Start of the current billing interval.
                    kwh_sob_Grid-RD:
                      value: '0'
                      desc: Accumulated kWh for billing period.
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /lua/var
      summary: Replace /lua/var
      operationId: luaVarPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/luaVar'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /lua/var
      summary: Update /lua/var
      operationId: luaVarPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/luaVar'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /lua/var
      summary: Delete /lua/var
      operationId: luaVarDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /lua/var/{name}:
    parameters:
      - name: name
        in: path
        description: |
          The name of a persistent Lua variable.
        required: true
        schema:
          type: string
    get:
      tags:
        - /lua/var/{name}
      summary: Get /lua/var/{name}
      operationId: luaVarNameGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/luaVarName'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
    put:
      tags:
        - /lua/var/{name}
      summary: Replace /lua/var/{name}
      operationId: luaVarNamePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/luaVarName'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /lua/var/{name}
      summary: Update /lua/var/{name}
      operationId: luaVarNamePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/luaVarName'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /lua/var/{name}
      summary: Delete /lua/var/{name}
      operationId: luaVarNameDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: >-
        Reset to default. See the descriptions of the individual endpoints for
        their default values.  Commonly, arrays and strings are cleared to
        empty, numbers are cleared to 0, and booleans are cleared to `false`.  
  /lua/var/{name}/value:
    parameters:
      - name: name
        in: path
        description: |
          The name of a persistent Lua variable.
        required: true
        schema:
          type: string
    get:
      tags:
        - /lua/var/{name}/value
      summary: Get /lua/var/{name}/value
      operationId: luaVarNameValueGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/luaVarNameValue'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /lua/var/{name}/value
      summary: Replace /lua/var/{name}/value
      operationId: luaVarNameValuePut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/luaVarNameValue'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /lua/var/{name}/value
      summary: Update /lua/var/{name}/value
      operationId: luaVarNameValuePost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/luaVarNameValue'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /lua/var/{name}/value
      summary: Delete /lua/var/{name}/value
      operationId: luaVarNameValueDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /lua/var/{name}/desc:
    parameters:
      - name: name
        in: path
        description: |
          The name of a persistent Lua variable.
        required: true
        schema:
          type: string
    get:
      tags:
        - /lua/var/{name}/desc
      summary: Get /lua/var/{name}/desc
      operationId: luaVarNameDescGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/luaVarNameDesc'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
    put:
      tags:
        - /lua/var/{name}/desc
      summary: Replace /lua/var/{name}/desc
      operationId: luaVarNameDescPut
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/luaVarNameDesc'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    post:
      tags:
        - /lua/var/{name}/desc
      summary: Update /lua/var/{name}/desc
      operationId: luaVarNameDescPost
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/luaVarNameDesc'
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
    delete:
      tags:
        - /lua/var/{name}/desc
      summary: Delete /lua/var/{name}/desc
      operationId: luaVarNameDescDelete
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusObject'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      description: Reset to empty string.
  /sys:
    get:
      tags:
        - /sys
      summary: Get /sys
      operationId: sysGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sys'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/alert:
    get:
      tags:
        - /sys/alert
      summary: Get /sys/alert
      operationId: sysAlertGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysAlert'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/alert/{idx}:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a system alert.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/alert/{idx}
      summary: Get /sys/alert/{idx}
      operationId: sysAlertItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysAlertItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/alert/{idx}/id:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a system alert.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/alert/{idx}/id
      summary: Get /sys/alert/{idx}/id
      operationId: sysAlertItemIdGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysAlertItemId'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/alert/{idx}/reason:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a system alert.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/alert/{idx}/reason
      summary: Get /sys/alert/{idx}/reason
      operationId: sysAlertItemReasonGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysAlertItemReason'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/boot:
    get:
      tags:
        - /sys/boot
      summary: Get /sys/boot
      operationId: sysBootGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysBoot'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/boot/reason:
    get:
      tags:
        - /sys/boot/reason
      summary: Get /sys/boot/reason
      operationId: sysBootReasonGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysBootReason'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/boot/time:
    get:
      tags:
        - /sys/boot/time
      summary: Get /sys/boot/time
      operationId: sysBootTimeGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysBootTime'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/db:
    get:
      tags:
        - /sys/db
      summary: Get /sys/db
      operationId: sysDbGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysDb'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/db/max-registers:
    get:
      tags:
        - /sys/db/max-registers
      summary: Get /sys/db/max-registers
      operationId: sysDbMaxRegistersGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysDbMaxRegisters'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/db/level:
    get:
      tags:
        - /sys/db/level
      summary: Get /sys/db/level
      operationId: sysDbLevelGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysDbLevel'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/db/level/{idx}:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a db level.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/db/level/{idx}
      summary: Get /sys/db/level/{idx}
      operationId: sysDbLevelItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysDbLevelItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/db/level/{idx}/head:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a db level.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/db/level/{idx}/head
      summary: Get /sys/db/level/{idx}/head
      operationId: sysDbLevelItemHeadGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysDbLevelItemHead'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/db/level/{idx}/interval:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a db level.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/db/level/{idx}/interval
      summary: Get /sys/db/level/{idx}/interval
      operationId: sysDbLevelItemIntervalGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysDbLevelItemInterval'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/db/level/{idx}/row-count:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a db level.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/db/level/{idx}/row-count
      summary: Get /sys/db/level/{idx}/row-count
      operationId: sysDbLevelItemRowCountGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysDbLevelItemRowCount'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/db/level/{idx}/volatile:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a db level.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/db/level/{idx}/volatile
      summary: Get /sys/db/level/{idx}/volatile
      operationId: sysDbLevelItemVolatileGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysDbLevelItemVolatile'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/dev:
    get:
      tags:
        - /sys/dev
      summary: Get /sys/dev
      operationId: sysDevGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysDev'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/dev/serial:
    get:
      tags:
        - /sys/dev/serial
      summary: Get /sys/dev/serial
      operationId: sysDevSerialGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysDevSerial'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/dev/serial/{seridx}:
    parameters:
      - name: seridx
        in: path
        description: |
          The index of a serial port device.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/dev/serial/{seridx}
      summary: Get /sys/dev/serial/{seridx}
      operationId: sysDevSerialItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysDevSerialItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/dev/serial/{seridx}/devpath:
    parameters:
      - name: seridx
        in: path
        description: |
          The index of a serial port device.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/dev/serial/{seridx}/devpath
      summary: Get /sys/dev/serial/{seridx}/devpath
      operationId: sysDevSerialItemDevpathGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysDevSerialItemDevpath'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/dev/serial/{seridx}/manufacturer:
    parameters:
      - name: seridx
        in: path
        description: |
          The index of a serial port device.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/dev/serial/{seridx}/manufacturer
      summary: Get /sys/dev/serial/{seridx}/manufacturer
      operationId: sysDevSerialItemManufacturerGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysDevSerialItemManufacturer'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/dev/serial/{seridx}/product:
    parameters:
      - name: seridx
        in: path
        description: |
          The index of a serial port device.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/dev/serial/{seridx}/product
      summary: Get /sys/dev/serial/{seridx}/product
      operationId: sysDevSerialItemProductGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysDevSerialItemProduct'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/dev/serial/{seridx}/sn:
    parameters:
      - name: seridx
        in: path
        description: |
          The index of a serial port device.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/dev/serial/{seridx}/sn
      summary: Get /sys/dev/serial/{seridx}/sn
      operationId: sysDevSerialItemSnGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysDevSerialItemSn'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/dev/serial/{seridx}/version:
    parameters:
      - name: seridx
        in: path
        description: |
          The index of a serial port device.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/dev/serial/{seridx}/version
      summary: Get /sys/dev/serial/{seridx}/version
      operationId: sysDevSerialItemVersionGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysDevSerialItemVersion'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/func:
    get:
      tags:
        - /sys/func
      summary: Get /sys/func
      operationId: sysFuncGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysFunc'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/func/basic:
    get:
      tags:
        - /sys/func/basic
      summary: Get /sys/func/basic
      operationId: sysFuncBasicGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysFuncBasic'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/func/basic/{name}:
    parameters:
      - name: name
        in: path
        description: |
          The name of an eScript basic function.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/func/basic/{name}
      summary: Get /sys/func/basic/{name}
      operationId: sysFuncBasicNameGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysFuncBasicName'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/func/basic/{name}/arg:
    parameters:
      - name: name
        in: path
        description: |
          The name of an eScript basic function.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/func/basic/{name}/arg
      summary: Get /sys/func/basic/{name}/arg
      operationId: sysFuncBasicNameArgGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysFuncBasicNameArg'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/func/basic/{name}/arg/{idx}:
    parameters:
      - name: name
        in: path
        description: |
          The name of an eScript basic function.
        required: true
        schema:
          type: string
      - name: idx
        in: path
        description: |
          The name index of a function argument.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/func/basic/{name}/arg/{idx}
      summary: Get /sys/func/basic/{name}/arg/{idx}
      operationId: sysFuncBasicNameArgItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysFuncBasicNameArgItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/func/basic/{name}/arg/{idx}/name:
    parameters:
      - name: name
        in: path
        description: |
          The name of an eScript basic function.
        required: true
        schema:
          type: string
      - name: idx
        in: path
        description: |
          The name index of a function argument.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/func/basic/{name}/arg/{idx}/name
      summary: Get /sys/func/basic/{name}/arg/{idx}/name
      operationId: sysFuncBasicNameArgItemNameGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysFuncBasicNameArgItemName'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/func/basic/{name}/arg/{idx}/type:
    parameters:
      - name: name
        in: path
        description: |
          The name of an eScript basic function.
        required: true
        schema:
          type: string
      - name: idx
        in: path
        description: |
          The name index of a function argument.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/func/basic/{name}/arg/{idx}/type
      summary: Get /sys/func/basic/{name}/arg/{idx}/type
      operationId: sysFuncBasicNameArgItemTypeGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysFuncBasicNameArgItemType'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/func/basic/{name}/help:
    parameters:
      - name: name
        in: path
        description: |
          The name of an eScript basic function.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/func/basic/{name}/help
      summary: Get /sys/func/basic/{name}/help
      operationId: sysFuncBasicNameHelpGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysFuncBasicNameHelp'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/func/basic/{name}/min-args:
    parameters:
      - name: name
        in: path
        description: |
          The name of an eScript basic function.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/func/basic/{name}/min-args
      summary: Get /sys/func/basic/{name}/min-args
      operationId: sysFuncBasicNameMinArgsGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysFuncBasicNameMinArgs'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/func/alert:
    get:
      tags:
        - /sys/func/alert
      summary: Get /sys/func/alert
      operationId: sysFuncAlertGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysFuncAlert'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/func/alert/{name}:
    parameters:
      - name: name
        in: path
        description: |
          The name of an eScript alert function.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/func/alert/{name}
      summary: Get /sys/func/alert/{name}
      operationId: sysFuncAlertNameGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysFuncAlertName'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/func/alert/{name}/arg:
    parameters:
      - name: name
        in: path
        description: |
          The name of an eScript alert function.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/func/alert/{name}/arg
      summary: Get /sys/func/alert/{name}/arg
      operationId: sysFuncAlertNameArgGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysFuncAlertNameArg'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/func/alert/{name}/arg/{idx}:
    parameters:
      - name: name
        in: path
        description: |
          The name of an eScript alert function.
        required: true
        schema:
          type: string
      - name: idx
        in: path
        description: |
          The name index of a function argument.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/func/alert/{name}/arg/{idx}
      summary: Get /sys/func/alert/{name}/arg/{idx}
      operationId: sysFuncAlertNameArgItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysFuncAlertNameArgItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/func/alert/{name}/arg/{idx}/name:
    parameters:
      - name: name
        in: path
        description: |
          The name of an eScript alert function.
        required: true
        schema:
          type: string
      - name: idx
        in: path
        description: |
          The name index of a function argument.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/func/alert/{name}/arg/{idx}/name
      summary: Get /sys/func/alert/{name}/arg/{idx}/name
      operationId: sysFuncAlertNameArgItemNameGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysFuncAlertNameArgItemName'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/func/alert/{name}/arg/{idx}/type:
    parameters:
      - name: name
        in: path
        description: |
          The name of an eScript alert function.
        required: true
        schema:
          type: string
      - name: idx
        in: path
        description: |
          The name index of a function argument.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/func/alert/{name}/arg/{idx}/type
      summary: Get /sys/func/alert/{name}/arg/{idx}/type
      operationId: sysFuncAlertNameArgItemTypeGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysFuncAlertNameArgItemType'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/func/alert/{name}/help:
    parameters:
      - name: name
        in: path
        description: |
          The name of an eScript alert function.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/func/alert/{name}/help
      summary: Get /sys/func/alert/{name}/help
      operationId: sysFuncAlertNameHelpGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysFuncAlertNameHelp'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/func/alert/{name}/min-args:
    parameters:
      - name: name
        in: path
        description: |
          The name of an eScript alert function.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/func/alert/{name}/min-args
      summary: Get /sys/func/alert/{name}/min-args
      operationId: sysFuncAlertNameMinArgsGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysFuncAlertNameMinArgs'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/modbus:
    get:
      tags:
        - /sys/modbus
      summary: Get /sys/modbus
      operationId: sysModbusGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysModbus'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/modbus/client:
    get:
      tags:
        - /sys/modbus/client
      summary: Get /sys/modbus/client
      operationId: sysModbusClientGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysModbusClient'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/modbus/client/map:
    get:
      tags:
        - /sys/modbus/client/map
      summary: Get /sys/modbus/client/map
      operationId: sysModbusClientMapGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysModbusClientMap'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/modbus/client/map/{name}:
    parameters:
      - name: name
        in: path
        description: |
          The name of a system Modbus map (read-only).
        required: true
        schema:
          type: string
          example: egauge_prm3
    get:
      tags:
        - /sys/modbus/client/map/{name}
      summary: Get /sys/modbus/client/map/{name}
      operationId: sysModbusClientMapNameGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysModbusClientMapName'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/modbus/client/map/{name}/option:
    parameters:
      - name: name
        in: path
        description: |
          The name of a system Modbus map (read-only).
        required: true
        schema:
          type: string
          example: egauge_prm3
    get:
      tags:
        - /sys/modbus/client/map/{name}/option
      summary: Get /sys/modbus/client/map/{name}/option
      operationId: sysModbusClientMapNameOptionGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysModbusClientMapNameOption'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/modbus/client/map/{name}/option/{opt}:
    parameters:
      - name: name
        in: path
        description: |
          The name of a system Modbus map (read-only).
        required: true
        schema:
          type: string
          example: egauge_prm3
      - name: opt
        in: path
        description: |
          The name of a Modbus map option.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/modbus/client/map/{name}/option/{opt}
      summary: Get /sys/modbus/client/map/{name}/option/{opt}
      operationId: sysModbusClientMapNameOptionOptGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysModbusClientMapNameOptionOpt'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/modbus/client/map/{name}/reg:
    parameters:
      - name: name
        in: path
        description: |
          The name of a system Modbus map (read-only).
        required: true
        schema:
          type: string
          example: egauge_prm3
    get:
      tags:
        - /sys/modbus/client/map/{name}/reg
      summary: Get /sys/modbus/client/map/{name}/reg
      operationId: sysModbusClientMapNameRegGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysModbusClientMapNameReg'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/modbus/client/map/{name}/reg/{idx}:
    parameters:
      - name: name
        in: path
        description: |
          The name of a system Modbus map (read-only).
        required: true
        schema:
          type: string
          example: egauge_prm3
      - name: idx
        in: path
        description: |
          The index of a Modbus map register.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/modbus/client/map/{name}/reg/{idx}
      summary: Get /sys/modbus/client/map/{name}/reg/{idx}
      operationId: sysModbusClientMapNameRegItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysModbusClientMapNameRegItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/modbus/client/map/{name}/reg/{idx}/name:
    parameters:
      - name: name
        in: path
        description: |
          The name of a system Modbus map (read-only).
        required: true
        schema:
          type: string
          example: egauge_prm3
      - name: idx
        in: path
        description: |
          The index of a Modbus map register.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/modbus/client/map/{name}/reg/{idx}/name
      summary: Get /sys/modbus/client/map/{name}/reg/{idx}/name
      operationId: sysModbusClientMapNameRegItemNameGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysModbusClientMapNameRegItemName'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/modbus/client/map/{name}/reg/{idx}/addr:
    parameters:
      - name: name
        in: path
        description: |
          The name of a system Modbus map (read-only).
        required: true
        schema:
          type: string
          example: egauge_prm3
      - name: idx
        in: path
        description: |
          The index of a Modbus map register.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/modbus/client/map/{name}/reg/{idx}/addr
      summary: Get /sys/modbus/client/map/{name}/reg/{idx}/addr
      operationId: sysModbusClientMapNameRegItemAddrGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysModbusClientMapNameRegItemAddr'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/modbus/client/map/{name}/reg/{idx}/type:
    parameters:
      - name: name
        in: path
        description: |
          The name of a system Modbus map (read-only).
        required: true
        schema:
          type: string
          example: egauge_prm3
      - name: idx
        in: path
        description: |
          The index of a Modbus map register.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/modbus/client/map/{name}/reg/{idx}/type
      summary: Get /sys/modbus/client/map/{name}/reg/{idx}/type
      operationId: sysModbusClientMapNameRegItemTypeGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysModbusClientMapNameRegItemType'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/modbus/client/map/{name}/reg/{idx}/kind:
    parameters:
      - name: name
        in: path
        description: |
          The name of a system Modbus map (read-only).
        required: true
        schema:
          type: string
          example: egauge_prm3
      - name: idx
        in: path
        description: |
          The index of a Modbus map register.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/modbus/client/map/{name}/reg/{idx}/kind
      summary: Get /sys/modbus/client/map/{name}/reg/{idx}/kind
      operationId: sysModbusClientMapNameRegItemKindGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysModbusClientMapNameRegItemKind'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/modbus/client/map/{name}/reg/{idx}/unit:
    parameters:
      - name: name
        in: path
        description: |
          The name of a system Modbus map (read-only).
        required: true
        schema:
          type: string
          example: egauge_prm3
      - name: idx
        in: path
        description: |
          The index of a Modbus map register.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/modbus/client/map/{name}/reg/{idx}/unit
      summary: Get /sys/modbus/client/map/{name}/reg/{idx}/unit
      operationId: sysModbusClientMapNameRegItemUnitGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysModbusClientMapNameRegItemUnit'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/modbus/client/map/{name}/reg/{idx}/offset:
    parameters:
      - name: name
        in: path
        description: |
          The name of a system Modbus map (read-only).
        required: true
        schema:
          type: string
          example: egauge_prm3
      - name: idx
        in: path
        description: |
          The index of a Modbus map register.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/modbus/client/map/{name}/reg/{idx}/offset
      summary: Get /sys/modbus/client/map/{name}/reg/{idx}/offset
      operationId: sysModbusClientMapNameRegItemOffsetGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysModbusClientMapNameRegItemOffset'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/modbus/client/map/{name}/reg/{idx}/scale:
    parameters:
      - name: name
        in: path
        description: |
          The name of a system Modbus map (read-only).
        required: true
        schema:
          type: string
          example: egauge_prm3
      - name: idx
        in: path
        description: |
          The index of a Modbus map register.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/modbus/client/map/{name}/reg/{idx}/scale
      summary: Get /sys/modbus/client/map/{name}/reg/{idx}/scale
      operationId: sysModbusClientMapNameRegItemScaleGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysModbusClientMapNameRegItemScale'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/modbus/client/map/{name}/reg/{idx}/access:
    parameters:
      - name: name
        in: path
        description: |
          The name of a system Modbus map (read-only).
        required: true
        schema:
          type: string
          example: egauge_prm3
      - name: idx
        in: path
        description: |
          The index of a Modbus map register.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/modbus/client/map/{name}/reg/{idx}/access
      summary: Get /sys/modbus/client/map/{name}/reg/{idx}/access
      operationId: sysModbusClientMapNameRegItemAccessGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysModbusClientMapNameRegItemAccess'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/model:
    get:
      tags:
        - /sys/model
      summary: Get /sys/model
      operationId: sysModelGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysModel'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net:
    get:
      tags:
        - /sys/net
      summary: Get /sys/net
      operationId: sysNetGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNet'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/net/homeplug:
    get:
      tags:
        - /sys/net/homeplug
      summary: Get /sys/net/homeplug
      operationId: sysNetHomeplugGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetHomeplug'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/net/homeplug/bridge:
    get:
      tags:
        - /sys/net/homeplug/bridge
      summary: Get /sys/net/homeplug/bridge
      operationId: sysNetHomeplugBridgeGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetHomeplugBridge'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/net/homeplug/bridge/{idx}:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a HomePlug bridge device.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/homeplug/bridge/{idx}
      summary: Get /sys/net/homeplug/bridge/{idx}
      operationId: sysNetHomeplugBridgeItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetHomeplugBridgeItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/net/homeplug/bridge/{idx}/mac:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a HomePlug bridge device.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/homeplug/bridge/{idx}/mac
      summary: Get /sys/net/homeplug/bridge/{idx}/mac
      operationId: sysNetHomeplugBridgeItemMacGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetHomeplugBridgeItemMac'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/homeplug/bridge/{idx}/speed:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a HomePlug bridge device.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/homeplug/bridge/{idx}/speed
      summary: Get /sys/net/homeplug/bridge/{idx}/speed
      operationId: sysNetHomeplugBridgeItemSpeedGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetHomeplugBridgeItemSpeed'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/net/homeplug/bridge/{idx}/speed/rx:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a HomePlug bridge device.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/homeplug/bridge/{idx}/speed/rx
      summary: Get /sys/net/homeplug/bridge/{idx}/speed/rx
      operationId: sysNetHomeplugBridgeItemSpeedRxGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetHomeplugBridgeItemSpeedRx'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/homeplug/bridge/{idx}/speed/tx:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a HomePlug bridge device.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/homeplug/bridge/{idx}/speed/tx
      summary: Get /sys/net/homeplug/bridge/{idx}/speed/tx
      operationId: sysNetHomeplugBridgeItemSpeedTxGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetHomeplugBridgeItemSpeedTx'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/homeplug/bridge/{idx}/type:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a HomePlug bridge device.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/homeplug/bridge/{idx}/type
      summary: Get /sys/net/homeplug/bridge/{idx}/type
      operationId: sysNetHomeplugBridgeItemTypeGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetHomeplugBridgeItemType'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/homeplug/bridge/{idx}/vendor:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a HomePlug bridge device.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/homeplug/bridge/{idx}/vendor
      summary: Get /sys/net/homeplug/bridge/{idx}/vendor
      operationId: sysNetHomeplugBridgeItemVendorGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetHomeplugBridgeItemVendor'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/ipv4:
    get:
      tags:
        - /sys/net/ipv4
      summary: Get /sys/net/ipv4
      operationId: sysNetIpv4Get
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetIpv4'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/net/ipv4/dhcp:
    get:
      tags:
        - /sys/net/ipv4/dhcp
      summary: Get /sys/net/ipv4/dhcp
      operationId: sysNetIpv4DhcpGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetIpv4Dhcp'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/ipv4/address:
    get:
      tags:
        - /sys/net/ipv4/address
      summary: Get /sys/net/ipv4/address
      operationId: sysNetIpv4AddressGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetIpv4Address'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/ipv4/broadcast:
    get:
      tags:
        - /sys/net/ipv4/broadcast
      summary: Get /sys/net/ipv4/broadcast
      operationId: sysNetIpv4BroadcastGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetIpv4Broadcast'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/ipv4/netmask:
    get:
      tags:
        - /sys/net/ipv4/netmask
      summary: Get /sys/net/ipv4/netmask
      operationId: sysNetIpv4NetmaskGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetIpv4Netmask'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/ipv4/network:
    get:
      tags:
        - /sys/net/ipv4/network
      summary: Get /sys/net/ipv4/network
      operationId: sysNetIpv4NetworkGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetIpv4Network'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/ipv4/gateway:
    get:
      tags:
        - /sys/net/ipv4/gateway
      summary: Get /sys/net/ipv4/gateway
      operationId: sysNetIpv4GatewayGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetIpv4Gateway'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/ntp:
    get:
      tags:
        - /sys/net/ntp
      summary: Get /sys/net/ntp
      operationId: sysNetNtpGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetNtp'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/net/ntp/server:
    get:
      tags:
        - /sys/net/ntp/server
      summary: Get /sys/net/ntp/server
      operationId: sysNetNtpServerGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetNtpServer'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/net/ntp/server/{idx}:
    parameters:
      - name: idx
        in: path
        description: |
          The index of an NTP server.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/ntp/server/{idx}
      summary: Get /sys/net/ntp/server/{idx}
      operationId: sysNetNtpServerItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetNtpServerItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/net/ntp/server/{idx}/address:
    parameters:
      - name: idx
        in: path
        description: |
          The index of an NTP server.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/ntp/server/{idx}/address
      summary: Get /sys/net/ntp/server/{idx}/address
      operationId: sysNetNtpServerItemAddressGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetNtpServerItemAddress'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/ntp/server/{idx}/name:
    parameters:
      - name: idx
        in: path
        description: |
          The index of an NTP server.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/ntp/server/{idx}/name
      summary: Get /sys/net/ntp/server/{idx}/name
      operationId: sysNetNtpServerItemNameGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetNtpServerItemName'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/ntp/server/{idx}/state:
    parameters:
      - name: idx
        in: path
        description: |
          The index of an NTP server.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/ntp/server/{idx}/state
      summary: Get /sys/net/ntp/server/{idx}/state
      operationId: sysNetNtpServerItemStateGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetNtpServerItemState'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/ntp/server/{idx}/weight:
    parameters:
      - name: idx
        in: path
        description: |
          The index of an NTP server.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/ntp/server/{idx}/weight
      summary: Get /sys/net/ntp/server/{idx}/weight
      operationId: sysNetNtpServerItemWeightGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetNtpServerItemWeight'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/ntp/server/{idx}/trust_level:
    parameters:
      - name: idx
        in: path
        description: |
          The index of an NTP server.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/ntp/server/{idx}/trust_level
      summary: Get /sys/net/ntp/server/{idx}/trust_level
      operationId: sysNetNtpServerItemTrustLevelGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetNtpServerItemTrustLevel'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/ntp/server/{idx}/stratum:
    parameters:
      - name: idx
        in: path
        description: |
          The index of an NTP server.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/ntp/server/{idx}/stratum
      summary: Get /sys/net/ntp/server/{idx}/stratum
      operationId: sysNetNtpServerItemStratumGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetNtpServerItemStratum'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/ntp/server/{idx}/next_poll:
    parameters:
      - name: idx
        in: path
        description: |
          The index of an NTP server.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/ntp/server/{idx}/next_poll
      summary: Get /sys/net/ntp/server/{idx}/next_poll
      operationId: sysNetNtpServerItemNextPollGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetNtpServerItemNextPoll'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/ntp/server/{idx}/poll_interval:
    parameters:
      - name: idx
        in: path
        description: |
          The index of an NTP server.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/ntp/server/{idx}/poll_interval
      summary: Get /sys/net/ntp/server/{idx}/poll_interval
      operationId: sysNetNtpServerItemPollIntervalGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetNtpServerItemPollInterval'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/ntp/server/{idx}/offset:
    parameters:
      - name: idx
        in: path
        description: |
          The index of an NTP server.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/ntp/server/{idx}/offset
      summary: Get /sys/net/ntp/server/{idx}/offset
      operationId: sysNetNtpServerItemOffsetGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetNtpServerItemOffset'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/ntp/server/{idx}/delay:
    parameters:
      - name: idx
        in: path
        description: |
          The index of an NTP server.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/ntp/server/{idx}/delay
      summary: Get /sys/net/ntp/server/{idx}/delay
      operationId: sysNetNtpServerItemDelayGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetNtpServerItemDelay'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/ntp/server/{idx}/jitter:
    parameters:
      - name: idx
        in: path
        description: |
          The index of an NTP server.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/ntp/server/{idx}/jitter
      summary: Get /sys/net/ntp/server/{idx}/jitter
      operationId: sysNetNtpServerItemJitterGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetNtpServerItemJitter'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/wlan:
    get:
      tags:
        - /sys/net/wlan
      summary: Get /sys/net/wlan
      operationId: sysNetWlanGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetWlan'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/net/wlan/ap:
    get:
      tags:
        - /sys/net/wlan/ap
      summary: Get /sys/net/wlan/ap
      operationId: sysNetWlanApGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetWlanAp'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/net/wlan/ap/{idx}:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a WLAN access point.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/wlan/ap/{idx}
      summary: Get /sys/net/wlan/ap/{idx}
      operationId: sysNetWlanApItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetWlanApItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/net/wlan/ap/{idx}/bssid:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a WLAN access point.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/wlan/ap/{idx}/bssid
      summary: Get /sys/net/wlan/ap/{idx}/bssid
      operationId: sysNetWlanApItemBssidGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetWlanApItemBssid'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/wlan/ap/{idx}/flags:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a WLAN access point.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/wlan/ap/{idx}/flags
      summary: Get /sys/net/wlan/ap/{idx}/flags
      operationId: sysNetWlanApItemFlagsGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetWlanApItemFlags'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/wlan/ap/{idx}/frequency:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a WLAN access point.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/wlan/ap/{idx}/frequency
      summary: Get /sys/net/wlan/ap/{idx}/frequency
      operationId: sysNetWlanApItemFrequencyGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetWlanApItemFrequency'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/wlan/ap/{idx}/signal_level:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a WLAN access point.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/wlan/ap/{idx}/signal_level
      summary: Get /sys/net/wlan/ap/{idx}/signal_level
      operationId: sysNetWlanApItemSignalLevelGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetWlanApItemSignalLevel'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/wlan/ap/{idx}/ssid:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a WLAN access point.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/wlan/ap/{idx}/ssid
      summary: Get /sys/net/wlan/ap/{idx}/ssid
      operationId: sysNetWlanApItemSsidGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetWlanApItemSsid'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/wlan/net:
    get:
      tags:
        - /sys/net/wlan/net
      summary: Get /sys/net/wlan/net
      operationId: sysNetWlanNetGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetWlanNet'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/net/wlan/net/{idx}:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a WLAN network.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/wlan/net/{idx}
      summary: Get /sys/net/wlan/net/{idx}
      operationId: sysNetWlanNetItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetWlanNetItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/net/wlan/net/{idx}/network_id:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a WLAN network.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/wlan/net/{idx}/network_id
      summary: Get /sys/net/wlan/net/{idx}/network_id
      operationId: sysNetWlanNetItemNetworkIdGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetWlanNetItemNetworkId'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/wlan/net/{idx}/bssid:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a WLAN network.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/wlan/net/{idx}/bssid
      summary: Get /sys/net/wlan/net/{idx}/bssid
      operationId: sysNetWlanNetItemBssidGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetWlanNetItemBssid'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/wlan/net/{idx}/flags:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a WLAN network.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/wlan/net/{idx}/flags
      summary: Get /sys/net/wlan/net/{idx}/flags
      operationId: sysNetWlanNetItemFlagsGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetWlanNetItemFlags'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/net/wlan/net/{idx}/ssid:
    parameters:
      - name: idx
        in: path
        description: |
          The index of a WLAN network.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/net/wlan/net/{idx}/ssid
      summary: Get /sys/net/wlan/net/{idx}/ssid
      operationId: sysNetWlanNetItemSsidGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysNetWlanNetItemSsid'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/push:
    get:
      tags:
        - /sys/push
      summary: Get /sys/push
      operationId: sysPushGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysPush'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/push/next:
    get:
      tags:
        - /sys/push/next
      summary: Get /sys/push/next
      operationId: sysPushNextGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysPushNext'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/push/next/attempt:
    get:
      tags:
        - /sys/push/next/attempt
      summary: Get /sys/push/next/attempt
      operationId: sysPushNextAttemptGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysPushNextAttempt'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/push/last:
    get:
      tags:
        - /sys/push/last
      summary: Get /sys/push/last
      operationId: sysPushLastGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysPushLast'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/push/last/attempt:
    get:
      tags:
        - /sys/push/last/attempt
      summary: Get /sys/push/last/attempt
      operationId: sysPushLastAttemptGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysPushLastAttempt'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/push/last/count:
    get:
      tags:
        - /sys/push/last/count
      summary: Get /sys/push/last/count
      operationId: sysPushLastCountGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysPushLastCount'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/push/last/status:
    get:
      tags:
        - /sys/push/last/status
      summary: Get /sys/push/last/status
      operationId: sysPushLastStatusGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysPushLastStatus'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/push/last/success:
    get:
      tags:
        - /sys/push/last/success
      summary: Get /sys/push/last/success
      operationId: sysPushLastSuccessGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysPushLastSuccess'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/push/last/ts:
    get:
      tags:
        - /sys/push/last/ts
      summary: Get /sys/push/last/ts
      operationId: sysPushLastTsGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysPushLastTs'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/reboot:
    get:
      tags:
        - /sys/reboot
      summary: Get /sys/reboot
      operationId: sysRebootGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysReboot'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/sn:
    get:
      tags:
        - /sys/sn
      summary: Get /sys/sn
      operationId: sysSnGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysSn'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/status:
    get:
      tags:
        - /sys/status
      summary: Get /sys/status
      operationId: sysStatusGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysStatus'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/status/{token}:
    parameters:
      - name: token
        in: path
        description: |
          The token returned when a long-running operation was started.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/status/{token}
      summary: Get /sys/status/{token}
      operationId: sysStatusTokenGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysStatusToken'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/status/{token}/args:
    parameters:
      - name: token
        in: path
        description: |
          The token returned when a long-running operation was started.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/status/{token}/args
      summary: Get /sys/status/{token}/args
      operationId: sysStatusTokenArgsGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysStatusTokenArgs'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/status/{token}/args/{idx}:
    parameters:
      - name: token
        in: path
        description: |
          The token returned when a long-running operation was started.
        required: true
        schema:
          type: string
      - name: idx
        in: path
        description: |
          The index of a status argument.
        required: true
        schema:
          type: integer
          minimum: 0
    get:
      tags:
        - /sys/status/{token}/args/{idx}
      summary: Get /sys/status/{token}/args/{idx}
      operationId: sysStatusTokenArgsItemGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysStatusTokenArgsItem'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/status/{token}/done:
    parameters:
      - name: token
        in: path
        description: |
          The token returned when a long-running operation was started.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/status/{token}/done
      summary: Get /sys/status/{token}/done
      operationId: sysStatusTokenDoneGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysStatusTokenDone'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/status/{token}/error:
    parameters:
      - name: token
        in: path
        description: |
          The token returned when a long-running operation was started.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/status/{token}/error
      summary: Get /sys/status/{token}/error
      operationId: sysStatusTokenErrorGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysStatusTokenError'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/status/{token}/info:
    parameters:
      - name: token
        in: path
        description: |
          The token returned when a long-running operation was started.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/status/{token}/info
      summary: Get /sys/status/{token}/info
      operationId: sysStatusTokenInfoGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysStatusTokenInfo'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/status/{token}/progress:
    parameters:
      - name: token
        in: path
        description: |
          The token returned when a long-running operation was started.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/status/{token}/progress
      summary: Get /sys/status/{token}/progress
      operationId: sysStatusTokenProgressGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysStatusTokenProgress'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/status/{token}/result:
    parameters:
      - name: token
        in: path
        description: |
          The token returned when a long-running operation was started.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/status/{token}/result
      summary: Get /sys/status/{token}/result
      operationId: sysStatusTokenResultGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysStatusTokenResult'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/status/{token}/ts:
    parameters:
      - name: token
        in: path
        description: |
          The token returned when a long-running operation was started.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/status/{token}/ts
      summary: Get /sys/status/{token}/ts
      operationId: sysStatusTokenTsGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysStatusTokenTs'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/team:
    get:
      tags:
        - /sys/team
      summary: Get /sys/team
      operationId: sysTeamGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysTeam'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/team/lag:
    get:
      tags:
        - /sys/team/lag
      summary: Get /sys/team/lag
      operationId: sysTeamLagGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysTeamLag'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/team/fft:
    get:
      tags:
        - /sys/team/fft
      summary: Get /sys/team/fft
      operationId: sysTeamFftGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysTeamFft'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/team/fft/last_update:
    get:
      tags:
        - /sys/team/fft/last_update
      summary: Get /sys/team/fft/last_update
      operationId: sysTeamFftLastUpdateGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysTeamFftLastUpdate'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/team/reg:
    get:
      tags:
        - /sys/team/reg
      summary: Get /sys/team/reg
      operationId: sysTeamRegGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysTeamReg'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/team/reg/{name}:
    parameters:
      - name: name
        in: path
        description: |
          The register name.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/team/reg/{name}
      summary: Get /sys/team/reg/{name}
      operationId: sysTeamRegNameGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysTeamRegName'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/team/reg/{name}/available:
    parameters:
      - name: name
        in: path
        description: |
          The register name.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/team/reg/{name}/available
      summary: Get /sys/team/reg/{name}/available
      operationId: sysTeamRegNameAvailableGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysTeamRegNameAvailable'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/team/reg/{name}/last:
    parameters:
      - name: name
        in: path
        description: |
          The register name.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/team/reg/{name}/last
      summary: Get /sys/team/reg/{name}/last
      operationId: sysTeamRegNameLastGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysTeamRegNameLast'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/team/reg/{name}/last/update:
    parameters:
      - name: name
        in: path
        description: |
          The register name.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/team/reg/{name}/last/update
      summary: Get /sys/team/reg/{name}/last/update
      operationId: sysTeamRegNameLastUpdateGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysTeamRegNameLastUpdate'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/team/reg/{name}/last/val:
    parameters:
      - name: name
        in: path
        description: |
          The register name.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/team/reg/{name}/last/val
      summary: Get /sys/team/reg/{name}/last/val
      operationId: sysTeamRegNameLastValGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysTeamRegNameLastVal'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/team/reg/{name}/excess:
    parameters:
      - name: name
        in: path
        description: |
          The register name.
        required: true
        schema:
          type: string
    get:
      tags:
        - /sys/team/reg/{name}/excess
      summary: Get /sys/team/reg/{name}/excess
      operationId: sysTeamRegNameExcessGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysTeamRegNameExcess'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/time:
    get:
      tags:
        - /sys/time
      summary: Get /sys/time
      operationId: sysTimeGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysTime'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/uptime:
    get:
      tags:
        - /sys/uptime
      summary: Get /sys/uptime
      operationId: sysUptimeGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysUptime'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/version:
    get:
      tags:
        - /sys/version
      summary: Get /sys/version
      operationId: sysVersionGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysVersion'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters:
        - $ref: '#/components/parameters/maxDepthParam'
        - $ref: '#/components/parameters/filterParam'
  /sys/version/firmware:
    get:
      tags:
        - /sys/version/firmware
      summary: Get /sys/version/firmware
      operationId: sysVersionFirmwareGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysVersionFirmware'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/version/hardware:
    get:
      tags:
        - /sys/version/hardware
      summary: Get /sys/version/hardware
      operationId: sysVersionHardwareGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysVersionHardware'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
  /sys/version/kernel:
    get:
      tags:
        - /sys/version/kernel
      summary: Get /sys/version/kernel
      operationId: sysVersionKernelGet
      responses:
        '200':
          description: Normal response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    $ref: '#/components/schemas/sysVersionKernel'
                  error:
                    $ref: '#/components/schemas/ErrorString'
        '401':
          description: Unauthorized response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedObject'
      parameters: []
components:
  parameters:
    afterParam:
      name: after
      in: query
      description: >
        Limits the output to messages with a timestamp that is newer than

        the value specified by this parameter.  The value must be a

        decimal number and may include a fractional part.  The number is

        interpreted as seconds since the epoch.  For most logs, the epoch

        is the Unix epoch (i.e., seconds since the start of Jan 1, 1970

        UTC).  However, for the [kernel
        log](/webapi/4.6/openapi/log/logkernelget),

        the epoch is the time the meter was powered up (booted).
      schema:
        type: number
      example: 6.9801816
    maxDepthParam:
      name: max-depth
      in: query
      description: >-
        Limit output depth of the response.  See
        [Max-Depth](/webapi/4.6/openapi/glossary#section/Max-Depth).
      schema:
        type: integer
        minimum: 1
      example: 2
    filterParam:
      name: filter
      in: query
      description: >-
        Response filter string. See
        [Filter-Spec](/webapi/4.6/openapi/glossary#section/Filter-Spec).
      schema:
        type: string
      example: '{foo,bar}'
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      bearerFormat: JWT
  schemas:
    DigestObject:
      type: object
      properties:
        rlm:
          type: string
          description: The authentication realm as returned in a 401 response.
          example: eGauge Administration
        usr:
          type: string
          description: The username to authenticate with.
          example: owner
        nnc:
          type: string
          description: |
            The server nonce as returned in a 401 response.  Server
            nonces have a lifetime of about 1 minute.  This means a
            client has to be able to complete the digest login within a
            minute of receiving a 401 response. If it fails to do so,
            the server would reject an authentication request, even
            though the credentials may have been valid. If this were to
            happen, the client would simply have to redo the digest
            login with the new nonce. It is therefore advisable for the
            client to (temporarily) save the password the user entered,
            so that if the 1 minute lifetime were to expire, the client
            could reissue the request without having to prompt the user
            for credentials again.
          example: eyJ0eXAi...w5GCvM
        cnnc:
          type: string
          description: |
            A client-selected nonce.  This should be generated with a
            cryptographically strong random number generator.

            The purpose of the client-nonce is to prevent chosen
            plain-text attacks by a malicious server (or
            intermediary). Without the client nonce, a malicious server
            could try to guess the password by sending specially crafted
            nonce values. The client nonce prevents such attacks as long
            as the client uses new and cryptographically strong random
            value on each login attempt.
          example: 565ce9541eddec103347b5174704e188
        hash:
          type: string
          description: |
            The hash which proves that the client possesses
            the password of the specified username.  This must be
            calculated as the MD5 hash of the string obtained by
            concatenating *ha1*, a colon, *nnc*, a colon, and *cnnc*.
            *nnc* is the server nonce
            returned in a 401 response, *cnnc* is the client-selected
            nonce, and *ha1* is the string obtained by calculating the
            MD5 hash of the string obtained by concatenating the
            username *usr*, a colon, realm *rlm*, a colon, and
            password *pwd*.  More formally:

              > *ha1 = MD5(usr:rlm:pwd)* \
              > *hash = MD5(ha1:nnc:cnnc)*
          example: ce5e308c27da651964de14f65bd8b059
      required:
        - rlm
        - usr
        - nnc
        - cnnc
        - hash
    PasswordObject:
      type: object
      properties:
        pwd:
          type: string
          format: password
          description: The password to authenticate with.
          example: secrets-secrets
        rlm:
          type: string
          description: The authentication realm as returned in a 401 response.
          example: eGauge Administration
        usr:
          type: string
          description: The username to authenticate with.
          example: owner
      required:
        - rlm
        - usr
        - pwd
    ErrorString:
      type: string
      description: |
        A message describing the first error that occurred.  This
        member is present only if an error occurred.
      example: Error message (present if an error occurred).
    JWTObject:
      type: object
      properties:
        jwt:
          type: string
          format: jwt
          description: >-
            A JWT which can be used to authenticate accesses to protected
            resources.
          example: eyJ0eXAi...aQvQxY
        error:
          $ref: '#/components/schemas/ErrorString'
    ErrorObject:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/ErrorString'
    StatusObject:
      type: object
      properties:
        status:
          type: string
          description: A string describing the successful completion of an operation.
          example: OK
        error:
          $ref: '#/components/schemas/ErrorString'
    UnauthorizedObject:
      description: Unauthorized response.
      properties:
        rlm:
          type: string
          description: The authentication realm.
          example: eGauge Administration
        nnc:
          type: string
          description: >-
            The server nonce to use for obtaining JWT token via the digest
            protocol.
          example: eyJ0eXAi...w5GCvM
        error:
          type: string
          description: The reason the 401 response was returned.
          example: Authentication required.
    RightsObject:
      type: object
      properties:
        usr:
          type: string
          description: The username of the authenticated user.
          example: owner
        rights:
          description: |
            The array of rights the user possesses.  Possible rights
            are:

              1) `save`: The user has the right to change (save) the meter
              configuration.

              1) `ctrl`: The user has the right to perform control operations
              such as putting a device in a particular operational state
              (e.g., opening or closing a relay or setting the temperature
              on a thermostat).  The device being controlled may be a remote
              device attached to the meter implementing this API.
          type: array
          items:
            type: string
            enum:
              - save
              - ctrl
          example:
            - save
            - ctrl
    CaptureChannelInfoObject:
      type: object
      properties:
        channels:
          description: |
            Map of available (configured) channels.  For each channel
            number, the name name and the physical unit of the sample
            values are given.
          type: object
          patternProperties:
            ^[0-9]+$:
              type: object
              properties:
                name:
                  description: Channel name.
                  type: string
                unit:
                  description: Physical unit of channel values.
                  type: string
              required:
                - name
                - unit
          example:
            '0':
              name: L1
              unit: V
            '4':
              name: S1
              unit: A
        error:
          $ref: '#/components/schemas/ErrorString'
      required:
        - channels
    CaptureState:
      type: string
      description: |
        Current state of the capture interface:

          * `available`: The capture interface is idle and available for use.
          * `armed`: A capture has been initiated and the system is waiting
            for the trigger condition to be satisfied.
          * `capturing`: The capture interface is busy collecting samples.
          * `full`: The capture has finished and the sampled data is included
            in the response.
      enum:
        - available
        - armed
        - capturing
        - full
    CaptureCookieObject:
      type: object
      properties:
        state:
          $ref: '#/components/schemas/CaptureState'
        cookie:
          description: The token that identifies the newly started capture.
          type: integer
          minimum: 0
          maximum: 4294967295
        error:
          $ref: '#/components/schemas/ErrorString'
      required:
        - state
        - cookie
      example:
        state: armed
        cookie: 34551455
    CaptureProgressObject:
      type: object
      properties:
        state:
          $ref: '#/components/schemas/CaptureState'
        count:
          description: The number of samples acquired so far.
          type: integer
          minimum: 0
        max_count:
          description: The total number of samples being acquired.
          type: integer
          minimum: 1
        error:
          $ref: '#/components/schemas/ErrorString'
      required:
        - state
        - count
        - max_count
      example:
        state: capturing
        count: 235
        max_count: 600
    ForeverStamp:
      type: string
      description: >
        A [Unix timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp)
        expressed as a

        decimal string that may contain a fractional value for sub-second

        resolution.  A string is used here since most JSON libraries store

        numbers as IEEE-754 double-precision numbers and the 54-bit

        mantissa of that format may not be sufficient to accurately

        represent the timestamp.
      example: '1677523091.000900435'
    CaptureResultObject:
      type: object
      properties:
        state:
          $ref: '#/components/schemas/CaptureState'
        ts_freq:
          description: The frequency of the timestamp counter in hertz.
          type: integer
          minimum: 0
        first_sample:
          description: The absolute timestamp of the first sample.
          $ref: '#/components/schemas/ForeverStamp'
        ch_mask:
          description: |
            Bit mask of channels included in `r` member. Each array
            element contains 32 bits in little-endian word order.  Note
            that `r` may contain more channels than requested.
          type: array
          items:
            type: integer
            minItems: 1
            minimum: 0
            maximum: 4294967295
        r:
          description: |
            The sampled data in order of lowest-numbered channel to
            highest numbered channel.
          type: array
          items:
            description: The data sampled for one timestamp.
            type: object
            properties:
              t:
                description: |
                  Timestamp relative to previous sample in units of
                  timestamp ticks, ticking at the frequency given
                  by member `ts_freq`.
                type: integer
              d:
                description: Channel data acquired for this timestamp.
                type: array
                items:
                  type: number
                  minItems: 1
              trigger:
                description: |
                  This is `true` if the trigger occurred at the time
                  indicated by member `t`.
                type: boolean
            required:
              - t
              - d
        error:
          $ref: '#/components/schemas/ErrorString'
      required:
        - state
        - ts_freq
        - first_sample
        - ch_mask
        - r
      example:
        state: full
        ts_freq: 1000000
        first_sample: '1676992626.953'
        ch_mask:
          - 5
          - 0
        r:
          - t: 5300
            d:
              - 515.5
              - 1034.5
          - t: 42
            d:
              - -515.5
    TokenObject:
      properties:
        token:
          type: string
          minLength: 32
          description: |
            A status token.  This token is a hexadecimal string
            (typically 32 characters long) which can be used to check on
            the current status of a potentially long-running operation.
            The current status can be retrieved from URL
            [/sys/status/*token*](/webapi/4.6/openapi/sysstatustoken).
          example: 473c31462e62848b5352314dfc608669
        error:
          $ref: '#/components/schemas/ErrorString'
    VersionObject:
      properties:
        version:
          type: string
          description: The latest available firmware/kernel version.
          example: 4.4
        minimum:
          type: string
          description: |
            The minimum firmware/kernel version that should be used on the
            meter.  Older versions may not have the latest security fixes
            or other issues that could prevent proper operation of the
            meter.
          example: 4.1.2
        error:
          $ref: '#/components/schemas/ErrorString'
    CTidInfoObject:
      type: object
      description: Provides information about the sensor attached to a port.
      properties:
        error:
          $ref: '#/components/schemas/ErrorString'
        k:
          type: integer
          minimum: 0
          description: |
            The type of the sensor (kind).
        mfgid:
          type: integer
          minimum: 0
          description: |
            The numeric identifier of the manufacturer of the sensor.
        model:
          type: string
          description: |
            The model name of the sensor.
        params:
          type: object
          description: Sensor-type dependent parameters.
          patternProperties:
            ^[a-zA-Z_][a-zA-Z_0-9]+$:
              description: A sensor-type dependent parameter.
        polarity:
          type: string
          enum:
            - +
            - '-'
          description: |
            The polarity of the voltage that was used to read this info.
        port:
          type: integer
          minimum: 1
          description: |
            The port number this information is associated with.
        rload:
          type: number
          description: |
            The load resistance that was applied when characterizing the
            other parameters of this sensor.
        rsrc:
          type: number
          description: |
            The output resistance of the sensor.
        sn:
          type: integer
          minimum: 0
          maximum: 16777215
          description: |
            The serial number of the sensor.
        tid:
          type: integer
          minimum: 0
          description: |
            Transaction ID of the scan that initiated the reading of this
            information.
        ts:
          description: >
            The [Unix
            timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp) of
            when the

            information was scanned.
          $ref: '#/components/schemas/ForeverStamp'
        version:
          type: integer
          minimum: 0
          description: |
            The CTid protocol version that the sensor implements.
      required:
        - ts
        - tid
        - port
        - mfgid
        - model
        - sn
      example:
        ts: '1668455577'
        tid: 2008264382
        port: 2
        polarity: +
        version: 2
        mfgid: 0
        model: ERA
        sn: 2
        k: 2
        rsrc: 176
        rload: 10000000
        params:
          size: 106
          i: 2775
          v: 0.33333
          a: 0.45
          tv: 0
          ta: 0
          cal:
            '1.5':
              v: 0
              a: 0
            '5.0':
              v: 0
              a: 0
            '15.0':
              v: 0
              a: 0
            '50.0':
              v: 0
              a: 0
    EmptyObject:
      properties:
        error:
          $ref: '#/components/schemas/ErrorString'
    DeviceAttributesWithIndexObject:
      type: object
      properties:
        index:
          type: number
          description: |
            The optional index used to select a unique device in case the
            other attributes are ambiguous and match multiple devices.  If
            not specified explicitly, an index of 0 is implied.
        path:
          type: array
          items:
            type: string
          description: The unique path identifying the device.
        interface:
          type: array
          items:
            type: string
            description: |
              The interface name that must be supported by the target
              device.
      additionalProperties:
        patternProperties:
          ^[-_a-zA-Z0-9]*$:
            type: string
            description: |
              The value of the attribute.
    CtrlCallResponseObject:
      type: object
      properties:
        result:
          type: object
          properties:
            tid:
              type: integer
              format: int54
              minimum: 0
              description: |
                The transaction id that uniquely identifies the newly
                issued call.  This id can be used to fetch the result of
                the method call or to cancel the call.
        error:
          $ref: '#/components/schemas/ErrorString'
      example:
        result:
          tid: 4294967360
    CtrlCallResultObject:
      type: object
      properties:
        result:
          description: |
            The value returned by the method.  If the method returns
            no value, this member is not present.
        error:
          description: |
            If this string starts with `EAGAIN:`, the call is still in
            progress and the application should retry the same request at
            a later time.
          $ref: '#/components/schemas/ErrorString'
    CtrlDeviceResultObject:
      type: object
      properties:
        result:
          type: array
          description: The list of detected devices.
          items:
            type: object
            description: Detected device description.
            properties:
              path:
                type: array
                items:
                  type: string
                description: The unique path identifying the device.
              interface:
                type: array
                items:
                  type: string
                  description: The list interface names supported by the device.
            additionalProperties:
              patternProperties:
                ^[-_a-zA-Z0-9]*$:
                  type: string
                  description: |
                    The value of the attribute.
        error:
          $ref: '#/components/schemas/ErrorString'
    LocalApparentObject:
      type: object
      description: |
        Calculated apparent energy values (product of the normal values of two
        sensors).
      patternProperties:
        .*$:
          type: object
          description: |
            Apparent energy metrics.  The member names indicate the pair
            of sensors used to calculate the apparent energy.  For
            example, `S3*L3` is the apparent energy of sensor
            inputs `S3` and `L3`.  If the member name starts with a dash
            (`-`), it indicates that the produce was negated.
          properties:
            cumul:
              type: string
              description: |
                Accumulated apparent energy.  This is a signed 64-bit integer
                encoded as a decimal string.
              example: '-3452345'
            rate:
              type: number
              description: Rate of change of apparent energy (apparent power).
    LocalEnergyObject:
      type: object
      description: |
        Calculated (real) energy values (time-integral of the product of
        two sensors).
      patternProperties:
        ^.*$:
          description: |
            Real energy metrics. The member names indicate the pair of
            sensors used to calculate the energy.  For example, `S3*L3`
            is the energy of sensor inputs `S3` and `L3`.  If the
            member name starts with a dash (`-`), it indicates that the
            value of the first sensor was negated before
            time-integrating the product.
          type: object
          properties:
            cumul:
              type: string
              description: |
                Accumulated energy.  This is a signed 64-bit integer
                encoded as a decimal string.
              example: '-1234'
            rate:
              description: Rate of change of energy (power).
              type: number
    LocalStatsObject:
      type: object
      properties:
        dt_overflow:
          type: integer
        upos_overflow:
          type: integer
        zc_overflow:
          type: integer
        dt2_overflow:
          type: integer
        dt2_out_of_10percent_bounds:
          type: integer
        ring_buffer_overflows:
          type: integer
        dma_late:
          type: integer
        intgr_overflows:
          type: integer
    LocalValuesObject:
      type: object
      description: Sensor values.
      patternProperties:
        ^.*$:
          description: Sensor metric and/or type.
          type: object
          properties:
            type:
              description: >
                [Type code](/webapi/4.6/openapi/glossary#section/Type-Codes)
                indicating physical unit.
              type: string
            cumul:
              description: Accumulated sensor values.
              type: object
              properties:
                'n':
                  type: string
                  description: |
                    Accumulated normal value (usually RMS).  This is a
                    signed 64-bit integer encoded as a decimal string.
                  example: '42'
                m:
                  type: string
                  description: |
                    Accumulated mean (average) value.  This is a
                    signed 64-bit integer encoded as a decimal string.
                  example: '345'
                f:
                  type: string
                  description: |
                    Accumulated frequency [Hz·s].  This is a
                    signed 64-bit integer encoded as a decimal string.
                  example: '345'
            rate:
              description: Rate of change (current) values.
              type: object
              properties:
                'n':
                  description: Normal value (usually RMS value).
                  type: number
                m:
                  description: Mean (average) value.
                  type: number
                f:
                  description: Frequency [Hz].
                  type: number
    LocalObject:
      type: object
      properties:
        ts:
          description: |
            The realtime stamp of when the returned values where measured.
          $ref: '#/components/schemas/ForeverStamp'
        apparent:
          $ref: '#/components/schemas/LocalApparentObject'
        energy:
          $ref: '#/components/schemas/LocalEnergyObject'
        stats:
          $ref: '#/components/schemas/LocalStatsObject'
        values:
          $ref: '#/components/schemas/LocalValuesObject'
      required:
        - ts
      example:
        ts: '1579893622.000132'
        values:
          L1:
            rate:
              'n': 125.01754
              f: 60.0079803
          L3-L1:
            rate:
              'n': 0.631658375
              f: 59.9902229
          S15:
            rate:
              'n': 0.554819047
              f: 0
          S5:
            rate:
              'n': 3.87214255
              f: 0
        energy:
          S1*L1:
            rate: -145.436066
          S15*(L3-L1):
            rate: -0.000681963167
          '-S5*L1':
            rate: -0.846870422
    AlertLogObject:
      type: object
      properties:
        drops:
          type: integer
          minimum: 0
          description: |
            The number of alert entries that have been dropped from the log
            because a newer or higher priority alert had to be added when
            the log was full.
        log:
          type: array
          description: |
            The alert log.
          items:
            type: object
            properties:
              acked:
                type: boolean
                description: |
                  True if this alert has been acknowledged by the user.
              count:
                type: integer
                minimum: 1
                description: |
                  The number of times this alert has occurred.
              detail:
                type: string
                description: |
                  The reason the alert was triggered.
              first:
                description: |
                  The timestamp of when this alert occurred first.
                $ref: '#/components/schemas/ForeverStamp'
              id:
                type: integer
                minimum: 0
                description: |
                  An identifier that uniquely identifies this log entry.
              last:
                description: |
                  The timestamp of when this alert occurred last.
                $ref: '#/components/schemas/ForeverStamp'
              name:
                type: string
                description: |
                  The name of this alert.
              prio:
                type: integer
                minimum: 0
                maximum: 7
                description: |
                  The priority of the alert that resulted in this log entry.
                  Zero is the lowest priority, 7 the highest.
              reported:
                description: |
                  The timestamp of when this alert was last reported via email
                  or an alert service.
                  Only present if this alert has been reported.
                $ref: '#/components/schemas/ForeverStamp'
            required:
              - acked
              - count
              - detail
              - first
              - last
              - id
              - name
              - prio
          example:
            - id: 1804289524
              acked: false
              prio: 6
              count: 1
              first: '1684952450.123'
              last: '1684952450.123'
              name: Device up and running
              detail: software reset
            - id: 1804289527
              acked: true
              prio: 3
              count: 15
              first: '1684952489.205'
              last: '1685739471.800'
              name: Proxy-connection established
              detail: ''
              reported: '1685739472.250'
        error:
          $ref: '#/components/schemas/ErrorString'
    KernelLogObject:
      type: object
      properties:
        log:
          type: array
          description: |
            The kernel log, sorted from oldest to youngest.
          items:
            type: object
            properties:
              prio:
                type: integer
                minimum: 0
                description: |
                  The priority of the log message, 0 being lowest
                  priority and 7 being the highest.
              ts:
                type: number
                description: |
                  The timestamp of when the entry was added to
                  the log.  It is measured as [seconds since the meter was
                  booted](/webapi/4.6/openapi/sysuptime) (powered up).
              msg:
                type: string
                description: The log message.
          example:
            - prio: 6
              ts: '6.9801816'
              msg: '    6.980181] ehci-atmel: EHCI Atmel driver'
            - prio: 3
              ts: '6.9886136'
              msg: '    6.988613] atmel-ehci 500000.ehci: EHCI Host Controller'
        error:
          $ref: '#/components/schemas/ErrorString'
    LuaLogObject:
      type: object
      properties:
        log:
          type: array
          description: |
            The Lua output log, sorted from oldest to youngest.
          items:
            type: object
            properties:
              ts:
                description: >
                  The [Unix
                  timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp)
                  indicating

                  when the entry was added to the log.
                $ref: '#/components/schemas/ForeverStamp'
              msg:
                type: string
                description: The log message.
        error:
          $ref: '#/components/schemas/ErrorString'
      example:
        log:
          - ts: '1677872469.109779248'
            msg: 'Register cost script failed: Lua error: unknown register Grid.'
          - ts: '1677872470.100956573'
            msg: 'Tariff season: Winter'
    SystemLogObject:
      type: object
      properties:
        log:
          type: array
          description: |
            The system log, sorted from oldest to youngest.
          items:
            type: object
            properties:
              msg:
                type: string
                description: |
                  The syslog message.  The message starts with a
                  human-readable timestamp.  However, there is no
                  indication of the timezone in this timestamp and,
                  depending on the source of the message, the timestamp
                  may be in UTC or in the local timezone.
        error:
          $ref: '#/components/schemas/ErrorString'
      example:
        log:
          - msg: >-
              Aug 31 22:11:08 devname syslog.info syslogd started: BusyBox
              v1.26.2
          - msg: 'Aug 31 22:11:08 devname daemon.err statusd[427]: failed'
    ServiceProvidersObject:
      type: object
      properties:
        reply:
          type: object
          properties:
            providers:
              type: array
              description: |
                The list of available service providers.
              items:
                type: object
                description: |
                  A service provider.
                properties:
                  name:
                    type: string
                    description: |
                      The name of the service provider.
                  control:
                    type: string
                    description: >
                      The control URL through which a meter can sign up

                      for this service.  See [service

                      activation](/webapi/4.6/openapi/glossary#section/Service-Activation)
                      for

                      details.
                  version:
                    type: integer
                    minimum: 0
                    description: >
                      The version of the service activation protocol

                      supported by this service provider.  For the `push`

                      service, version 0 indicates that the provider uses

                      the HTML-form+POST protocol described in Section 5

                      of [the XML

                      API](https://www.egauge.net/media/support/docs/egauge-xml-api.pdf).

                      WebAPI only supports the [JSON activation

                      protocol](/webapi/4.6/openapi/glossary#section/Service-Activation). 
                      For the

                      `push` service, this is indicated by version 1.
                required:
                  - name
                  - control
    TariffProvidersObject:
      type: object
      properties:
        reply:
          type: object
          properties:
            providers:
              type: array
              description: |
                The list of available tariff service providers.
              items:
                type: object
                description: |
                  A tariff service provider.
                properties:
                  name:
                    type: string
                    description: |
                      The tariff name.
                  country:
                    type: string
                    description: |
                      The name of the country in which this tariff
                      provider operates.
                  utility:
                    type: string
                    description: |
                      The name of the service provider.
                  tariffs:
                    type: string
                    description: >
                      The URL of a
                      [Lua](/webapi/4.6/openapi/glossary#section/Lua-Scripts)
                      script

                      which calculates the applicable rate.
                  params:
                    type: array
                    description: >
                      An array of tariff parameters that need to be

                      defined for this tariff provider.  User interfaces

                      need to make sure that the listed parameters are

                      filled in by the user and then save them in the

                      corresponding
                      [server-storage](/webapi/4.6/openapi/configvar)

                      variables before activating the tariff.  The Lua

                      tariff script can then rely on these variables to

                      correctly calculate cost.


                      The parameters have the following meaning:

                        * `bill_contracted_demand`: If present,
                        [server-storage](/webapi/4.6/openapi/configvar) variable
                        `global.billing.bill_contracted_demand` needs to
                        be set up to indicated whether or not the contract
                        demand should be billed, regardless of the actual
                        demand.  If the value of this variable is the
                        string `true`, the contract demand needs to be
                        billed.

                        * `contract_demand`: If present,
                        [server-storage](/webapi/4.6/openapi/configvar) variable
                        `global.billing.contract_demand` needs to be set
                        up to indicate the demand (typically in kilowatts)
                        that was contracted from the utility.  This must
                        be a decimal number string.

                        * `start_day`: If present,
                        [server-storage](/webapi/4.6/openapi/configvar) variable
                        `global.billing.start_day` needs to be set up to
                        indicate the day of the month that the meter is
                        read.  This must be a decimal integer string in
                        the range from 1 to 31.

                        * `surcharges`: If present,
                        [server-storage](/webapi/4.6/openapi/configvar) variable
                        `global.billing.surcharges` needs to be set up to
                        indicate energy surcharges as a cost per unit
                        energy (e.g., dollars per kWh).  This must be a
                        decimal number string.

                        * `taxes`: If present,
                        [server-storage](/webapi/4.6/openapi/configvar) variable
                        `global.billing.taxes` needs to be set up to
                        indicate the percentage of taxes to add to the
                        calculated energy cost.  This must be a positive
                        decimal number string.
                    items:
                      type: string
                      enum:
                        - bill_contracted_demand
                        - contract_demand
                        - start_day
                        - surcharges
                        - taxes
    RegisterValue:
      type: string
      description: >
        The accumulated meter reading of the register as of the time given

        by the row's timestamp.  This is a signed 64-bit integer number,

        represented as a decimal string.  Multiplying this number by the

        [register type's
        quantum](/webapi/4.6/openapi/glossary#section/Type-Codes) yields the

        register's physical value in the unit given by the register type's

        rate unit, multiplied by seconds.  For example, for a register

        with type code `P` (power), the number would be the number of

        watt-seconds (W·s) of the register, since the quantum for type

        code `P` is 1 and the rate unit is W (watts).
    RegisterDemandObject:
      type: object
      properties:
        v:
          $ref: '#/components/schemas/RegisterValue'
        peak:
          type: object
          description: |
            This member is present if the demand could by calculated for
            this register.
          properties:
            rate:
              type: number
              description: >
                The demand of the register for the time period that ended

                at the row's timestamp.  The physical unit of the demand

                is the rate unit of the register's [type

                code](/webapi/4.6/openapi/glossary#section/Type-Codes).  For
                example, for a register

                with type code `P`, the unit would be W (watts).
            dt:
              type: string
              description: >
                The start time of the interval that yielded the demand

                rate.  This is expressed as a decimal number string.  The

                number must by subtracted from the row's timestamp to

                yield the [Unix
                timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp)
                of

                when the demand interval started.  For example, a value of

                `420.0` would indicate that the demand interval started

                420 seconds before the timestamp of this row.
              example: '420.0'
          required:
            - rate
            - dt
      required:
        - v
    RegisterRow:
      type: array
      description: |
        An array of register values.  The values are listed in order of
        increasing register index.  Only selected registers are present in
        this array (see query option `reg`).
      items:
        oneOf:
          - $ref: '#/components/schemas/RegisterValue'
          - $ref: '#/components/schemas/RegisterDemandObject'
    RegisterResponseObject:
      properties:
        error:
          $ref: '#/components/schemas/ErrorString'
        ranges:
          type: array
          description: |
            Each range returns a sequence of equi-distant rows.
            Each time range specified with the `time` query option
            results in one or more entries in the `ranges` array.
            In general, there is no easy way to tell when the
            ranges generated by one time-range switch to those
            generated by the next time-range.
          items:
            type: object
            properties:
              ts:
                description: |
                  The timestamp of the first row in member `rows`.
                $ref: '#/components/schemas/ForeverStamp'
              delta:
                type: number
                minimum: 0
                description: |
                  The number of seconds that elapsed between adjacent
                  entries in array `rows`.
              rows:
                type: array
                items:
                  $ref: '#/components/schemas/RegisterRow'
                description: |
                  An array of register rows ordered from youngest to
                  oldest.  The first row was measured at the timestamp
                  given by member `ts`.  Each subsequent row is `delta`
                  seconds older than its preceeding row.
        registers:
          type: array
          items:
            type: object
            properties:
              did:
                type: integer
                minimum: 0
                description: |
                  This member is present only for physical registers.  It
                  indicates the column number in which the database stores
                  the register value.  Each physical register has a
                  unique column number.  If a register is renamed, this
                  number remains the same.  On the other hand, if a
                  register is deleted and then another one is added back,
                  the new one may get assigned the column number of the
                  old, deleted register.
              formula:
                type: string
                description: >
                  This member is present for virtual registers but only if

                  query parameter `virtual=formula` is specified.  It

                  provides the

                  [formula](/webapi/4.6/openapi/glossary#section/Virtual-Register-Formulas)
                  that

                  is used to calculate the value of the virtual register.
              idx:
                type: integer
                minimum: 0
                description: |
                  The index of this register.  Register indices are used
                  to provide a compact way to specify sets of registers
                  (see query parameter `reg`).
              name:
                type: string
                description: The register name.
              rate:
                type: number
                description: |
                  The rate at which the value of the register is changing
                  as of the most recent measurement.  For example, for a
                  register that records energy used, the number reported
                  here is the current power consumption.
              type:
                type: string
                description: >
                  The [type
                  code](/webapi/4.6/openapi/glossary#section/Type-Codes) of the
                  register.
            required:
              - name
              - type
              - idx
        ts:
          description: |
            The realtime stamp of the most recent measurement.  This is
            the time the `rate` members returned in section `registers`
            were measured.
          $ref: '#/components/schemas/ForeverStamp'
      example:
        ts: '1678330813.000129799'
        registers:
          - name: use
            type: P
            idx: 0
            formula: +"Grid"+"Solar"
          - name: Grid
            type: P
            idx: 17
            did: 0
            rate: 1798
          - name: Solar
            type: P
            idx: 20
            did: 1
            rate: -4
        ranges:
          - ts: '1678298313.000129799'
            delta: 1
            rows:
              - - '117607805899'
                - '268487638108'
              - - '-224'
                - '-480'
              - - '-218'
                - '-481'
          - ts: '1678298040'
            delta: 60
            rows:
              - - '905'
                - '-3533'
              - - '7663'
                - '-34573'
              - - '12036'
                - '-35703'
              - - '8418'
                - '-36612'
              - - '6408'
                - '-37505'
    RegisterConditionObject:
      type: object
      properties:
        current:
          $ref: '#/components/schemas/ForeverStamp'
          description: |
            Current value of the time point specified in the condition.
        error:
          $ref: '#/components/schemas/ErrorString'
        result:
          type: boolean
          example: false
          description: |
            The value the condition evaluated to.  This will always be
            `false` as, otherwise, a normal register result would have
            been returned.
    SlowdIfaceDetailsAlphaTechnics:
      type: object
      description: |
        Details for devices that use the AlphaTechnics-proprietary protocol
        as implemented by the 5000 Series Precision Thermometers.
      properties:
        age:
          type: number
          description: |
            The number of seconds that have elapsed since the remote
            device readings were last updated.
          example: 2
        state:
          type: integer
          minimum: 0
          maximum: 5
          example: 5
          description: |
            The state of the remote device.  The values have the following
            meaning:

              * 0: The remote device is in an unknown state.  The meter
                will send a RESET command to put the remote device in a
                known state.

              * 1: The RESET command has been sent.  The meter will send a
                BEACON_OFF command next.

              * 2: The BEACON_OFF command has been sent.  The meter will
                send a BURST_MODE_OFF command next.

              * 3: The BURST_MODE_OFF command has been sent.  The meter
                will send a DETECT_PROBE command next.

              * 4: The DETECT_PROBE command has been sent.  The meter will
                send a LOAD_PROBE_CAL command next.

              * 5: The LOAD_PROBE_CAL command has been sent.  The remote
                device is in the final, operational state.
        channels:
          type: array
          description: |
            The list of temperature channels supported by the remote
            device.
          items:
            type: object
            properties:
              name:
                type: string
                example: temp0
                description: |
                  The name of this temperature sensor.  This is always of
                  the form "temp*N*", where *N* is an integer starting
                  at 0.
              unit:
                type: string
                enum:
                  - °C
                description: |
                  The physical unit of the temperature sensor.  This is
                  always degree Celsius.
                example: °C
              sub_id:
                type: integer
                minimum: -1
                example: 7
                description: |
                  The subscription index of this channel.  If -1, the channel is
                  not being recorded by the meter.
              ts:
                type: string
                example: 1708626111
                description: |
                  The timestamp of when the value of this channel was last
                  updated.
                $ref: '#/components/schemas/ForeverStamp'
              val:
                type: number
                example: 120.356
                description: |
                  The current value of this channel.
    SlowdIfaceDetailsModbus:
      type: object
      description: |
        Details for devices that use the Modbus protocol.
      properties:
        dev_addr:
          type: integer
          minimum: 1
          maximum: 247
          description: |
            The Modbus unit number of the remote device.
          example: 1
        dev_type:
          type: string
          description: |
            The name of the Modbus address map being used for the remote
            device.  If this has the special value `sunspec`, the
            address map is detected automatically using the SunSpec
            protocol.
        online:
          type: boolean
          description: |
            Indicates whether communication with the remote device appears
            to be working correctly.
        elements:
          type: array
          description: |
            The list of Modbus elements available on the remote device.
          items:
            type: object
            description: |
              The description and status of a Modbus element (a.k.a,
              "register").
            properties:
              name:
                type: string
                description: |
                  The symbolic name of the element.
                example: voltage
              unit:
                type: string
                description: |
                  The physical unit of the value measured by the element.
                example: V
              sub_id:
                type: integer
                minimum: -1
                example: 7
                description: |
                  The subscription index of this channel.  If -1, the channel is
                  not being recorded by the meter.
              ts:
                type: string
                example: 1708626111
                description: |
                  The timestamp of when the value of this channel was last
                  updated.
                $ref: '#/components/schemas/ForeverStamp'
              val:
                type: number
                example: 120.356
                description: |
                  The current value of this channel.
    SlowdOfflineStatus:
      type: object
      description: |
        If the remote device is inaccessible (offline), this object
        provides some detail about how long the device has been and will
        remain in that state.
      properties:
        since:
          type: integer
          minimum: 0
          example: 3105810
          description: |
            The time at which the remote device was detected to be
            offline.  This time is reported as [number of seconds since the
            meter was booted last](/webapi/4.6/openapi/sysuptime).
        timeout:
          type: integer
          minimum: 0
          example: 5
          description: |
            The number of seconds for which the device will be considered
            offline without further checking.  That is, at time `since` +
            `timeout` (or as soon as possible afterwards), the meter will
            check on the device again and hopefully bring it back online.
    SlowdIfaceDetailsPowerOne:
      type: object
      description: |
        Details for remote devices which use the PowerOne proprietary
        protocol defined by Magnetek document "Aurora RS485 Communication
        Protocol v 5.0.7" and "Aurora Inverter Series Communication
        Protocol - rel4.3".
      properties:
        target_addr:
          type: integer
          minimum: -1
          maximum: 249
          description: |
            The serial (RS485) address of the remote device to connect to
            or -1 if a scan should be performed to automatically detect
            all compatible devices.
        check_addr:
          minimum: 0
          maximum: 250
          description: |
            If `target_addr` is -1, this specifies the serial (RS485)
            address that is to be checked next.  If 250, then scan for
            compatible devices is complete.
        devs:
          type: array
          description: |
            The list of remote devices connected through this interface.
          items:
            type: object
            description: The description and status of a remote device.
            properties:
              age:
                type: number
                description: |
                  The number of seconds that have elapsed since a channel
                  value was last updated for this device.
                example: 3
              ser_addr:
                type: integer
                minimum: -2
                maximum: 249
                description: |
                  The serial (RS485) address of this remote device.  A value
                  of -1 indicates that the address is not known yet.  A
                  value of -2 indicates that the meter should assign a new,
                  unique, address to this device.
              sn:
                type: integer
                description: |
                  The serial number of the remote device.
              offline:
                $ref: '#/components/schemas/SlowdOfflineStatus'
              channels:
                type: array
                description: |
                  The channels (a.k.a., "registers") supported by this
                  remote device.
                items:
                  type: object
                  properties:
                    name:
                      type: string
                      description: |
                        The symbolic name of the channel.
                      example: Grid_Voltage
                    unit:
                      type: string
                      description: |
                        The physical unit of the value measured by the channel.
                      example: V
                    sub_id:
                      type: integer
                      minimum: -1
                      example: 7
                      description: >
                        The subscription index of this channel.  If -1, the
                        channel is

                        not being recorded by the meter.
                    ts:
                      type: string
                      example: 1708626111
                      description: |
                        The timestamp of when the value of this channel was last
                        updated.
                      $ref: '#/components/schemas/ForeverStamp'
                    val:
                      type: number
                      example: 120.356
                      description: |
                        The current value of this channel.
    SlowdIfaceDetailsSCPI:
      type: object
      description: |
        Details for remote devices which use the Standard Commands for
        Programmable Instruments (SCPI) protocol.
      properties:
        mfg:
          type: string
          example: eGauge
          description: |
            The name of the manufacturer of the remote device.
        model:
          type: string
          example: PRM3
          description: |
            The model name of the remote device.
        channels:
          type: array
          description: |
            The channels (a.k.a., "registers") supported by this remote
            device.
          items:
            type: object
            properties:
              name:
                type: string
                description: |
                  The symbolic name of the channel.
                example: relay
              unit:
                type: string
                description: |
                  The physical unit of the value measured by the channel.
                  This member is present only for channels that measure
                  a physical quantity.
              sub_id:
                type: integer
                minimum: -1
                example: 7
                description: |
                  The subscription index of this channel.  If -1, the channel is
                  not being recorded by the meter.
              ts:
                type: string
                example: 1708626111
                description: |
                  The timestamp of when the value of this channel was last
                  updated.
                $ref: '#/components/schemas/ForeverStamp'
              val:
                type: number
                example: 120.356
                description: |
                  The current value of this channel.
    SlowdIfaceDetailsSMA:
      type: object
      description: |
        Details for remote devices which use the proprietary SMANet
        protocol as described by "SMA Data Specification Version 1.25
        Definition and Description of the Data Telegram Format and
        Communication Protocol".
      properties:
        my_addr:
          type: integer
          description: |
            The address of the meter on the SMANet bus.  Since the meter is
            always the controller, this is always 1.
          example: 1
        iface_state:
          type: integer
          minimum: 0
          maximum: 3
          description: |
            The current state of the SMANet bus.  The values have the
            following meaning:

              * 0: SMANet is being started.  This involves detecting all
                compatible devices that are connected to the same RS485
                bus.

              * 1: SMANet has completed auto discovery of compatible
                devices and is in an operational state.

              * 2: The values of a remote device are being read.

              * 3: The capabilities of a remote device are being queried.
        read_state:
          type: integer
          minimum: 0
          maximum: 2
          description: |
            The current state of the telegram reader.  The values have the
            following meaning:

              * 0: The reader is scanning for a start-of-frame byte (hex
                code 7E).

              * 1: The body of a telegram is being read.

              * 2: An escaped character is being read.
        devs:
          type: array
          description: |
            The list of discovered SMANet devices.
          items:
            type: object
            description: |
              The description and state of an SMANet device.
            properties:
              ser_addr:
                type: integer
                minimum: 2
                maximum: 255
                description: |
                  The SMANet (RS485) address of the remote device.
              sn:
                type: integer
                minimum: 0
                description: |
                  The serial number of the remote device.
                example: 13590
              channels:
                type: array
                description: |
                  The channels (a.k.a., "registers") supported by this
                  remote device.
                items:
                  type: object
                  description: |
                    The description and state of a channel.
                  properties:
                    name:
                      type: string
                      description: |
                        The symbolic name of the channel.
                      example: relay
                    unit:
                      type: string
                      description: |
                        The physical unit of the value measured by the channel.
                        This member is present only for channels that measure
                        a physical quantity.
                    sub_id:
                      type: integer
                      minimum: -1
                      example: 7
                      description: |
                        The subscription index of this channel.  If -1,
                        the channel is not being recorded by the meter.
                    ts:
                      type: string
                      example: 1708626111
                      description: |
                        The timestamp of when the value of this channel was last
                        updated.
                      $ref: '#/components/schemas/ForeverStamp'
                    val:
                      description: |
                        The current value of this channel.
                      oneOf:
                        - type: number
                          example: 120.356
                        - type: string
              offline:
                $ref: '#/components/schemas/SlowdOfflineStatus'
    SlowdIfaceDetailsSony:
      type: object
      description: |
        Details for remote devices which are compatible with Sony Energy
        Devices Corp "IJ1004C / IJ5001C Communications Specifications",
        Spec. No. P5-9 027 Ver. 2.
      properties:
        age:
          type: number
          description: |
            The number of seconds that have elapsed since a channel
            value was last updated for this device.
          example: 1
        ctrl_addr:
          type: integer
          minimum: 0
          maximum: 15
          example: 7
          description: |
            The serial bus address of the remote device.
        sn:
          type: integer
          minimum: 0
          example: 13095
          description: |
            The serial number of this remote device.
        channels:
          type: array
          description: |
            The channels (a.k.a., "registers") supported by this remote
            device.
          items:
            type: object
            properties:
              name:
                type: string
                description: |
                  The symbolic name of the channel.
                example: Capacity_Remaining
              unit:
                type: string
                description: |
                  The physical unit of the value measured by the channel.
                  This member is present only for channels that measure
                  a physical quantity.
                example: Ah
              sub_id:
                type: integer
                minimum: -1
                example: 7
                description: |
                  The subscription index of this channel.  If -1, the channel is
                  not being recorded by the meter.
              ts:
                type: string
                example: 1708626111
                description: |
                  The timestamp of when the value of this channel was last
                  updated.
                $ref: '#/components/schemas/ForeverStamp'
              val:
                type: number
                example: 120.356
                description: |
                  The current value of this channel.
        offline:
          $ref: '#/components/schemas/SlowdOfflineStatus'
    SlowdStatusObject:
      type: object
      properties:
        conns:
          type: array
          description: |
            The list of active connections slowd currently has open.
          items:
            type: object
            properties:
              addr:
                type: string
                description: |
                  The address of the remote device.  If this is
                  `cli-conn`, the connection is to the command-line
                  interface of slowd and not to an actual remote device.
                  Similarly, if the value is `resolver`, it indicates that
                  the connection is used for resolving host names.
                example: USB1
              fd:
                type: integer
                minimum: -1
                description: |
                  The file-descriptor slowd is using to communicate with
                  the remote device.  If -1, the connection is closed.
                example: 9
              next_tick:
                type: integer
                description: |
                  The number of milliseconds that have to elapse before
                  this connection is checked again.
                example: 619
              readable:
                type: boolean
                description: |
                  Indicates whether the connection to the remote
                  device has pending data that needs to be read by slowd.
                example: false
              refcnt:
                type: integer
                minimum: 0
                example: 2
                description: |
                  The number of references that exist to this connection.
                  The connection is closed when this number reaches zero.
              writable:
                type: boolean
                description: |
                  Indicates whether the connection to the remote
                  device can accept data from slowd.
              event_mask:
                type: integer
                description: |
                  A bit-mask indicating the connection events that slowd is
                  watching for.  The bits have the following meaning:

                    * Bit 0: Watching for the connection to become readable.
                    * Bit 1: Watching for the connection to become writable.
                    * Bit 3: Watching for the connection to have errors.
                    * Bit 4: Watching for the connection to close.
                    * Bit 13: Watching for the connection to close for reading.
                example: 8193
              serial:
                type: object
                description: |
                  The serial port communication parameters used on the
                  connection.
                properties:
                  baud:
                    type: integer
                    minimum: 50
                    maximum: 230400
                    description: |
                      The baud-rate used by the serial port.
                    example: 19200
                  parity:
                    description: |
                      The parity scheme used by the serial port.  `n` for
                      no parity, `e` for even parity, and `o` for odd
                      parity.
                    enum:
                      - 'n'
                      - o
                      - e
                    example: 'n'
                  size:
                    type: integer
                    minimum: 5
                    maximum: 8
                    description: |
                      The number of data bits per serial port character.
                  stop:
                    type: integer
                    minimum: 1
                    maximum: 2
                    description: |
                      The number of stop bits used by the serial port.
              stats:
                type: object
                description: |
                  This object provides some basic statistics on the
                  communication behavior of the connection.
                properties:
                  bad:
                    type: integer
                    minimum: 0
                    description: |
                      The number of bad packets received on this
                      connection.  "Bad" packets are malformed in some
                      way, e.g., they may be incomplete or have an
                      incorrect checksum.
                    example: 13
                  good:
                    type: integer
                    minimum: 0
                    description: |
                      The number of good packets received on this
                      connection.
                    example: 3245
                  timedout:
                    type: integer
                    minimum: 0
                    description: |
                      The number of packets sent that timed out, i.e.,
                      that have not been acknowledged by the remote device
                      within a connection-specific period of time.
                    example: 1
                  rx:
                    type: integer
                    minimum: 0
                    description: |
                      The number of bytes that have been received from the
                      remote device.
                    example: 34598
                  tx:
                    type: integer
                    minimum: 0
                    description: |
                      The number of bytes that have been sent to the
                      remote device.
                    example: 23498
              ifaces:
                type: array
                description: |
                  The list of interfaces which use this connection.
                items:
                  type: object
                  description: |
                    The parameters and status of an interface.  Depending
                    on the scheme being used, the interface may represent
                    a single remote device or several remote devices.
                  properties:
                    auto_attached:
                      type: boolean
                      description: |
                        Indicates whether the interface was automatically
                        attached to slowd when a device was discovered.
                        This can happen for USB devices, e.g., to make
                        their functionality available to the [control
                        service](/webapi/4.6/openapi/ctrl).
                    name:
                      type: string
                      description: |
                        The name of this interface as assigned by the
                        user.
                    next_tick:
                      type: integer
                      description: |
                        The number of milliseconds that have to elapse before
                        this interface is checked again.
                      example: 145
                    refcnt:
                      type: integer
                      minimum: 0
                      example: 2
                      description: |
                        The number of references that exist to this interface.
                        The interface is closed when this number reaches zero.
                    scheme:
                      type: string
                      enum:
                        - alphatechnics
                        - modbus
                        - po
                        - scpi
                        - sma
                        - sony
                      description: >
                        The scheme (protocol) that it being used by this

                        interface.  See [Link Types, item

                        `slowd`](/webapi/4.6/openapi/glossary#section/Link-Types)
                        for additional

                        information.
                    details:
                      description: |
                        The contents of this object is specific to the
                        scheme (protocol) in use.  It provides additional
                        information about the state of the remote
                        device(s) managed by this interface.
                      oneOf:
                        - $ref: '#/components/schemas/SlowdIfaceDetailsAlphaTechnics'
                        - $ref: '#/components/schemas/SlowdIfaceDetailsModbus'
                        - $ref: '#/components/schemas/SlowdIfaceDetailsPowerOne'
                        - $ref: '#/components/schemas/SlowdIfaceDetailsSCPI'
                        - $ref: '#/components/schemas/SlowdIfaceDetailsSMA'
                        - $ref: '#/components/schemas/SlowdIfaceDetailsSony'
    StoreContentObject:
      type: object
      properties:
        name:
          type: string
          description: |
            The name of the section being read.
        content:
          description: |
            The content as name/value pairs.
          patternProperties:
            ^[-a-zA-Z%_/]*$:
              type: string
              description: |
                The value of the variable.  Interpretation of this value
                is left to the applications that use it.  By convention,
                this is often a URL-encoded string or a JSON-encoded
                value.
    StoreVariableUpdates:
      type: object
      patternProperties:
        ^[-a-zA-Z%_/]*$:
          type:
            - string
            - 'null'
          description: |
            The new value of the variable.  A `null` value deletes the
            variable.  Any other value either creates a new variable or
            updates an existing variable with the specified value.

            Interpretation of this value is left to the applications that
            use it.  By convention, this is often a URL-encoded string or
            a JSON-encoded value.
    StoreSingleVariableUpdate:
      type: object
      properties:
        '':
          type:
            - string
            - 'null'
          description: |
            The new value of the variable.  A `null` value deletes the
            variable.  Any other value either creates a new variable or
            updates an existing variable with the specified value.

            Interpretation of this value is left to the applications that
            use it.  By convention, this is often a URL-encoded string or
            a JSON-encoded value.
    configBacnetServerBipPort:
      type: integer
      minimum: 0
      maximum: 65535
      example: 47808
      description: >
        The IPv4 port number used by the server when `bip` is enabled in

        [/config/bacnet/server/enable](/webapi/4.6/openapi/configbacnetserverenable).

        The default value is 0xBAC0 (47808).
    configBacnetServerBip:
      type: object
      properties:
        port:
          $ref: '#/components/schemas/configBacnetServerBipPort'
      description: |
        The [BACnet](https://bacnet.org/) over
        [IPv4](https://en.wikipedia.org/wiki/Internet_Protocol_version_4)
        configuration.
    configBacnetServerEnableItem:
      type: string
      enum:
        - ethernet
        - bip
        - mstp
      description: |
        The name of an enabled BACnet protocol.  Possible values are:

          * `ethernet`: BACnet over raw Ethernet.

          * `bip`: BACnet over the UDP/IP.

          * `mstp`: BACnet over MS/TP (RS-485).
    configBacnetServerEnable:
      type: array
      items:
        $ref: '#/components/schemas/configBacnetServerEnableItem'
      description: |
        The list of BACnet protocols that are enabled.  An empty list
        indicates that the BACnet server is disabled.  The meter is
        currently restricted to supporting a single protocol at a time, so
        this array may have at most one element.
    configBacnetServerEpochRelative:
      type: boolean
      description: >
        If true, the BACnet server reports cumulative values relative to

        the [meter epoch](/webapi/4.6/openapi/configdbepoch).  If false, raw
        absolute

        values are reported relative to when the meter was manufactured.
    configBacnetServerId:
      type: integer
      minimum: 0
      maximum: 4194303
      description: |
        The object id of the BACnet server.
    configBacnetServerMstpMac:
      type: integer
      minimum: 0
      maximum: 127
      description: |
        The MS/TP address of the meter's BACnet server.
    configBacnetServerMstpMaxMac:
      type: integer
      description: |
        The maximum address used by any device connected to the same MS/TP
        network as this meter.  A value of 127 is safe, but setting it to
        the lowest address in use significantly increases MS/TP
        performance.
    configBacnetServerMstpPort:
      type: string
      example: USB1:19200/8n1
      description: >
        The [serial-port](/webapi/4.6/openapi/glossary#section/Serial-Ports) to
        use for the MS/TP

        protocol.
    configBacnetServerMstp:
      type: object
      properties:
        mac:
          $ref: '#/components/schemas/configBacnetServerMstpMac'
        max-mac:
          $ref: '#/components/schemas/configBacnetServerMstpMaxMac'
        port:
          $ref: '#/components/schemas/configBacnetServerMstpPort'
      minimum: 0
      maximum: 127
      example: 1
      description: >
        The BACnet over MS/TP configuration.  This is used only if the

        `mstp` protocol is
        [enabled](/webapi/4.6/openapi/configbacnetserverenable).
    configBacnetServer:
      type: object
      properties:
        bip:
          $ref: '#/components/schemas/configBacnetServerBip'
        enable:
          $ref: '#/components/schemas/configBacnetServerEnable'
        epoch-relative:
          $ref: '#/components/schemas/configBacnetServerEpochRelative'
        id:
          $ref: '#/components/schemas/configBacnetServerId'
        mstp:
          $ref: '#/components/schemas/configBacnetServerMstp'
      description: |
        The [BACnet](https://bacnet.org/) server configuration.
    configBacnet:
      type: object
      properties:
        server:
          $ref: '#/components/schemas/configBacnetServer'
      description: |
        The [BACnet](https://bacnet.org/) configuration.
    configDbEpoch:
      type: string
      example: '1675276020'
      description: >
        The time when the meter started recording data.  This is a decimal

        [Unix timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp)
        string.


        The relevance of this resource is that other services in this API

        by default return accumulated register values relative to this

        time so that, at the time of the epoch, they all read 0.  Changing

        this value therefore changes the values reported by those

        services.  Similarly, user interfaces that use this API generally

        do not present data before the epoch, effectively providing a

        limit to the history visible to the user.


        Writing this resource does not change the data stored in the

        database.  In other words, the epoch generally can freely be moved

        forward or backward in time.  The only constraint is that the new

        epoch does have to be within the time range covered by the

        database.  If a future time is specified, it will automatically be

        capped to the time of the most recent row in the database.  If a

        time is specified that is older than the oldest row in the

        database, an error object is returned.  If this error occurs,

        check the device time ([/sys/time](/webapi/4.6/openapi/systime)) and
        database

        configuration ([/sys/db](/webapi/4.6/openapi/sysdb)) to confirm that
        they have

        the expected values.
    configDb:
      type: object
      properties:
        epoch:
          $ref: '#/components/schemas/configDbEpoch'
      description: |
        The database configuration.
    configDisplayBacklightBrightness:
      type: integer
      minimum: 0
      maximum: 255
      description: |
        The brightness of the backlight.  Zero is darkest (backlight off),
        255 is the brightest.
    configDisplayBacklightDuration:
      type: integer
      format: int32
      minimum: -1
      maximum: 2147483647
      example: 60
      description: |
        The number of seconds the backlight should remain on after the
        last activation of the display navigation buttons.  Zero means the
        backlight is always off.  The special value -1 indicates that the
        backlight remains on at all times.
    configDisplayBacklight:
      type: object
      properties:
        brightness:
          $ref: '#/components/schemas/configDisplayBacklightBrightness'
        duration:
          $ref: '#/components/schemas/configDisplayBacklightDuration'
      description: |
        The backlight configuration of the display.
    configDisplayContrast:
      type: integer
      minimum: 0
      maximum: 127
      example: 65
      description: |
        The LCD contrast Zero means no contrast (display is blank), 127
        means maximum contrast (display is all black).  A value of around
        65 usually provides a good contrast.
    configDisplayFontset:
      type: string
      enum:
        - small
        - normal
        - large
      example: normal
      description: |
        The fontset to use for the display.  Possible values are:

          * `small`: Smaller than the `normal` fontset, this is a lower
            quality fontset that can fit more text on the display.

          * `normal`: This fontset provides a good tradeoff between font
            quality and the amount of text that can fit on the display.
            This should work well for languages with relatively simple
            characters, such as English or French.

          * `large`: This fontset should work well for languages with more
            complex characters such as Korean or Chinese.

        **Note** The value of this resource needs to be localized
        (translated) before presenting it to a user.
    configDisplayScreenRegistersName:
      type: string
      example: ic
      description: |
        Specifies how the named register is to be displayed.
        The following characters may appear in this string:

          * `i`: The instantaneous (rate of change) value of the register
            should be displayed.

          * `c`: The accumulated (cumulative) value of the register should
          be displayed.

        Note that an empty string imples that the register is not
        displayed at all

        For the special keyword `.default`, this establishes how registers
        should be displayed that are not mentioned otherwise.
    configDisplayScreenRegisters:
      type: object
      additionalProperties:
        x-additionalPropertiesName: name
        $ref: '#/components/schemas/configDisplayScreenRegistersName'
      description: The register screen configuration.
    configDisplayScreen:
      type: object
      properties:
        registers:
          $ref: '#/components/schemas/configDisplayScreenRegisters'
      description: Screen configurations.
      example:
        use: ic
        gen: ic
        Grid: ic
        Solar: ic
        temp: i
        .default: ''
    configDisplayOrientation:
      type: integer
      minimum: 0
      maximum: 359
      example: 90
      description: |
        The angle in degrees by which the orientation of the display
        should be rotated in the counterclockwise direction.  An angle of
        0 degree results in the display being aligned with the label on
        the meter.  The value of this resource is rounded to an integer
        multiple of 90 degrees.
    configDisplay:
      type: object
      properties:
        backlight:
          $ref: '#/components/schemas/configDisplayBacklight'
        contrast:
          $ref: '#/components/schemas/configDisplayContrast'
        fontset:
          $ref: '#/components/schemas/configDisplayFontset'
        screen:
          $ref: '#/components/schemas/configDisplayScreen'
        orientation:
          $ref: '#/components/schemas/configDisplayOrientation'
      description: |
        The display (LCD) configuration of the meter.
    configLanguageCode:
      type: string
      example: en_GB
      description: |
        The code of the preferred language for the meter.  When the meter
        needs to generate a message (e.g., as a result of an alert
        triggering), it will generate the message in the language selected
        by this code whenever possible.  The code should be in a format
        acceptable to the
        [`setlocale()`](https://linux.die.net/man/3/setlocale) function.
        Language codes currently supported include:

          * `de`: German.

          * `en`: US English (defaults to 12-hour clock and imperial units).

          * `en_GB`: British English (defaults to 24-hour clock and metric units).

          * `es`: Spanish.

          * `fr`: French.

          * `he`: Hebrew.

          * `it`: Italian.

          * `ko`: Korean.

          * `pl`: Polish.

          * `zh_Hans`: Simplified Chinese (Mandarin).

          * `zh_Hant`: Traditional Chinese (Cantonese).

        See [eGauge Internationalization
        Instructions](https://www.egauge.net/i18n/) for information on
        adding other languages or improving an existing translation.

        **Note** When accessing the meter from a web browser, the value of
        this resource has normally no effect as the user interface is
        presented in the language selected by the browser.
    configLocalSensorNameChannelBias:
      type: number
      example: 0
      description: |
        The bias value (offset) to be added when converting an A/D
        converter sample to a physical quantity.
    configLocalSensorNameChannelMode:
      type: string
      enum:
        - 'off'
        - normal
        - integrate
      example: normal
      description: |
        The channel's acquisition mode.  Possible values are:

          * `integrate`: The sample values are integrated over time.

          * `normal`: The sensor is operating in normal mode.

          * `off`: The sensor is not in use.
    configLocalSensorNameChannelScale:
      type: number
      example: -206.66
      description: |
        The scale value by which an A/D converter sample is to be
        divided to convert a sample to a physical quantity (the bias
        value is added to the sample before the scale is applied).
    configLocalSensorNameChannel:
      type: object
      properties:
        bias:
          $ref: '#/components/schemas/configLocalSensorNameChannelBias'
        mode:
          $ref: '#/components/schemas/configLocalSensorNameChannelMode'
        scale:
          $ref: '#/components/schemas/configLocalSensorNameChannelScale'
      description: |
        The A/D converter channel configuration of the named sensor.
    configLocalSensorNameError:
      type: number
      example: 0
      description: |
        The attached sensor's relative output error (ratio error) in
        percent. For example, a value of 2.5 would indicate that the
        sensor is reading 2.5% higher than nominal. This value is ignored
        if member `model` is `CTid`.
    configLocalSensorNameModel:
      type: string
      example: ML-SCT-019-0100
      description: >
        The model name of the attached sensor. If this is `CTid`, a

        CTid®-enabled sensor is attached and the
        [/ctid](/webapi/4.6/openapi/ctid)

        service should be used to obtain details about the attached

        sensor.
    configLocalSensorNamePhase:
      type: string
      example: 2.59@3:2.34@6:2.06@15:1.89@100
      description: |
        The phase (timing) adjustment required by the attached sensor.
        This value is ignored if member `model` is `CTid`.

        The format of this string is a colon-separated list of phase- and
        amplitude-level pairs of the form `p@l`, where `p` is the
        phase-adjustment in degrees at 60Hz, and `l` is a percentage of
        the sensor's full scale value.  For example, for a 100A current
        sensor, the phase string `1@1:0.75@50` would indicate that the
        phase needs to be adjusted by 1 degree at 1A and by 0.75 degrees
        at 50A.
    configLocalSensorName:
      type: object
      properties:
        channel:
          $ref: '#/components/schemas/configLocalSensorNameChannel'
        error:
          $ref: '#/components/schemas/configLocalSensorNameError'
        model:
          $ref: '#/components/schemas/configLocalSensorNameModel'
        phase:
          $ref: '#/components/schemas/configLocalSensorNamePhase'
      description: |
        The sensor configuration.
    configLocalSensor:
      type: object
      additionalProperties:
        x-additionalPropertiesName: name
        $ref: '#/components/schemas/configLocalSensorName'
      example:
        L1:
          channel:
            bias: 0
            mode: normal
            scale: -74.013999939
          error: 0
          model: '1:1'
          phase: ''
        S1:
          channel:
            bias: 0
            mode: normal
            scale: -206.659896851
          error: 0
          model: ML-SCT-019-0100
          phase: 2.96@1.5:2.59@3:2.34@6:2.06@15:1.82@50:1.89@100
        S2:
          channel:
            bias: 0
            mode: normal
            scale: -206.659896851
          error: 0
          model: ML-SCT-019-0100
          phase: 2.96@1.5:2.59@3:2.34@6:2.06@15:1.82@50:1.89@100
      description: |
        The sensor configurations.
    configLocalGain:
      type: string
      enum:
        - normal
        - high
      description: |
        The amplifier gain to use for the local sensor inputs (`S1` and
        up).  All meters support the value `normal`.  Model EG4*xxx* meters
        also support the value `high`. This gain increases the input gain
        to approximately ten times of the normal gain.  That is, the
        sensors are approximately 10 times more sensitive than normal, at
        the expense of having a 10 times smaller range.
    configLocalUpdateInterval:
      type: integer
      example: 500
      description: |
        The interval in milliseconds between measurement updates.  The
        default is 1000ms (one update per second) but some meters support
        smaller values.  The rate of change values are averaged over this
        period of time.
    configLocal:
      type: object
      properties:
        sensor:
          $ref: '#/components/schemas/configLocalSensor'
        gain:
          $ref: '#/components/schemas/configLocalGain'
        update-interval:
          $ref: '#/components/schemas/configLocalUpdateInterval'
      description: |
        The configuration of directly attached sensors.
    configLocationLatitude:
      type: number
      example: 36.035
      description: |
        The latitude of the meter's location in degrees.  Positive values
        are north of the equator, negative values south of it.
    configLocationLongitude:
      type: number
      example: -115.46639
      description: |
        The longitude of the meter's location in degrees.  Positive values
        are east of the prime meridian, negative values are west of it.
    configLocation:
      type: object
      properties:
        latitude:
          $ref: '#/components/schemas/configLocationLatitude'
        longitude:
          $ref: '#/components/schemas/configLocationLongitude'
      description: |
        The geographic location of the meter.
    configLogSystemSize:
      type: integer
      example: 131072
      description: |
        The size of the system log buffer in bytes.  When writing this
        value, it is rounded up to the nearest kilobyte boundary.  A size
        of 0 disables the system log.  Otherwise, the size is rounded up
        to a minimum of 4KiB.
    configLogSystem:
      type: object
      properties:
        size:
          $ref: '#/components/schemas/configLogSystemSize'
      description: |
        The system log configuration.
    configLog:
      type: object
      properties:
        system:
          $ref: '#/components/schemas/configLogSystem'
      description: |
        The log configuration.
    configLuaScriptAlertd:
      type: string
      example: print("this is the alert script");
      description: |
        The Lua script loaded by alert reporting daemon.  This script can
        be used to define helper functions that can then be called from
        the alert conditions.

        If loading this script takes longer than 15 seconds or evaluating
        any custom alert condition takes longer than 60 seconds, an alert
        is raised.
    configLuaScriptTariff:
      type: string
      example: print("this is the tariff script");
      description: >
        The Lua script used to calculate energy cost.  This script can be

        modified only if [server-storage](/webapi/4.6/openapi/configvar)
        variable

        `global.billing.tariff_uri` is empty or unset.


        If loading this script takes longer than 15 seconds or evaluating

        the register formulas takes longer than half the

        [update-interval](/webapi/4.6/openapi/configlocalupdate-interval), an
        alert is

        raised.
    configLuaScriptTeamd:
      type: string
      example: print("this is the formulas script");
      description: >
        The Lua script loaded by the register calculator.  This script can

        be used to define helper functions that can then be called from

        register formulas.


        If loading this script takes longer than 15 seconds or evaluating

        the register formulas takes longer than half the

        [update-interval](/webapi/4.6/openapi/configlocalupdate-interval), an
        alert is

        raised.
    configLuaScript:
      type: object
      properties:
        alertd:
          $ref: '#/components/schemas/configLuaScriptAlertd'
        tariff:
          $ref: '#/components/schemas/configLuaScriptTariff'
        teamd:
          $ref: '#/components/schemas/configLuaScriptTeamd'
      description: |
        Lua scripts.
    configLuaCtrldScript:
      type: string
      example: print("this is control script test");
      description: |
        The control script.
    configLuaCtrld:
      type: object
      additionalProperties:
        x-additionalPropertiesName: script
        $ref: '#/components/schemas/configLuaCtrldScript'
      example:
        test: print("this is control script test");
      description: |
        The control scripts.  Control scripts generally run indefinitely.
        The more control scripts exist, the slower they will execute.  If
        a control script voluntarily terminates execution, it is restarted
        automatically after five seconds.  If a control script is updated,
        its execution is automatically restarted.
    configLua:
      type: object
      properties:
        script:
          $ref: '#/components/schemas/configLuaScript'
        ctrld:
          $ref: '#/components/schemas/configLuaCtrld'
      description: |
        Lua scripting configuration.
    configModbusClientMapNameOptionOpt:
      type: string
      example: 9600/8n1
      description: |
        The value of the Modbus map option.
    configModbusClientMapNameOption:
      type: object
      additionalProperties:
        x-additionalPropertiesName: opt
        $ref: '#/components/schemas/configModbusClientMapNameOptionOpt'
      example:
        default-modbus-addr: '2'
        default-serial-params: 9600/8n1
      description: |
        A set of options.  The meter currently supports the following
        options:

          * `default-modbus-addr`: The Modbus unit-number to use by
          default.  This must be a decimal string.  For example: `1`.

          * `default-serial-params`: The default serial parameters to use
          when the remote device is connected via a serial port
          (Modbus/RTU).  This must be a string.  For example: `9600/8n1`
          for 9600 baud, 8 databits, no parity, 1 stop bit.

          * `default-tcp-port`: The default TCP port number to use when
          the remote device is connected via Modbus/TCP.  This must be a
          decimal string.  For example: `6001`.
    configModbusClientMapNameRegItemName:
      type: string
      example: irradiance
      description: |
        The name of the register.  The user can choose this name freely so
        long as each register within a map has a unique name.
    configModbusClientMapNameRegItemAddr:
      type: integer
      minimum: 0
      maximum: 65535
      description: |
        The Modbus address of the register.
    configModbusClientMapNameRegItemType:
      type: string
      example: u32
      enum:
        - bit
        - s16
        - u16
        - s32
        - u32
        - s32l
        - u32l
        - s64
        - u64
        - float16
        - float16l
        - float
        - floatl
        - double
      description: |
        The type of the register value.  This may be one of the following:

          * `bit`: One-bit value (a coil, in Modbus terminology).
          * `s16`: Signed 16-bit integer.
          * `u16`: Unsigned 16-bit integer.
          * `s32`: Signed 32-bit integer.
          * `u32`: Unsigned 32-bit integer.
          * `s32l`: Signed 32-bit integer, word-swapped.
          * `u32l`: Unsigned 32-bit integer, word-swapped.
          * `s64`: Signed 64-bit integer.
          * `u64`: Unsigned 64-bit integer.
          * `float16`: IEEE-754 half-precision float.
          * `float16l`: IEEE-754 half-precision floating point,
            little-endian (byte-swapped).
          * `float`: IEEE-754 single-precision float.
          * `floatl`: IEEE-754 single-precision float, word-swapped.
          * `double`: IEEE-754 double-precision float.
    configModbusClientMapNameRegItemKind:
      type: string
      enum:
        - analog
        - enum
        - bitset
      description: |
        The kind of the register. Possible values are:

          * `analog`: The value is continuous (the average of two values is
            meaningful).

          * `enum`: The value is discrete (the average of two values is not
            meaningful).  An example for this would be a numeric error code.

          * `bitset`: Each bit in the value is a discrete on/off value.
          An example for this would be a set of error flags.
    configModbusClientMapNameRegItemUnit:
      type: string
      example: W
      description: |
        For register of the `analog` kind, this defines the physical unit of
        the register value.  This must be one of the following:

          * `#3`: Unit-less number with 3 decimal digits of precision.
          * `%`: Percentage.
          * `A`: Electric current in amperes.
          * `Ah`: Electric charge in ampere-hours.
          * `As`: Electric charge in ampere-seconds.
          * `C`: Temperature in degree celsius.
          * `Degrees`: Angle in degrees.
          * `Hz`: Frequency in hertz.
          * `Ohm`: Resistance in ohm.
          * `Pa`: Pressure in pascals.
          * `Pct`: Percentage.
          * `RH`: Relative humidity.
          * `Tmd`: Time in days.
          * `Tmh`: Time in hours.
          * `Tms`: Time in seconds.
          * `VA`: Apparent power in volt-amperes.
          * `VAh`: Apparent energy in volt-ampere-hours.
          * `V`: Electric potential in volts.
          * `W/m2`: Irradiance in watts-per-square-meter.
          * `W/m^2`: Irradiance in watts-per-square-meter.
          * `W`: Power in watts.
          * `Wh`: Energy in watt-hours.
          * `degC`: Temperature in degree celsius.
          * `deg`: Angle in degrees.
          * `g`: Mass in grams.
          * `hPa`: Pressure in hecto-pascals.
          * `h`: Time in hours.
          * `kAh`: Electric charge in kilo-ampere-hours.
          * `kO`: Resistance in kilo-ohms.
          * `kPa`: Pressure in kilo-pascals.
          * `kVAh`: Apparent energy in kilo-volt-ampere-hours.
          * `kW`: Power in kilo-watts.
          * `kWh`: Energy in kilo-watt-hours.
          * `kg`: Mass in kilo-grams.
          * `kvarh`: Reactive energy in kilo-volt-ampere-hours.
          * `m/s`: Speed in meters-per-second.
          * `m3/s`: Volume flow in cubic-meters-per-second.
          * `m3`: Volume in cubic-meters.
          * `mA`: Electric current in milli-amperes.
          * `mAh`: Electric charge in milli-ampere-hours.
          * `mSecs`: Time in milli-seconds.
          * `mV`: Electric potential in milli-volts.
          * `mV`: Electric potential in milli-volts.
          * `m^3/s`: Volume flow in cubic-meters-per-second.
          * `m^3`: Volume in cubic-meters.
          * `meters`: Distance in meters.
          * `mm`: Distance in milli-meters.
          * `mps`: Speed in meters-per-second.
          * `ms`: Time in milli-seconds.
          * `ohms`: Resistance in ohm.
          * `ppm`: Parts-per-million.
          * `s`: Time in seconds.
          * `secs`: Time in seconds.
          * `var`: Reactive power in volt-ampere.
          * `varh`: Reactive energy in volt-ampere-hours.
          * `°C`: Temperature in degree celsius.
    configModbusClientMapNameRegItemOffset:
      type: number
      description: |
        An offset value that is used to convert the Modbus register value
        to a value in the specified physical unit.  Specifically, when the
        Modbus value of the register is *reg*, then corresponding physical
        value *phys* is calculated as:

          > *phys* = (*reg* + `offset`) * `scale`

        where `offset` is the value defined here and `scale` is
        the value defined for member `scale`.
    configModbusClientMapNameRegItemScale:
      type: number
      example: 0.1
      description: |
        A scale value that is used to convert the Modbus register value
        to a value in the specified physical unit.  Specifically, when the
        Modbus value of the register is *reg*, then corresponding physical
        value *phys* is calculated as:

          > *phys* = (*reg* + `offset`) * `scale`

        where `scale` is the value defined here and `offset` is
        the value defined for member `offset`.
    configModbusClientMapNameRegItemAccess:
      type: string
      enum:
        - ro
        - rw
      description: |
        The access-mode of the register.  It must be one of:
          * `ro`: read-only
          * `rw`: read-write
    configModbusClientMapNameRegItem:
      type: object
      properties:
        name:
          $ref: '#/components/schemas/configModbusClientMapNameRegItemName'
        addr:
          $ref: '#/components/schemas/configModbusClientMapNameRegItemAddr'
        type:
          $ref: '#/components/schemas/configModbusClientMapNameRegItemType'
        kind:
          $ref: '#/components/schemas/configModbusClientMapNameRegItemKind'
        unit:
          $ref: '#/components/schemas/configModbusClientMapNameRegItemUnit'
        offset:
          $ref: '#/components/schemas/configModbusClientMapNameRegItemOffset'
        scale:
          $ref: '#/components/schemas/configModbusClientMapNameRegItemScale'
        access:
          $ref: '#/components/schemas/configModbusClientMapNameRegItemAccess'
      description: |
        A Modbus register definition.
    configModbusClientMapNameReg:
      type: array
      items:
        $ref: '#/components/schemas/configModbusClientMapNameRegItem'
      description: |
        A list of Modbus register definitions.
    configModbusClientMapName:
      type: object
      properties:
        option:
          $ref: '#/components/schemas/configModbusClientMapNameOption'
        reg:
          $ref: '#/components/schemas/configModbusClientMapNameReg'
      example:
        option:
          default-modbus-addr: '2'
          default-serial-params: 9600/8n1
        reg:
          - name: irradiance
            addr: 0
            type: u32
            kind: analog
            unit: W
            offset: 0
            scale: 0.1
            access: ro
          - name: temp
            addr: 1
            type: s32
            kind: analog
            unit: degC
            offset: 0
            scale: 0.01
            access: ro
      description: |
        Modbus map consisting of a list of register definitions and a set
        of options.
    configModbusClientMap:
      type: object
      additionalProperties:
        x-additionalPropertiesName: name
        $ref: '#/components/schemas/configModbusClientMapName'
      example:
        user_dev:
          option:
            default-modbus-addr: '2'
            default-serial-params: 9600/8n1
          reg:
            - name: irradiance
              addr: 0
              type: u32
              kind: analog
              unit: W
              offset: 0
              scale: 0.1
              access: ro
            - name: temp
              addr: 1
              type: s32
              kind: analog
              unit: degC
              offset: 0
              scale: 0.01
              access: ro
      description: |
        User-defined Modbus address maps.  The builtin, read-only system
        maps are available at
        [/sys/modbus/client/map](/webapi/4.6/openapi/sysmodbusclientmap).  If a
        user-defined map with the same name as a system map exists, it
        will shadow (mask) the system map with them same name.
    configModbusClient:
      type: object
      properties:
        map:
          $ref: '#/components/schemas/configModbusClientMap'
      description: |
        Modbus client configuration.  This is used by the meter to
        communicate with other Modbus devices.
    configModbusServerEnableItem:
      type: string
      enum:
        - rtu
        - tcp
      description: |
        The name of a protocol that is enabled.
    configModbusServerEnable:
      type: array
      items:
        $ref: '#/components/schemas/configModbusServerEnableItem'
      description: |
        The list of protocols (if any) that are enabled in the Modbus
        server. An empty list indicates that the Modbus server is
        disabled.

        Valid protocol names are:

          * `rtu`: The
            [Modbus/RTU](https://modbus.org/docs/Modbus_over_serial_line_V1_02.pdf)
            protocol.

          * `tcp`: The
            [Modbus/TCP](https://modbus.org/docs/Modbus_Messaging_Implementation_Guide_V1_0b.pdf)
            protocol.
    configModbusServerId:
      type: integer
      minimum: 1
      maximum: 247
      description: |
        The address of the meter on the Modbus/RTU network. Every Modbus
        device must have a unique address. The default unit id is 1.

        **Note** Address 0 is the broadcast address and addresses 248..255
        are reserved for future use.
    configModbusServerRtuPort:
      type: string
      example: USB2:9600/8o2
      description: >
        The [serial-port](/webapi/4.6/openapi/glossary#section/Serial-Ports) to
        use for the RTU

        protocol.
    configModbusServerRtu:
      type: object
      properties:
        port:
          $ref: '#/components/schemas/configModbusServerRtuPort'
      description: |
        The RTU protocol configuration.
    configModbusServerTcpPort:
      type: integer
      minimum: 0
      maximum: 65535
      example: 502
      description: |
        The IP port of the Modbus server.  The default value is 502.
    configModbusServerTcp:
      type: object
      properties:
        port:
          $ref: '#/components/schemas/configModbusServerTcpPort'
      description: |
        The TCP protocol configuration.
    configModbusServer:
      type: object
      properties:
        enable:
          $ref: '#/components/schemas/configModbusServerEnable'
        id:
          $ref: '#/components/schemas/configModbusServerId'
        rtu:
          $ref: '#/components/schemas/configModbusServerRtu'
        tcp:
          $ref: '#/components/schemas/configModbusServerTcp'
      description: |
        Modbus server configuration.  This configures the server-side of
        the meter.  That is, it defines how the meter provides its own
        data to other Modbus devices.
    configModbus:
      type: object
      properties:
        client:
          $ref: '#/components/schemas/configModbusClient'
        server:
          $ref: '#/components/schemas/configModbusServer'
      description: |
        [Modbus](https://www.modbus.org/)-related configurations.
    configNetEthernetWatchdog:
      type: boolean
      example: true
      description: |
        Whether or not the Ethernet watchdog is enabled.  If enabled, the
        watchdog will reset the Ethernet's PHY chip and/or reload the
        Ethernet driver if it appears that the Ethernet link was lost.

        This should normally be set to `true`.
    configNetEthernet:
      type: object
      properties:
        watchdog:
          $ref: '#/components/schemas/configNetEthernetWatchdog'
      description: |
        The Ethernet configuration of the meter.
    configNetGoproxyEnable:
      type: boolean
      description: |
        If `true`, the meter will connect to the Go proxy server.
    configNetGoproxyServer:
      type: string
      example: proxy.egauge.io
      description: |
        The hostname of the Go proxy server.
    configNetGoproxy:
      type: object
      properties:
        enable:
          $ref: '#/components/schemas/configNetGoproxyEnable'
        server:
          $ref: '#/components/schemas/configNetGoproxyServer'
      description: |
        The Go proxy configuration of the meter.
    configNetHomeplugRegion:
      type: string
      enum:
        - CE
        - NA
      description: |
        The jurisdiction the meter is operating under.  The possible values are:

          * `CE`: European Union region.
          * `NA`: North American region.

        This resource controls the frequency bands used by the HomePlug
        communications interface that is built into some meters.  For
        those meters, this resource must be set to the correct geographic
        region to ensure compliance with local laws.
    configNetHomeplug:
      type: object
      properties:
        region:
          $ref: '#/components/schemas/configNetHomeplugRegion'
      description: |
        HomePlug configuration.  This is used only by devices with
        built-in HomePlug power-line communication (egauge2, EG3*x*10 and
        EG41*xx*).
    configNetHostname:
      type: string
      example: eGauge42
      description: |
        The hostname of the meter.  Must consist of ASCII letters, digits,
        and dashes only.
    configNetHttpClientInsecure:
      type: boolean
      example: false
      description: |
        If `true`, meter-initiated secure HTTPS connections will accept
        servers whose certificate cannot be validated by the meter.  This
        should normally be set to `false`.
    configNetHttpClient:
      type: object
      properties:
        insecure:
          $ref: '#/components/schemas/configNetHttpClientInsecure'
      description: |
        Configuration for meter-initiated HTTP connections.
    configNetHttpCertificate:
      type: string
      description: >
        The certificate used by the web server to identify itself over

        HTTPS connections.


        This resource is write-only.


        The string is in [PEM

        format](https://en.wikipedia.org/wiki/X.509#Certificate_filename_extensions)

        and must contain both a private key as well as the matching

        certificate chain.
    configNetHttpCgiBin:
      type: string
      enum:
        - disable
        - user-optional
        - user-required
      description: >
        Controls access to CGI-BIN programs.  The following values are
        supported:

          * `disable`: Completely disable access to CGI-BIN programs.
          **Warning** This will render the classic user-interface of the
          meter inoperable.

          * `user-required`: Allow authenticated users to access CGI-BIN programs.

          * `user-optional`: Allow even unauthenticated users to access
            CGI-BIN programs that are not considered security critical.
    configNetHttp:
      type: object
      properties:
        client:
          $ref: '#/components/schemas/configNetHttpClient'
        certificate:
          $ref: '#/components/schemas/configNetHttpCertificate'
        cgi-bin:
          $ref: '#/components/schemas/configNetHttpCgiBin'
      example:
        cgi-bin: user-required
        client:
          insecure: 'false'
      description: >
        Web (HTTP) related configurations.


        Modification requests (`PUT`, `POST`, and `DELETE`) to this

        resource are not executed

        [transactionally](/webapi/4.6/openapi/glossary#section/Non-Transactional-Updates).
    configNetIpv4Dhcp:
      type: boolean
      description: |
        Whether or not to use [DHCP](https://www.ietf.org/rfc/rfc2131.txt)
        to automatically provision the IPv4 address.  If `true`, DHCP is
        enabled. If `false`, the manually configured IPv4 settings are
        used.
    configNetIpv4Address:
      type: string
      example: 192.168.1.42
      description: |
        An IPv4 address in dotted decimal notation.
    configNetIpv4Broadcast:
      type: string
      example: 192.168.1.255
      description: |
        An IPv4 broadcast address in dotted decimal notation.
    configNetIpv4Netmask:
      type: string
      example: 255.255.255.0
      description: |
        The address of the IPv4 gateway in dotted decimal notation.
    configNetIpv4Network:
      type: string
      example: 192.168.1.0
      description: |
        The IPv4 network mask in dotted decimal notation.
    configNetIpv4Gateway:
      type: string
      example: 192.168.1.1
      description: |
        The IPv4 network number in dotted decimal notation.
    configNetIpv4:
      type: object
      properties:
        dhcp:
          $ref: '#/components/schemas/configNetIpv4Dhcp'
        address:
          $ref: '#/components/schemas/configNetIpv4Address'
        broadcast:
          $ref: '#/components/schemas/configNetIpv4Broadcast'
        netmask:
          $ref: '#/components/schemas/configNetIpv4Netmask'
        network:
          $ref: '#/components/schemas/configNetIpv4Network'
        gateway:
          $ref: '#/components/schemas/configNetIpv4Gateway'
      description: |
        The Internet Protocol v4 ([IPv4](https://www.rfc-editor.org/rfc/rfc791))
        configuration.
    configNetNameserverServerItem:
      type: string
      example: 1.1.1.1
      description: |
        The IPv4 or IPv6 address a DNS server.
    configNetNameserverServer:
      type: array
      items:
        $ref: '#/components/schemas/configNetNameserverServerItem'
      example:
        - 1.1.1.1
        - 8.8.8.8
        - 2606:4700:4700::1111
      description: |
        The IP addresses to use as name servers. If multiple name servers
        are specified, they are queried in the order in which they appear
        here.
    configNetNameserver:
      type: object
      properties:
        server:
          $ref: '#/components/schemas/configNetNameserverServer'
      description: |
        The name server ([DNS](https://www.ietf.org/rfc/rfc1035.txt))
        configuration.
    configNetNtpServerItem:
      type: string
      example: north-america.pool.ntp.org
      description: |
        The hostname or an IPv4 or IPv6 address of an NTP server.
    configNetNtpServer:
      type: array
      items:
        $ref: '#/components/schemas/configNetNtpServerItem'
      example:
        - 192.168.1.1
        - north-america.pool.ntp.org
        - 2610:20:6f15:15::27
      description: |
        The NTP servers to use.
    configNetNtp:
      type: object
      properties:
        server:
          $ref: '#/components/schemas/configNetNtpServer'
      description: |
        The Network Time Protocol
        ([NTP](https://www.rfc-editor.org/rfc/rfc5905)) configuration.
    configNetOptionSecureOnly:
      type: boolean
      example: false
      description: >
        If `true`, network services which do not encrypt data are

        disabled.  At present, turning on this option disables the

        following services:

          * The web-server's plain HTTP service (port 80).

          * The service that provides the meter data via
            [link-type](/webapi/4.6/openapi/glossary#section/Link-Types) `udp`.  Thus, it other
            meters will not be able to read this meters data via this
            link type anymore.

        This resource is **not** updated

        [transactionally](/webapi/4.6/openapi/glossary#section/Non-Transactional-Updates)
        and after

        changing its value, the web server will be unavailable

        temporarily.
    configNetOption:
      type: object
      properties:
        secure_only:
          $ref: '#/components/schemas/configNetOptionSecureOnly'
      description: |
        Options that have a system-wide effect on the network services.
    configNetProxyEnable:
      type: boolean
      description: |
        If `true`, the meter will connect to the proxy server.
    configNetProxyServer:
      type: string
      example: d.egauge.net
      description: |
        The hostname of the proxy server.
    configNetProxy:
      type: object
      properties:
        enable:
          $ref: '#/components/schemas/configNetProxyEnable'
        server:
          $ref: '#/components/schemas/configNetProxyServer'
      description: |
        The proxy configuration of the meter.
    configNetPtpClientOnly:
      type: boolean
      description: |
        If `true`, the meter will only act as a client.  Otherwise, the
        meter will also act as a server if the PTP algorithm selects it as
        the best clock.
    configNetPtpInterfaceIfTransport:
      type: string
      enum:
        - L2
        - UDPv4
        - UDPv6
      description: |
        The network transport to use for the interface. Possible values are:

          * `UDPv4`: UDP over IPv4.
          * `UDPv6`: UDP over IPv6.
          * `L2`: Layer-2 transport (e.g., Ethernet).
    configNetPtpInterfaceIfUdpTtl:
      type: integer
      minimum: 1
      maximum: 255
      description: |
        The Time-to-live (TTL) value for IPv4 multicast messages and the
        hop limit for IPv6 multicast messages.  This value is ignored
        unless `transport` is either `UDPv4` or `UDPv6`.  The default
        is 1, which restricts the messages to the same subnet.
    configNetPtpInterfaceIf:
      type: object
      properties:
        transport:
          $ref: '#/components/schemas/configNetPtpInterfaceIfTransport'
        udp_ttl:
          $ref: '#/components/schemas/configNetPtpInterfaceIfUdpTtl'
      description: |
        The configuration to use for the named interface.
    configNetPtpInterface:
      type: object
      additionalProperties:
        x-additionalPropertiesName: if
        $ref: '#/components/schemas/configNetPtpInterfaceIf'
      example:
        eth0:
          transport: UDPv4
          udp_ttl: 1
      description: |
        The network interface configurations for PTP. If empty, PTP is disabled.
    configNetPtp:
      type: object
      properties:
        client_only:
          $ref: '#/components/schemas/configNetPtpClientOnly'
        interface:
          $ref: '#/components/schemas/configNetPtpInterface'
      description: |
        The Precision Time Protocol
        ([PTP](https://www.rfc-editor.org/rfc/rfc8173.html))
        configuration.
    configNet:
      type: object
      properties:
        ethernet:
          $ref: '#/components/schemas/configNetEthernet'
        goproxy:
          $ref: '#/components/schemas/configNetGoproxy'
        homeplug:
          $ref: '#/components/schemas/configNetHomeplug'
        hostname:
          $ref: '#/components/schemas/configNetHostname'
        http:
          $ref: '#/components/schemas/configNetHttp'
        ipv4:
          $ref: '#/components/schemas/configNetIpv4'
        nameserver:
          $ref: '#/components/schemas/configNetNameserver'
        ntp:
          $ref: '#/components/schemas/configNetNtp'
        option:
          $ref: '#/components/schemas/configNetOption'
        proxy:
          $ref: '#/components/schemas/configNetProxy'
        ptp:
          $ref: '#/components/schemas/configNetPtp'
      description: |
        The network configuration.

        The current state of the network is available at
        [/sys/net](/webapi/4.6/openapi/sysnet).
    configPushInterval:
      type: integer
      example: 60
      minimum: 1
      description: |
        The interval in seconds between push updates.  A value of 60, for
        example, would cause the push service to attempt to send data to
        the remote web server once a minute.
    configPushOptions:
      type: string
      example: json,gzip,epoch,sec,skip=59
      description: >
        The options controlling how data is pushed to the remote web

        server.  Multiple options must be separated by commas (`,`).


        This resource is available only if

        [/config/push/service](/webapi/4.6/openapi/configpushservice) is an
        empty string.


        Available options are:

          * `day`: Data will be pushed with day granularity (at most one
            row of data per day).

          * `deflate`: Use the deflate algorithm to compress the push
            data.  This adds HTTP header `Content-Encoding: deflate` to
            the `POST` request.

          * `epoch`: Report the register values relative to the
            [epoch](/webapi/4.6/openapi/configdbepoch).  Without this option, absolute
            values are sent which start at zero at the time the meter
            database was created.

          * `gzip`: Use the gzip algorithm to compress the push data.
            This adds HTTP header `Content-Encoding: gzip` to the `POST`
            request.

          * `json`: Push data in JSON format instead of XML.  The JSON
            format is the same as the one returned by the
            [/register](/webapi/4.6/openapi/register) service, except that the top-level
            `ts` section and the `idx` members in the `registers` section
            are omitted since they are not meaningful for push data.

          * `hour`: Data will be pushed with hour granularity (at most one
            row of data per hour).

          * `max=n`: Pushed at most `n` rows in a single `POST` request.
            This limit must be in the range from 1 to 900.

          * `msec`: Data will be pushed with millisecond granularity (at
            most one row of data per millisecond).

          * `old_first`: Push the oldest data row first.  By default, the
            youngest data row is pushed first.

          * `sec`: Data will be pushed with second granularity (at most
            one row of data per second).

          * `secure`: If this option is present, secure connections to the
            remote web server are allowed only if the server possesses a
            certificate that the meter can verify as authentic.  Without
            this option, the server's certificate is not verified.  This
            option is ignored if
            [/config/net/http/client/insecure](/webapi/4.6/openapi/confignethttpclientinsecure)
            is `true`.

          * `skip=n`: Push only every `(n+1)`-th data row.  For example,
            with hour granularity and skip=2, data rows would be spaced
            apart by (at least) 3 hours.  They may be spaced apart more
            depending on the rows that are available in the database.

          * `totals`: Push not just the physical registers but also the
            virtual registers.

        By default, data is pushed with minute granularity (at most one

        row of data per minute).
    configPushPassword:
      type: string
      example: secret!
      description: >
        The password to be provided to the remote web server for

        authentication purposes.  The password is submitted to the remote

        web server as part of a

        [Basic](https://www.rfc-editor.org/rfc/rfc7617) HTTP

        `Authorization` header.  For this reason, a password should only

        be specified when using a secure connection (`https` scheme).


        This resource is available only if

        [/config/push/web/service](/webapi/4.6/openapi/configpushservice) is an
        empty

        string.


        This resource is write-only.
    configPushService:
      type: string
      description: >
        The name of a push service provider to shared data with.


        To set this to a non-empty value please use the [service

        activation command](/webapi/4.6/openapi/cmd/cmdactivatepost) since that
        ensures the

        push provider knows to expect data from this meter.  The body of

        the activation request should contain member `service` set to the

        string `push` and `provider` set to name of the desired push

        service provider.
    configPushUri:
      type: string
      example: https://push-service.com/data
      description: >
        The URI of the web server to share data with.  This resource is

        available only if
        [/config/push/service](/webapi/4.6/openapi/configpushservice)

        is an empty string.
    configPushUser:
      type: string
      example: jsmith
      description: >
        The user name to provide to the web server for authentication

        purposes.  If this string is not empty, the user name and the

        password are both sent to the web server as part of a

        [Basic](https://www.rfc-editor.org/rfc/rfc7617) HTTP

        `Authorization` header.


        This resource is available only if

        [/config/push/web/service](/webapi/4.6/openapi/configpushservice) is an
        empty

        string.
    configPush:
      type: object
      properties:
        interval:
          $ref: '#/components/schemas/configPushInterval'
        options:
          $ref: '#/components/schemas/configPushOptions'
        password:
          $ref: '#/components/schemas/configPushPassword'
        service:
          $ref: '#/components/schemas/configPushService'
        uri:
          $ref: '#/components/schemas/configPushUri'
        user:
          $ref: '#/components/schemas/configPushUser'
      example:
        interval: 60
        options: json,gzip,epoch,sec,skip=59
        service: ''
        uri: https://push-service.com/data
        user: jsmith
      description: |
        The push service configuration.  This service is used to share the
        meter data with a remote web server.  The data is sent via an HTTP
        `POST` request.
    configRemoteNameAddress:
      type: string
      example: modbus://sunspec.1@USB2
      description: >
        The address of the remote device.  The meaning of this value

        depends on the
        [link-type](/webapi/4.6/openapi/glossary#section/Link-Types).
    configRemoteNameLinkType:
      type: string
      example: slowd
      description: >
        The [link-type](/webapi/4.6/openapi/glossary#section/Link-Types) of the
        remote device.
    configRemoteName:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/configRemoteNameAddress'
        link_type:
          $ref: '#/components/schemas/configRemoteNameLinkType'
      description: |
        The configuration of a remote device.
    configRemote:
      type: object
      additionalProperties:
        x-additionalPropertiesName: name
        $ref: '#/components/schemas/configRemoteName'
      example:
        PRM3:
          address: modbus://sunspec.1@USB2
          link_type: slowd
        panel2:
          address: panel2.local
          link_type: udp
      description: |
        The remote device configurations.
    configRegisterPhysicalRegDev:
      type: string
      example: local
      description: |
        The name of the device that is the source of the register values.
        The name `local` indicates that the meter itself measures or
        calculates the value.  Any other value is a reference to the
        remote device of the same name defined at
        [/config/remote](/webapi/4.6/openapi/configremote).
    configRegisterPhysicalRegDid:
      type: integer
      minimum: 0
      description: |
        The column number in which the database stores the register value.
        Each physical register has a unique column number.  If a register
        is renamed, this number remains the same.  On the other hand, if a
        register is deleted and then another one is added back, the new
        one may get assigned the column number of the old, deleted
        register.

        Each physical register must have a unique value.  Invalid values
        automatically get remapped to an unused index.
    configRegisterPhysicalRegType:
      type: string
      example: P
      description: >
        The [type code](/webapi/4.6/openapi/glossary#section/Type-Codes) of the
        register.
    configRegisterPhysicalRegValue:
      type: string
      example: S16*L1+S17*L2
      description: >
        Defines the how the register value is obtained or calculated.  For

        register where `dev` is `local`, this is one of:

          * A [local](/webapi/4.6/openapi/local) sensor name: `L1`-`L3`, `Ldc`, or
            `S1`-`S30`.

          * A power formula written as a sum of products of sensors.  For
            example, `S1*L1+S2*L2` would indicate that the register value
            is calculated as the real power measured by current sensor
            `S1` and line-voltage `L1` plus the real power measured by
            current sensor `S2` and line-voltage `L2`.  Note that even
            though the real power calculation is indicated by an asterisk,
            it is actually calculated by averaging the product of the
            instantaneous current and voltage samples, not by multiplying
            the RMS voltages of `S1` and `L1`.  The first factor of each
            real power calculation may also be negated.  For example,
            `-S1*L2` would yield the negative of the real power calculated
            by `S1*L2`.

          * An equal sign (`=`) followed by an
            [eScript](/webapi/4.6/openapi/glossary#section/eScript) expression.  The register
            value is obtained by evaluating the eScript expression once
            per [update interval](/webapi/4.6/openapi/configlocalupdate-interval).
            Non-finite numbers (e.g., not-a-number, or infinities) are
            silently converted to 0 before recording the register value.

        For registers where `dev` is not `local`, so-called _remote_

        registers, the value is interpreted in a way that is specific to

        the particular remote device in use.  Commonly, the value is some

        sort of register name or identifier.  For example, for Modbus

        remote devices, the value is a register name defined by the

        [Modbus map](/webapi/4.6/openapi/sysmodbusclientmap) of the remote
        device.
    configRegisterPhysicalReg:
      type: object
      properties:
        dev:
          $ref: '#/components/schemas/configRegisterPhysicalRegDev'
        did:
          $ref: '#/components/schemas/configRegisterPhysicalRegDid'
        type:
          $ref: '#/components/schemas/configRegisterPhysicalRegType'
        value:
          $ref: '#/components/schemas/configRegisterPhysicalRegValue'
      description: |
        The configuration of the named physical register.
    configRegisterPhysical:
      type: object
      additionalProperties:
        x-additionalPropertiesName: reg
        $ref: '#/components/schemas/configRegisterPhysicalReg'
      description: |
        The physical register configuration of the meter.
      example:
        grid:
          dev: local
          did: 0
          type: P
          value: S16*L1+S17*L2
        grid*:
          dev: local
          did: 8
          type: S
          value: grid
        solar:
          dev: local
          did: 1
          type: P
          value: S3*L1+-S3*L2
        temp:
          dev: SMANet
          did: 12
          type: T
          value: 13590.TmpAmb_C
    configRegisterVirtualRegValueItemOp:
      type: string
      enum:
        - +
        - '-'
        - +max0
        - '-max0'
        - +min0
        - '-min0'
      example: +
      description: |
        The operation that calculates the value of this addend.

        Possible values are:

          * `+`: The physical register value is to be added.

          * `-`: The physical register value is to be subtracted.

          * `+max0`, `-max0`, `+min0`, `-min0`:
          **[Deprecated](/webapi/4.6/openapi/glossary#section/Deprecated)**. These operators do
          not work correctly and remain only to preserve compatibility
          with existing, old, device configurations.  Attempting to write
          these operators with a `PUT` or `POST` request will result in an
          error.  They can only be returned as a result of a `GET` request.
          The intent of these operators was to add (`+max0`, `+min0`) or
          subtract (`-max0`, `-min0`) the maximum of the physical register
          value and 0 (`+max0`, `-max0`) or the minimum of the register value
          and 0 (`+min0`, `-min0`).
    configRegisterVirtualRegValueItemRegister:
      type: string
      example: grid
      description: |
        The name of the physical register to use in calculating the value
        of this addend.
    configRegisterVirtualRegValueItem:
      type: object
      properties:
        op:
          $ref: '#/components/schemas/configRegisterVirtualRegValueItemOp'
        register:
          $ref: '#/components/schemas/configRegisterVirtualRegValueItemRegister'
      description: |
        An additive term of the virtual register formula.
    configRegisterVirtualRegValue:
      type: array
      items:
        $ref: '#/components/schemas/configRegisterVirtualRegValueItem'
      example:
        - op: +
          register: grid
        - op: +
          register: solar
      description: |
        The formula to calculate the value of this virtual register.  It
        consists of a list of physical register names whose values are to
        be added or subtracted.
    configRegisterVirtualReg:
      type: object
      properties:
        value:
          $ref: '#/components/schemas/configRegisterVirtualRegValue'
      description: |
        The virtual register configuration.

        Several virtual register names are well-known and provide special
        semantics:

          * `use`: Intended to represent total power consumption at a
            site.  It is generally presented with the name `Usage` in
            English and the equivalent translation in other languages
            (subject to availablility).

          * `gen`: Intended to represent total power generation at a site,
            e.g., from local solar or wind power generation facilities.
            It is generally presented with the name `Generation` in
            English and the equivalent translation in other languages
            (subject to availability).

          * `bat`: Intended to represent total power coming from on-site
            batteries (if positive) or power going to on-site batteries
            for charging (if negative).  It is generally presented with
            the name `Battery` in English and the equivalent translation
            in other languages (subject to availability).

          * `bat_el`: Intended to represent the amount of _energy left_ in
            on-site batteries.  The value of this register should be equal
            to the sum of each battery's state of charge times the
            battery's capacity (in joules).  It is generally presented
            with the name `Battery left` in English and the equivalent
            translation in other languages (subject to availability).
    configRegisterVirtual:
      type: object
      additionalProperties:
        x-additionalPropertiesName: reg
        $ref: '#/components/schemas/configRegisterVirtualReg'
      example:
        use:
          value:
            - op: +
              register: grid
            - op: +
              register: solar
        gen:
          value:
            - op: +
              register: solar
      description: |
        The virtual register configuration of the meter.

        Virtual registers are calculated from physical register values and
        do not take up space in the database.  As such there is no a
        priori limit on the number of virtual registers that can be
        configured on a meter.
    configRegister:
      type: object
      properties:
        physical:
          $ref: '#/components/schemas/configRegisterPhysical'
        virtual:
          $ref: '#/components/schemas/configRegisterVirtual'
      description: |
        The register configuration of the meter.
    configTimeZone:
      type: string
      example: LST7LDT6,M3.2.0/02:00,M11.1.0/02:00
      description: |
        The timezone the meter is located in.  The string is interpreted
        as a [Unix
        TZ](https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html)
        string.
    configTime:
      type: object
      properties:
        zone:
          $ref: '#/components/schemas/configTimeZone'
      description: |
        Time related configurations.
    configUserNamePrivItem:
      type: string
      description: >
        A [privilege](/webapi/4.6/openapi/glossary#section/User-Privileges) the
        user possesses.
    configUserNamePriv:
      type: array
      items:
        $ref: '#/components/schemas/configUserNamePrivItem'
      example:
        - unlimited_save
        - view_settings
      description: >
        The list of
        [privileges](/webapi/4.6/openapi/glossary#section/User-Privileges) the
        user possesses.
    configUserNameHash:
      type: string
      example: 251910de04f5eab86859939167d4fded
      description: >
        The [hash](/webapi/4.6/openapi/glossary#section/Password-Hashes) of the
        user's password.

        Writing an empty hash string disables the account.


        This resource is write-only.
    configUserName:
      type: object
      properties:
        priv:
          $ref: '#/components/schemas/configUserNamePriv'
        hash:
          $ref: '#/components/schemas/configUserNameHash'
      example: jsmith
      description: |
        A user configuration (account).
    configUser:
      type: object
      additionalProperties:
        x-additionalPropertiesName: name
        $ref: '#/components/schemas/configUserName'
      example:
        jsmith:
          priv:
            - unlimited_save
            - view_settings
        guest:
          priv:
            - view_settings
      description: |
        The user accounts.
    configVarSectionVar:
      type: string
      example: '6'
      description: |
        The value of the named meter variable.  Complex values can be
        stored, e.g., by JSON-encoding them.
    configVarSection:
      type: object
      additionalProperties:
        x-additionalPropertiesName: var
        $ref: '#/components/schemas/configVarSectionVar'
      example:
        billing.start_day: '6'
        billing.interval: '15'
      description: |
        The meter variables in the named section.
    configVar:
      type: object
      additionalProperties:
        x-additionalPropertiesName: section
        $ref: '#/components/schemas/configVarSection'
      description: |
        The set of meter variable sections.
      example:
        global:
          billing.start_day: '6'
          billing.interval: '15'
        health:
          last_check: '1682200804'
    configAlertCustomItemName:
      type: string
      example: temperature alert
      description: |
        The user-selected name of this custom alert.
    configAlertCustomItemDetail:
      type: string
      example: 'It is hot in here: %l C!'
      description: |
        Alert detail message.  This may be up to 255 bytes in length.  The
        following sequences within this string get replaced as follows:

          * `%%` is replaced by a single percent character.
          * `%l` is replaced by the value of the `lhs` expression.
          * `%r` is replaced by the value of the `rhs` expression.
          * `%L` is replaced by the `lhs` expression string.
          * `%R` is replaced by the `rhs` expression string.
    configAlertCustomItemFrequency:
      type: string
      enum:
        - sec
        - min
        - hr
        - dy
        - wk
        - mon
        - an
      description: |
        The frequency with which this custom alert should be checked.
        Possible values are:

          * `sec`: The alert will be checked once a second.
          * `min`: The alert will be checked once a minute.
          * `hr`: The alert will be checked once an hour.
          * `dy`: The alert will be checked once a day.
          * `wk`: The alert will be checked once a week.
          * `mon`: The alert will be checked once a month.
          * `an`: The alert will be checked once a year.
    configAlertCustomItemPriority:
      type: integer
      minimum: 0
      maximum: 7
      description: |
        The priority of this custom alert.  Zero is the lowest, seven the
        highest priority.
    configAlertCustomItemCondLhs:
      type: string
      example: temp_internal()
      description: >
        An [eScript](/webapi/4.6/openapi/glossary#section/eScript) expression
        that returns the

        value to use on the left hand side of the comparison.
    configAlertCustomItemCondOp:
      type: string
      enum:
        - <
        - <=
        - '='
        - '!='
        - '>='
        - '>'
      description: |
        The comparison-operator to use for comparing the left-hand-side
        expression `lhs` against the right-hand side expression `rhs`.  It
        may be one of:

          * `<`: Condition is true if `lhs` is less than `rhs`.
          * `<=`: Condition is true if `lhs` is less-than-or-equal to `rhs`.
          * `=`: Condition is true if `lhs` is equal to `rhs`.
          * `!=`: Condition is true if `lhs` differs from `rhs`.
          * `>=`: Condition is true if `lhs` is greater-than-or-equal to `rhs`.
          * `>`: Condition is true if `lhs` is greater than `rhs`.
    configAlertCustomItemCondRhs:
      type: string
      example: '30'
      description: >
        An [eScript](/webapi/4.6/openapi/glossary#section/eScript) expression
        that returns the

        value that to use on the right hand side of the comparison.
    configAlertCustomItemCond:
      type: object
      properties:
        lhs:
          $ref: '#/components/schemas/configAlertCustomItemCondLhs'
        op:
          $ref: '#/components/schemas/configAlertCustomItemCondOp'
        rhs:
          $ref: '#/components/schemas/configAlertCustomItemCondRhs'
      description: |
        The boolean condition consists of three parts: `lhs op rhs`. `lhs`
        and `rhs` are arbitrary expressions and `op` must be a comparison
        operator.
    configAlertCustomItem:
      type: object
      properties:
        name:
          $ref: '#/components/schemas/configAlertCustomItemName'
        detail:
          $ref: '#/components/schemas/configAlertCustomItemDetail'
        frequency:
          $ref: '#/components/schemas/configAlertCustomItemFrequency'
        priority:
          $ref: '#/components/schemas/configAlertCustomItemPriority'
        cond:
          $ref: '#/components/schemas/configAlertCustomItemCond'
      description: |
        The custom alert.
    configAlertCustom:
      type: array
      items:
        $ref: '#/components/schemas/configAlertCustomItem'
      description: |
        Up to 32 custom alerts.

        Custom alerts consist of an arbitrary boolean condition that is
        checked at certain times.  When the condition evaluates to true,
        the alert is triggered.
    configAlertReporterWebMinPriority:
      type: integer
      minimum: 0
      maximum: 7
      description: |
        The minimum priority that is required for a new alert to generate
        a report to the web server.  When a report is generated, all other
        unacknowledged alerts are also reported, even if they have a
        priority lower than the value indicated by this resource.
    configAlertReporterWebService:
      type: string
      example: ''
      description: >
        The name of the alert service provider to use for reporting

        alerts.


        To set this to a non-empty value please use the [service

        activation command](/webapi/4.6/openapi/cmd/cmdactivatepost) since that
        ensures the

        service provider knows to expect alerts from this meter.  The body

        of the activation request should contain member `service` set to

        the string `alert` and `provider` set to name of the desired

        service provider.
    configAlertReporterWebUri:
      type: string
      example: https://alerts.com/report
      description: >
        The URI of the web server to use for reporting alerts.


        This resource is available only if

        [/config/alert/reporter/web/service](/webapi/4.6/openapi/configalertreporterwebservice)

        is an empty string.
    configAlertReporterWebOptions:
      type: string
      example: gzip,secure
      description: >
        The options to use when sending an alert report to the web server.


        This resource is available only if

        [/config/alert/reporter/web/service](/webapi/4.6/openapi/configalertreporterwebservice)

        is an empty string.


        Multiple options can be specified in the string by separating them

        with a comma.  Supported options are:

          * `deflate`: Use HTTP Content-Encoding `deflate` when
            transmitting the alert report.

          * `gzip`: Use HTTP Content-Encoding `gzip` when
            transmitting the alert report.

          * `secure`: Only send the alert report if the server's HTTP
            certificate can be verified by the meter.  This option is
            ignored if
            [/config/net/http/client/insecure](/webapi/4.6/openapi/confignethttpclientinsecure)
            is `true`.
    configAlertReporterWebUser:
      type: string
      example: jsmith
      description: >
        The user name to provide to the web server for authentication

        purposes.  If this string is not empty, the user name and the

        password are both sent to the web server using HTTP Basic

        authorization.  For security reasons, this should only be used

        when connecting to the server via an encrypted connection (https).


        This resource is available only if

        [/config/alert/reporter/web/service](/webapi/4.6/openapi/configalertreporterwebservice)

        is an empty string.
    configAlertReporterWebPassword:
      type: string
      example: secret!
      description: |
        The password to be provided to the web server for authentication
        purposes.

        This resource is write-only
    configAlertReporterWeb:
      type: object
      properties:
        min-priority:
          $ref: '#/components/schemas/configAlertReporterWebMinPriority'
        service:
          $ref: '#/components/schemas/configAlertReporterWebService'
        uri:
          $ref: '#/components/schemas/configAlertReporterWebUri'
        options:
          $ref: '#/components/schemas/configAlertReporterWebOptions'
        user:
          $ref: '#/components/schemas/configAlertReporterWebUser'
        password:
          $ref: '#/components/schemas/configAlertReporterWebPassword'
      description: |
        The configuration for reporting alerts via web server.
    configAlertReporterMailServer:
      type: string
      example: smtp.mail.com
      description: |
        The hostname of a mail server that speaks the
        [SMTP](https://www.rfc-editor.org/rfc/rfc821) protocol.  If this
        is set to an empty string, the meter will attempt to deliver mail
        directly to the destination host.  Many Internet service providers
        block direct mail delivery, so leaving this string empty generally
        results in alert emails getting blocked.
    configAlertReporterMailUser:
      type: string
      example: egaugealert@mail.com
      description: |
        The user name to provide to the email server for authentication
        purposes.
    configAlertReporterMailPassword:
      type: string
      description: |
        The password to provide to the email server for authentication
        purposes.

        This resource is write-only.
    configAlertReporterMailFromAddress:
      type: string
      example: eGauge1345
      description: |
        The "From" email address to use when sending an email alert.  If
        set to an empty string, the email server will use a default
        address.
    configAlertReporterMailToItemFormat:
      type: string
      description: |
        The reporting format to use for this destination.  Valid values
        are:

          * `short`: Report only the newest alert with the highest
            priority.

          * `full`: Report all unacknowledged alerts that are pending in
            order from highest to lowest priority.
    configAlertReporterMailToItemMinPriority:
      type: integer
      minimum: 0
      maximum: 7
      example: 3
      description: |
        The minimum priority that is required for a new alert to generate
        an email.  When an email is generated, other lower priority alerts
        may also be included if they are unacknowledged and the reporting
        format allows it.
    configAlertReporterMailToItemAddress:
      type: string
      example: user@site.com
      description: |
        The destination email address to send the alert to.
    configAlertReporterMailToItem:
      type: object
      properties:
        format:
          $ref: '#/components/schemas/configAlertReporterMailToItemFormat'
        min-priority:
          $ref: '#/components/schemas/configAlertReporterMailToItemMinPriority'
        address:
          $ref: '#/components/schemas/configAlertReporterMailToItemAddress'
      description: |
        An email destination to send the alerts to.
    configAlertReporterMailTo:
      type: array
      items:
        $ref: '#/components/schemas/configAlertReporterMailToItem'
      description: |
        The email destinations to send the alerts to.
    configAlertReporterMail:
      type: object
      properties:
        server:
          $ref: '#/components/schemas/configAlertReporterMailServer'
        user:
          $ref: '#/components/schemas/configAlertReporterMailUser'
        password:
          $ref: '#/components/schemas/configAlertReporterMailPassword'
        from-address:
          $ref: '#/components/schemas/configAlertReporterMailFromAddress'
        to:
          $ref: '#/components/schemas/configAlertReporterMailTo'
      description: >
        The configuration for reporting alerts via email server.  If alert

        reporting via web server is enabled

        ([/config/alert/reporter/web/uri](/webapi/4.6/openapi/glossary#section/configalertreporterweburi)

        is not empty), reporting via email server is disabled.
    configAlertReporter:
      type: object
      properties:
        web:
          $ref: '#/components/schemas/configAlertReporterWeb'
        mail:
          $ref: '#/components/schemas/configAlertReporterMail'
      description: |
        The alert reporting configuration.  Alerts may be reported via a
        web server or via an email server.
    configAlertSysPrioItem:
      type: integer
      minimum: 0
      maximum: 7
      description: |
        The priority of this system alert.
    configAlertSysPrio:
      type: array
      items:
        $ref: '#/components/schemas/configAlertSysPrioItem'
      example:
        - 0
        - 0
        - 7
        - 0
        - 7
        - 4
        - 0
        - 0
        - 1
        - 6
        - 0
        - 0
        - 0
        - 5
        - 0
        - 0
        - 0
        - 0
        - 0
        - 0
      description: >
        The priority of each system-generated alert.

        [/sys/alert](/webapi/4.6/openapi/sysalert) provides a description of
        these

        alerts.
    configAlert:
      type: object
      properties:
        custom:
          $ref: '#/components/schemas/configAlertCustom'
        reporter:
          $ref: '#/components/schemas/configAlertReporter'
        sys-prio:
          $ref: '#/components/schemas/configAlertSysPrio'
      description: |
        The alert configuration of the meter.
    config:
      type: object
      properties:
        bacnet:
          $ref: '#/components/schemas/configBacnet'
        db:
          $ref: '#/components/schemas/configDb'
        display:
          $ref: '#/components/schemas/configDisplay'
        language_code:
          $ref: '#/components/schemas/configLanguageCode'
        local:
          $ref: '#/components/schemas/configLocal'
        location:
          $ref: '#/components/schemas/configLocation'
        log:
          $ref: '#/components/schemas/configLog'
        lua:
          $ref: '#/components/schemas/configLua'
        modbus:
          $ref: '#/components/schemas/configModbus'
        net:
          $ref: '#/components/schemas/configNet'
        push:
          $ref: '#/components/schemas/configPush'
        remote:
          $ref: '#/components/schemas/configRemote'
        register:
          $ref: '#/components/schemas/configRegister'
        time:
          $ref: '#/components/schemas/configTime'
        user:
          $ref: '#/components/schemas/configUser'
        var:
          $ref: '#/components/schemas/configVar'
        alert:
          $ref: '#/components/schemas/configAlert'
      description: The meter configuration.
    ctrlInterfaceIfMethodItemName:
      type: string
      example: close
      description: |
        The name of the method.  The name starts with a letter and consists
        entirely of letters, digits, or underscores.
    ctrlInterfaceIfMethodItemIn:
      type: string
      example: u
      description: >
        The [DBus type

        signature](https://dbus.freedesktop.org/doc/dbus-specification.html#type-system)

        of the input arguments to the method. An empty string indicates

        that the method accepts no input arguments.
    ctrlInterfaceIfMethodItemInNamesItem:
      type: string
      example: 'n'
      description: |
        The name of this input argument.
    ctrlInterfaceIfMethodItemInNames:
      type: array
      items:
        $ref: '#/components/schemas/ctrlInterfaceIfMethodItemInNamesItem'
      example:
        - 'n'
      description: |
        The names of the input arguments passed to the method.  Each
        argument name is meant to indicate the purpose of the respective
        argument but, other than that, it is arbitrary.  The documentation
        string given by member `doc` may also refer to these names.
        The `doc` member documentation for details.
    ctrlInterfaceIfMethodItemOut:
      type: string
      example: ''
      description: >
        The [DBus type

        signature](https://dbus.freedesktop.org/doc/dbus-specification.html#type-system)

        of the return value of the method. An empty string indicates that

        the method returns no value.
    ctrlInterfaceIfMethodItemDoc:
      type: string
      example: Close the relay with index <arg>n</arg>.
      description: |
        Description of the purpose and operation of the method. Within
        this string, references to input argument names are enclosed
        within `<arg>` and `</arg>` tags to facilitate highlighting of
        argument names.
    ctrlInterfaceIfMethodItem:
      type: object
      properties:
        name:
          $ref: '#/components/schemas/ctrlInterfaceIfMethodItemName'
        in:
          $ref: '#/components/schemas/ctrlInterfaceIfMethodItemIn'
        in_names:
          $ref: '#/components/schemas/ctrlInterfaceIfMethodItemInNames'
        out:
          $ref: '#/components/schemas/ctrlInterfaceIfMethodItemOut'
        doc:
          $ref: '#/components/schemas/ctrlInterfaceIfMethodItemDoc'
      example:
        name: close
        in: u
        in_names:
          - 'n'
        out: ''
        doc: Close the relay with index <arg>n</arg>.
      description: |
        The description of this method.
    ctrlInterfaceIfMethod:
      type: array
      items:
        $ref: '#/components/schemas/ctrlInterfaceIfMethodItem'
      example:
        - name: close
          in: u
          in_names:
            - 'n'
          out: ''
          doc: Close the relay with index <arg>n</arg>.
        - name: open
          in: u
          in_names:
            - 'n'
          out: ''
          doc: Open the relay with index <arg>n</arg>.
      description: |
        The array of methods provided by this interface.  The methods are
        listed in no particular order.
    ctrlInterfaceIf:
      type: object
      properties:
        method:
          $ref: '#/components/schemas/ctrlInterfaceIfMethod'
      example:
        method:
          - name: close
            in: u
            in_names:
              - 'n'
            out: ''
            doc: Close the relay with index <arg>n</arg>.
          - name: open
            in: u
            in_names:
              - 'n'
            out: ''
            doc: Open the relay with index <arg>n</arg>.
      description: |
        Description of the interface.
    ctrlInterface:
      type: object
      additionalProperties:
        x-additionalPropertiesName: if
        $ref: '#/components/schemas/ctrlInterfaceIf'
      example:
        modbus:
          method:
            - name: read_coils
              in: qq
              in_names:
                - addr
                - count
              out: ay
              doc: >-
                Read <arg>count</arg> number of coils starting with the coil at
                address <arg>addr</arg>. The return value is a Modbus reply
                packet which may contain an exception status or the requested
                coil values.
        relay:
          method:
            - name: close
              in: u
              in_names:
                - 'n'
              out: ''
              doc: Close the relay with index <arg>n</arg>.
            - name: open
              in: u
              in_names:
                - 'n'
              out: ''
              doc: Open the relay with index <arg>n</arg>.
      description: |
        The names and descriptions of control interfaces detected by the
        meter.
    luaVarNameValue:
      type: string
      example:
        result: '1677697200'
      description: |
        The current value of this persistent variable as a JSON-encoded
        string.

        While it is possible to write this value via the WebAPI, Lua
        scripts generally will also be updating the value as part of their
        execution, so any change in value may be temporary and whether or
        not a WebAPI write is detected by the scripts depends on the
        scripts themselves.
    luaVarNameDesc:
      type: string
      example:
        result: Start of the current billing interval.
      description: |
        A brief, user-friendly description of the purpose of this
        persistent variable.  This description is set when the persistent
        variable is created and is in the language chosen by the author of
        the Lua script that is created the variable.  The string is,
        therefore, not localized to the user's environment.
    luaVarName:
      type: object
      properties:
        value:
          $ref: '#/components/schemas/luaVarNameValue'
        desc:
          $ref: '#/components/schemas/luaVarNameDesc'
      example:
        result:
          value: '1677697200'
          desc: Start of the current billing interval.
      description: |
        A persistent Lua variable.
    luaVar:
      type: object
      additionalProperties:
        x-additionalPropertiesName: name
        $ref: '#/components/schemas/luaVarName'
      description: |
        The persistent Lua variables.  Such variables are non-volatile.
        That is, their value is preserved across script restarts and
        reboots (power-cycles).  Persistent variables can be created and
        manipulated with the built-in Lua module
        [`persistent`](https://www.egauge.net/support/lua/module/control).
    lua:
      type: object
      properties:
        var:
          $ref: '#/components/schemas/luaVar'
      description: |
        This service provides access to Lua-script related information.
    sysAlertItemId:
      type: string
      example: pxyup
      description: |
        A short id that uniquely identifies this system alert. The id
        consists entirely of alpha-numeric characters.
    sysAlertItemReason:
      type: string
      example: Proxy-connection established
      description: |
        A brief explanation of the system condition that triggers is
        system alert.  The string is localized according to the selected
        language-code or is in English if a translation is unavailable.
    sysAlertItem:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/sysAlertItemId'
        reason:
          $ref: '#/components/schemas/sysAlertItemReason'
      description: |
        Description of a system alert.
    sysAlert:
      type: array
      items:
        $ref: '#/components/schemas/sysAlertItem'
      example:
        - id: badid
          reason: Unknown alert
        - id: pxyup
          reason: Proxy-connection established
        - id: pxydn
          reason: Proxy-connection lost
        - id: cfgchg
          reason: Device-configuration changed
      description: |
        Descriptions of the system-generated alerts.
    sysBootReason:
      type: string
      example: software reset
      description: |
        The reason for the most recent CPU reset. The strings vary
        depending on the hardware platform. For EG4*xxx* model devices,
        the possible values are:

          * `general reset`: CPU was powered on when the backup battery
            was depleted.

          * `wakeup`: CPU was powered on when backup battery still had
            sufficient charge left.

          * `watchdog reset`: The CPU's watchdog timer triggered the reset.

          * `software reset`: Firmware requested a reboot.

          * `user reset`: Not applicable.

          * `unknown reset`: Not applicable.
    sysBootTime:
      type: string
      example: '1677287880.350'
      description: >
        The time of the last user-initiated reboot.  It is a decimal [Unix

        timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp) string
        or `null` if

        unavailable.  Unanticipated reboots, e.g., due to power failure or

        watchdog-timeouts do not update this resource.
    sysBoot:
      type: object
      properties:
        reason:
          $ref: '#/components/schemas/sysBootReason'
        time:
          $ref: '#/components/schemas/sysBootTime'
      description: |
        Information about the most recent power-up (boot) event.
    sysDbMaxRegisters:
      type: integer
      minimum: 1
      example: 64
      description: |
        The maximum number of registers (columns) that can be stored in
        the meter's database.
    sysDbLevelItemHead:
      type: string
      example: '1726675935'
      description: >
        The [Unix
        timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp) of the
        most recent

        data row stored at this level of the database.  If `null`, no row

        is currently available at this database level.
    sysDbLevelItemInterval:
      type: integer
      example: 1000
      description: |
        The time interval in milliseconds between database rows at this
        level.  For example, a value of 1000 would indicate that the level
        contains second-by-second data rows.
    sysDbLevelItemRowCount:
      type: integer
      example: 32768
      description: |
        The number of rows available at this storage level.  Each database
        level is cyclical so a level with _n_ rows and an interval of _t_
        milliseconds can retain the most recent _n_·_t_ milliseconds worth
        of data.
    sysDbLevelItemVolatile:
      type: boolean
      description: |
        This is `true` if this level of the database storage is volatile.
        The data in volatile levels is lost each time the meter is powered
        up (rebooted).
    sysDbLevelItem:
      type: object
      properties:
        head:
          $ref: '#/components/schemas/sysDbLevelItemHead'
        interval:
          $ref: '#/components/schemas/sysDbLevelItemInterval'
        row-count:
          $ref: '#/components/schemas/sysDbLevelItemRowCount'
        volatile:
          $ref: '#/components/schemas/sysDbLevelItemVolatile'
      description: |
        Definition of a database storage level.
    sysDbLevel:
      type: array
      items:
        $ref: '#/components/schemas/sysDbLevelItem'
      example:
        - head: '1726686333'
          interval: 1000
          row-count: 32768
          volatile: true
        - head: '1726686300'
          interval: 60000
          row-count: 527040
          volatile: false
        - head: '1726686000'
          interval: 900000
          row-count: 350640
          volatile: false
        - head: null
          interval: 86400000
          row-count: 21914
          volatile: false
      description: |
        Definition of the available database storage levels.
    sysDb:
      type: object
      properties:
        max-registers:
          $ref: '#/components/schemas/sysDbMaxRegisters'
        level:
          $ref: '#/components/schemas/sysDbLevel'
      description: |
        The database configuration of the meter.
    sysDevSerialItemDevpath:
      type: string
      example: USB2.1
      description: |
        The device path of the serial port that uniquely identifies the
        port it is attached to.
    sysDevSerialItemManufacturer:
      type: string
      example: eGauge
      description: |
        The name of the manufacturer of the serial port hardware.
    sysDevSerialItemProduct:
      type: string
      example: usb485
      description: |
        The product name of the serial port hardware.
    sysDevSerialItemSn:
      type: string
      example: DN02MI0P
      description: |
        The serial number of the serial port hardware.
    sysDevSerialItemVersion:
      type: string
      example: 2
      description: |
        The version of the serial port hardware.
    sysDevSerialItem:
      type: object
      properties:
        devpath:
          $ref: '#/components/schemas/sysDevSerialItemDevpath'
        manufacturer:
          $ref: '#/components/schemas/sysDevSerialItemManufacturer'
        product:
          $ref: '#/components/schemas/sysDevSerialItemProduct'
        sn:
          $ref: '#/components/schemas/sysDevSerialItemSn'
        version:
          $ref: '#/components/schemas/sysDevSerialItemVersion'
      description: |
        An attached serial port.
    sysDevSerial:
      type: array
      items:
        $ref: '#/components/schemas/sysDevSerialItem'
      example:
        - devpath: USB2.1
          manufacturer: eGauge
          product: usb485
          sn: DN02MI0P
          version: '2.00'
      description: |
        The list of serial ports that are attached to the meter.
    sysDev:
      type: object
      properties:
        serial:
          $ref: '#/components/schemas/sysDevSerial'
      description: |
        A description of hardware devices that are attached to the meter.
    sysFuncBasicNameArgItemName:
      type: string
      example: x
      description: |
        The formal name of the argument.  The name starts with a letter
        and consist entirely of alpha-numeric characters or underscores
        (`_`).  The name usually suggests the purpose of the
        argument.  It may also be referenced within the help string
        (member `help`).  Other than that, the name has no significance.
    sysFuncBasicNameArgItemType:
      type: string
      example: '#'
      description: >
        A [type code](/webapi/4.6/openapi/glossary#section/Type-Codes)
        indicating the type of the

        argument.  The special value `string` indicates that the value

        must be a string.
    sysFuncBasicNameArgItem:
      type: object
      properties:
        name:
          $ref: '#/components/schemas/sysFuncBasicNameArgItemName'
        type:
          $ref: '#/components/schemas/sysFuncBasicNameArgItemType'
      example:
        name: x
        type: '#'
      description: |
        Description of the argument expected at index {idx} of the
        argument list.
    sysFuncBasicNameArg:
      type: array
      items:
        $ref: '#/components/schemas/sysFuncBasicNameArgItem'
      example:
        - name: x
          type: '#'
        - name: 'y'
          type: '#'
      description: |
        The list of input arguments the function expects.
    sysFuncBasicNameHelp:
      type: string
      example: Returns the greater value of <arg>x</arg> and <arg>y</arg>.
      description: |
        The help string (documentation) for this function.  In this
        string, references to argument names are enclosed in `arg` tags
        using an XML-like syntax. For example, a reference to an argument
        with name `count` would appear as `<arg>count</arg>` in this
        string.  This can be used to highlight argument names in the
        document string, for example.
    sysFuncBasicNameMinArgs:
      type: string
      example: 2
      description: |
        The minimum number of arguments that need to be passed when
        calling this function.  If zero, all arguments are optional.  This
        value is never larger than the length of the array given for
        member `arg`.
    sysFuncBasicName:
      type: object
      properties:
        arg:
          $ref: '#/components/schemas/sysFuncBasicNameArg'
        help:
          $ref: '#/components/schemas/sysFuncBasicNameHelp'
        min-args:
          $ref: '#/components/schemas/sysFuncBasicNameMinArgs'
      example: max
      description: |
        The name of the eScript function.
        Function names start with a letter and consist entirely of alpha-numeric
        characters or underscores (`_`).
    sysFuncBasic:
      type: object
      additionalProperties:
        x-additionalPropertiesName: name
        $ref: '#/components/schemas/sysFuncBasicName'
      example:
        max:
          arg:
            - name: x
              type: '#'
            - name: 'y'
              type: '#'
          help: Returns the greater value of <arg>x</arg> and <arg>y</arg>.
          min-args: 2
        sin:
          arg:
            - name: x
              type: '#'
          help: >-
            Returns sine of <arg>x</arg>, where <arg>x</arg> is an angle in
            degrees.
          min-args: 1
      description: >
        Documents the *basic*
        [eScript](/webapi/4.6/openapi/glossary#section/eScript) functions. 
        Basic

        functions are available any place eScript expressions may appear.
    sysFuncAlertNameArgItemName:
      type: string
      example: reg
      description: |
        The formal name of the argument.  The name starts with a letter
        and consist entirely of alpha-numeric characters or underscores
        (`_`).  The name usually suggests the purpose of the
        argument.  It may also be referenced within the help string
        (member `help`).  Other than that, the name has no significance.
    sysFuncAlertNameArgItemType:
      type: string
      example: string
      description: >
        A [type code](/webapi/4.6/openapi/glossary#section/Type-Codes)
        indicating the type of the

        argument.  The special value `string` indicates that the value

        must be a string.
    sysFuncAlertNameArgItem:
      type: object
      properties:
        name:
          $ref: '#/components/schemas/sysFuncAlertNameArgItemName'
        type:
          $ref: '#/components/schemas/sysFuncAlertNameArgItemType'
      example:
        name: reg
        type: string
      description: |
        Description of the argument expected at index {idx} of the
        argument list.
    sysFuncAlertNameArg:
      type: array
      items:
        $ref: '#/components/schemas/sysFuncAlertNameArgItem'
      example:
        - name: reg
          type: string
      description: |
        The list of input arguments the function expects.
    sysFuncAlertNameHelp:
      type: string
      example: Calculates the 24-hour average value for register <arg>reg</arg>.
      description: |
        The help string (documentation) for this function.  In this
        string, references to argument names are enclosed in `arg` tags
        using an XML-like syntax. For example, a reference to an argument
        with name `count` would appear as `<arg>count</arg>` in this
        string.  This can be used to highlight argument names in the
        document string, for example.
    sysFuncAlertNameMinArgs:
      type: string
      example: 1
      description: |
        The minimum number of arguments that need to be passed when
        calling this function.  If zero, all arguments are optional.  This
        value is never larger than the length of the array given for
        member `arg`.
    sysFuncAlertName:
      type: object
      properties:
        arg:
          $ref: '#/components/schemas/sysFuncAlertNameArg'
        help:
          $ref: '#/components/schemas/sysFuncAlertNameHelp'
        min-args:
          $ref: '#/components/schemas/sysFuncAlertNameMinArgs'
      example: dayavg
      description: |
        The name of the eScript function.
        Function names start with a letter and consist entirely of alpha-numeric
        characters or underscores (`_`).
    sysFuncAlert:
      type: object
      additionalProperties:
        x-additionalPropertiesName: name
        $ref: '#/components/schemas/sysFuncAlertName'
      example:
        dayavg:
          arg:
            - name: reg
              type: string
          help: Calculates the 24-hour average value for register <arg>reg</arg>.
          min-args: 1
        cumul:
          arg:
            - name: reg
              type: string
            - name: time
              type: '#'
          help: >-
            Returns the cumulative value of register named <arg>reg</arg> at
            time <arg>time</arg>.  If <arg>time</arg> is not specified, the
            current time is used.
          min-args: 1
      description: >
        Documents the *alert*
        [eScript](/webapi/4.6/openapi/glossary#section/eScript) functions. 
        These

        functions are available only for eScript expressions evaluated as

        part of alert conditions.
    sysFunc:
      type: object
      properties:
        basic:
          $ref: '#/components/schemas/sysFuncBasic'
        alert:
          $ref: '#/components/schemas/sysFuncAlert'
      description: >
        Documents the [eScript](/webapi/4.6/openapi/glossary#section/eScript)
        functions built

        into the meter.
    sysModbusClientMapNameOptionOpt:
      type: string
      example: 9600/8n1
      description: |
        The value of the Modbus map option.
    sysModbusClientMapNameOption:
      type: object
      additionalProperties:
        x-additionalPropertiesName: opt
        $ref: '#/components/schemas/sysModbusClientMapNameOptionOpt'
      example:
        default-modbus-addr: '2'
        default-serial-params: 9600/8n1
      description: |
        A set of options.  The meter currently supports the following
        options:

          * `default-modbus-addr`: The Modbus unit-number to use by
          default.  This must be a decimal string.  For example: `1`.

          * `default-serial-params`: The default serial parameters to use
          when the remote device is connected via a serial port
          (Modbus/RTU).  This must be a string.  For example: `9600/8n1`
          for 9600 baud, 8 databits, no parity, 1 stop bit.

          * `default-tcp-port`: The default TCP port number to use when
          the remote device is connected via Modbus/TCP.  This must be a
          decimal string.  For example: `6001`.
    sysModbusClientMapNameRegItemName:
      type: string
      example: irradiance
      description: |
        The name of the register.  The user can choose this name freely so
        long as each register within a map has a unique name.
    sysModbusClientMapNameRegItemAddr:
      type: integer
      minimum: 0
      maximum: 65535
      description: |
        The Modbus address of the register.
    sysModbusClientMapNameRegItemType:
      type: string
      example: u32
      enum:
        - bit
        - s16
        - u16
        - s32
        - u32
        - s32l
        - u32l
        - s64
        - u64
        - float16
        - float16l
        - float
        - floatl
        - double
      description: |
        The type of the register value.  This may be one of the following:

          * `bit`: One-bit value (a coil, in Modbus terminology).
          * `s16`: Signed 16-bit integer.
          * `u16`: Unsigned 16-bit integer.
          * `s32`: Signed 32-bit integer.
          * `u32`: Unsigned 32-bit integer.
          * `s32l`: Signed 32-bit integer, word-swapped.
          * `u32l`: Unsigned 32-bit integer, word-swapped.
          * `s64`: Signed 64-bit integer.
          * `u64`: Unsigned 64-bit integer.
          * `float16`: IEEE-754 half-precision float.
          * `float16l`: IEEE-754 half-precision floating point,
            little-endian (byte-swapped).
          * `float`: IEEE-754 single-precision float.
          * `floatl`: IEEE-754 single-precision float, word-swapped.
          * `double`: IEEE-754 double-precision float.
    sysModbusClientMapNameRegItemKind:
      type: string
      enum:
        - analog
        - enum
        - bitset
      description: |
        The kind of the register. Possible values are:

          * `analog`: The value is continuous (the average of two values is
            meaningful).

          * `enum`: The value is discrete (the average of two values is not
            meaningful).  An example for this would be a numeric error code.

          * `bitset`: Each bit in the value is a discrete on/off value.
          An example for this would be a set of error flags.
    sysModbusClientMapNameRegItemUnit:
      type: string
      example: W
      description: |
        For register of the `analog` kind, this defines the physical unit of
        the register value.  This must be one of the following:

          * `#3`: Unit-less number with 3 decimal digits of precision.
          * `%`: Percentage.
          * `A`: Electric current in amperes.
          * `Ah`: Electric charge in ampere-hours.
          * `As`: Electric charge in ampere-seconds.
          * `C`: Temperature in degree celsius.
          * `Degrees`: Angle in degrees.
          * `Hz`: Frequency in hertz.
          * `Ohm`: Resistance in ohm.
          * `Pa`: Pressure in pascals.
          * `Pct`: Percentage.
          * `RH`: Relative humidity.
          * `Tmd`: Time in days.
          * `Tmh`: Time in hours.
          * `Tms`: Time in seconds.
          * `VA`: Apparent power in volt-amperes.
          * `VAh`: Apparent energy in volt-ampere-hours.
          * `V`: Electric potential in volts.
          * `W/m2`: Irradiance in watts-per-square-meter.
          * `W/m^2`: Irradiance in watts-per-square-meter.
          * `W`: Power in watts.
          * `Wh`: Energy in watt-hours.
          * `degC`: Temperature in degree celsius.
          * `deg`: Angle in degrees.
          * `g`: Mass in grams.
          * `hPa`: Pressure in hecto-pascals.
          * `h`: Time in hours.
          * `kAh`: Electric charge in kilo-ampere-hours.
          * `kO`: Resistance in kilo-ohms.
          * `kPa`: Pressure in kilo-pascals.
          * `kVAh`: Apparent energy in kilo-volt-ampere-hours.
          * `kW`: Power in kilo-watts.
          * `kWh`: Energy in kilo-watt-hours.
          * `kg`: Mass in kilo-grams.
          * `kvarh`: Reactive energy in kilo-volt-ampere-hours.
          * `m/s`: Speed in meters-per-second.
          * `m3/s`: Volume flow in cubic-meters-per-second.
          * `m3`: Volume in cubic-meters.
          * `mA`: Electric current in milli-amperes.
          * `mAh`: Electric charge in milli-ampere-hours.
          * `mSecs`: Time in milli-seconds.
          * `mV`: Electric potential in milli-volts.
          * `mV`: Electric potential in milli-volts.
          * `m^3/s`: Volume flow in cubic-meters-per-second.
          * `m^3`: Volume in cubic-meters.
          * `meters`: Distance in meters.
          * `mm`: Distance in milli-meters.
          * `mps`: Speed in meters-per-second.
          * `ms`: Time in milli-seconds.
          * `ohms`: Resistance in ohm.
          * `ppm`: Parts-per-million.
          * `s`: Time in seconds.
          * `secs`: Time in seconds.
          * `var`: Reactive power in volt-ampere.
          * `varh`: Reactive energy in volt-ampere-hours.
          * `°C`: Temperature in degree celsius.
    sysModbusClientMapNameRegItemOffset:
      type: number
      description: |
        An offset value that is used to convert the Modbus register value
        to a value in the specified physical unit.  Specifically, when the
        Modbus value of the register is *reg*, then corresponding physical
        value *phys* is calculated as:

          > *phys* = (*reg* + `offset`) * `scale`

        where `offset` is the value defined here and `scale` is
        the value defined for member `scale`.
    sysModbusClientMapNameRegItemScale:
      type: number
      example: 0.1
      description: |
        A scale value that is used to convert the Modbus register value
        to a value in the specified physical unit.  Specifically, when the
        Modbus value of the register is *reg*, then corresponding physical
        value *phys* is calculated as:

          > *phys* = (*reg* + `offset`) * `scale`

        where `scale` is the value defined here and `offset` is
        the value defined for member `offset`.
    sysModbusClientMapNameRegItemAccess:
      type: string
      enum:
        - ro
        - rw
      description: |
        The access-mode of the register.  It must be one of:
          * `ro`: read-only
          * `rw`: read-write
    sysModbusClientMapNameRegItem:
      type: object
      properties:
        name:
          $ref: '#/components/schemas/sysModbusClientMapNameRegItemName'
        addr:
          $ref: '#/components/schemas/sysModbusClientMapNameRegItemAddr'
        type:
          $ref: '#/components/schemas/sysModbusClientMapNameRegItemType'
        kind:
          $ref: '#/components/schemas/sysModbusClientMapNameRegItemKind'
        unit:
          $ref: '#/components/schemas/sysModbusClientMapNameRegItemUnit'
        offset:
          $ref: '#/components/schemas/sysModbusClientMapNameRegItemOffset'
        scale:
          $ref: '#/components/schemas/sysModbusClientMapNameRegItemScale'
        access:
          $ref: '#/components/schemas/sysModbusClientMapNameRegItemAccess'
      description: |
        A Modbus register definition.
    sysModbusClientMapNameReg:
      type: array
      items:
        $ref: '#/components/schemas/sysModbusClientMapNameRegItem'
      description: |
        A list of Modbus register definitions.
    sysModbusClientMapName:
      type: object
      properties:
        option:
          $ref: '#/components/schemas/sysModbusClientMapNameOption'
        reg:
          $ref: '#/components/schemas/sysModbusClientMapNameReg'
      example:
        option:
          default-modbus-addr: '2'
          default-serial-params: 9600/8n1
        reg:
          - name: irradiance
            addr: 0
            type: u32
            kind: analog
            unit: W
            offset: 0
            scale: 0.1
            access: ro
          - name: temp
            addr: 1
            type: s32
            kind: analog
            unit: degC
            offset: 0
            scale: 0.01
            access: ro
      description: |
        Modbus map consisting of a list of register definitions and a set
        of options.
    sysModbusClientMap:
      type: object
      additionalProperties:
        x-additionalPropertiesName: name
        $ref: '#/components/schemas/sysModbusClientMapName'
      example:
        sys_dev:
          option:
            default-modbus-addr: '2'
            default-serial-params: 9600/8n1
          reg:
            - name: irradiance
              addr: 0
              type: u32
              kind: analog
              unit: W
              offset: 0
              scale: 0.1
              access: ro
            - name: temp
              addr: 1
              type: s32
              kind: analog
              unit: degC
              offset: 0
              scale: 0.01
              access: ro
      description: >
        System-defined (built-in) Modbus address maps.  The user-defined

        maps are available at

        [/config/modbus/client/map](/webapi/4.6/openapi/configmodbusclientmap). 
        If a

        user-defined map with the same name as a system map exists, it

        will shadow (mask) the system map with the same name.
    sysModbusClient:
      type: object
      properties:
        map:
          $ref: '#/components/schemas/sysModbusClientMap'
      description: |
        Modbus client related information.
    sysModbus:
      type: object
      properties:
        client:
          $ref: '#/components/schemas/sysModbusClient'
      description: |
        Modbus-related information built into the firmware.
    sysModel:
      type: string
      description: |
        The model name of the meter. For example, `EG4030`.
    sysNetHomeplugBridgeItemMac:
      type: string
      example: 32:b7:c2:96:c3:78
      description: |
        The MAC address of the HomePlug bridge device.
    sysNetHomeplugBridgeItemSpeedRx:
      type: integer
      example: 8934500
      description: |
        The current estimated speed at which the meter can receive data
        from this bridge device.  This is reported as bits/second.
    sysNetHomeplugBridgeItemSpeedTx:
      type: integer
      example: 9000000
      description: |
        The current estimated speed at which the meter can send data to
        this bridge device.  This is reported as bits/second.  On egauge2
        devices, this member is unavailable.
    sysNetHomeplugBridgeItemSpeed:
      type: object
      properties:
        rx:
          $ref: '#/components/schemas/sysNetHomeplugBridgeItemSpeedRx'
        tx:
          $ref: '#/components/schemas/sysNetHomeplugBridgeItemSpeedTx'
      description: |
        Information about the current estimated speed at which
        communication occurs to this bridge device.
    sysNetHomeplugBridgeItemType:
      type: string
      example: hpav
      description: |
        The HomePlug chipset used by the bridge device.  This member is
        available only if the chipset could be identified.
    sysNetHomeplugBridgeItemVendor:
      type: string
      example: TP-Link
      description: |
        The name of the manufacturer of this HomePlug bridge device.  This
        member is available only if the chipset could be identified.
    sysNetHomeplugBridgeItem:
      type: object
      properties:
        mac:
          $ref: '#/components/schemas/sysNetHomeplugBridgeItemMac'
        speed:
          $ref: '#/components/schemas/sysNetHomeplugBridgeItemSpeed'
        type:
          $ref: '#/components/schemas/sysNetHomeplugBridgeItemType'
        vendor:
          $ref: '#/components/schemas/sysNetHomeplugBridgeItemVendor'
      description: |
        The status of a detected HomePlug bridge device.
    sysNetHomeplugBridge:
      type: array
      items:
        $ref: '#/components/schemas/sysNetHomeplugBridgeItem'
      description: |
        The array of HomePlug bridge devices detected.
    sysNetHomeplug:
      type: object
      properties:
        bridge:
          $ref: '#/components/schemas/sysNetHomeplugBridge'
      description: |
        The HomePlug status.
    sysNetIpv4Dhcp:
      type: boolean
      description: |
        Whether or not to use [DHCP](https://www.ietf.org/rfc/rfc2131.txt)
        to automatically provision the IPv4 address.  If `true`, DHCP is
        enabled. If `false`, the manually configured IPv4 settings are
        used.
    sysNetIpv4Address:
      type: string
      example: 192.168.1.42
      description: |
        An IPv4 address in dotted decimal notation.
    sysNetIpv4Broadcast:
      type: string
      example: 192.168.1.255
      description: |
        An IPv4 broadcast address in dotted decimal notation.
    sysNetIpv4Netmask:
      type: string
      example: 255.255.255.0
      description: |
        The address of the IPv4 gateway in dotted decimal notation.
    sysNetIpv4Network:
      type: string
      example: 192.168.1.0
      description: |
        The IPv4 network mask in dotted decimal notation.
    sysNetIpv4Gateway:
      type: string
      example: 192.168.1.1
      description: |
        The IPv4 network number in dotted decimal notation.
    sysNetIpv4:
      type: object
      properties:
        dhcp:
          $ref: '#/components/schemas/sysNetIpv4Dhcp'
        address:
          $ref: '#/components/schemas/sysNetIpv4Address'
        broadcast:
          $ref: '#/components/schemas/sysNetIpv4Broadcast'
        netmask:
          $ref: '#/components/schemas/sysNetIpv4Netmask'
        network:
          $ref: '#/components/schemas/sysNetIpv4Network'
        gateway:
          $ref: '#/components/schemas/sysNetIpv4Gateway'
      description: |
        The Internet Protocol v4 ([IPv4](https://www.rfc-editor.org/rfc/rfc791))
        configuration.
    sysNetNtpServerItemAddress:
      type: string
      example: 192.168.1.1
      description: |
        The network address of the configured NTP server.  This is
        typically a string-representation of the server's IP address,
        which may be either an IP v4 or v6 address. If the address is
        unknown, this is `null`.
    sysNetNtpServerItemName:
      type: string
      example: null
      description: |
        The hostname of the configured NTP server.  If the name is
        unknown, this this is `null`.  This normally happens when the NTP
        server is configured as an IP address.
    sysNetNtpServerItemState:
      type: string
      example: SYNC
      enum:
        - INVAL
        - PEER
        - SYNC
        - TRACK
      description: |
        The meter's view of the current state of this NTP server.  It may
        have one of the following values:

          * `INVAL`: The server is invalid, e.g., because the hostname
          could not be resolved to a network address or because the remote
          server is not responding.

          * `TRACK`: The server is being tracked and, if everything
          continues to work fine, it will enter the `PEER` state shortly.

          * `PEER`: The server is a peer and could be used as a time source.

          * `SYNC`: The server is a peer and the meter's time is
          synchronized with this server.
    sysNetNtpServerItemWeight:
      type: integer
      example: 1
      description: |
        The meter's estimate of the weight that should be given to this
        NTP server's time.
    sysNetNtpServerItemTrustLevel:
      type: integer
      example: 10
      description: |
        The meter's estimate of how trustworthy this server's time is.
        Higher numbers indicate a higher level of trustworthiness.
    sysNetNtpServerItemStratum:
      type: integer
      example: 3
      description: |
        The meter's estimate of the time accuracy provided by this server.
        Smaller numbers mean higher accuracy.  A stratum 0 server is the
        most accurate (atomic clock or GPS clock).
        This is available only if the meter considers this server a peer.
    sysNetNtpServerItemNextPoll:
      type: integer
      example: 615
      description: |
        The time that needs to elapse before the meter contacts this
        server again.  The unit is seconds.
    sysNetNtpServerItemPollInterval:
      type: integer
      example: 1545
      description: |
        The interval of time between successive contacts from the meter to
        this server.  The unit is seconds.
    sysNetNtpServerItemOffset:
      type: number
      example: -0.601
      description: |
        The estimated difference between the meter's time and this NTP
        server's time.  The unit is milliseconds.
        This is available only if the meter considers this server a peer.
    sysNetNtpServerItemDelay:
      type: number
      example: 0.79
      description: |
        The estimated time it takes for a network packet from the meter to
        reach this NTP server (or vice versa).  The unit is milliseconds.
        This is available only if the meter considers this server a peer.
    sysNetNtpServerItemJitter:
      type: number
      example: 0.106
      description: |
        The estimated jitter (variation) for the time it takes for a
        network packet from the meter to reach this NTP server (or vice
        versa). The unit is milliseconds.
        This is available only if the meter considers this server a peer.
    sysNetNtpServerItem:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/sysNetNtpServerItemAddress'
        name:
          $ref: '#/components/schemas/sysNetNtpServerItemName'
        state:
          $ref: '#/components/schemas/sysNetNtpServerItemState'
        weight:
          $ref: '#/components/schemas/sysNetNtpServerItemWeight'
        trust_level:
          $ref: '#/components/schemas/sysNetNtpServerItemTrustLevel'
        stratum:
          $ref: '#/components/schemas/sysNetNtpServerItemStratum'
        next_poll:
          $ref: '#/components/schemas/sysNetNtpServerItemNextPoll'
        poll_interval:
          $ref: '#/components/schemas/sysNetNtpServerItemPollInterval'
        offset:
          $ref: '#/components/schemas/sysNetNtpServerItemOffset'
        delay:
          $ref: '#/components/schemas/sysNetNtpServerItemDelay'
        jitter:
          $ref: '#/components/schemas/sysNetNtpServerItemJitter'
      description: |
        Status of the NTP server.
    sysNetNtpServer:
      type: array
      items:
        $ref: '#/components/schemas/sysNetNtpServerItem'
      example:
        - address: 192.168.1.1
          name: null
          state: SYNC
          weight: 1
          trust_level: 10
          stratum: 3
          next_poll: 615
          poll_interval: 1545
          offset: 0.228
          delay: 0.79
          jitter: 0.106
        - address: 66.228.58.20
          name: north-america.pool.ntp.org
          state: PEER
          weight: 1
          trust_level: 10
          stratum: 3
          next_poll: 499
          poll_interval: 1480
          offset: -0.601
          delay: 39.609
          jitter: 2.258
      description: >
        Status of each [configured](/webapi/4.6/openapi/confignetntpserver) NTP
        server.
    sysNetNtp:
      type: object
      properties:
        server:
          $ref: '#/components/schemas/sysNetNtpServer'
      description: |
        Network Time Protocol
        ([NTP](https://www.rfc-editor.org/rfc/rfc5905)) status.
    sysNetWlanApItemBssid:
      type: string
      example: d8:08:a5:ae:4c:e1
      description: |
        The BSSID (basic service set identifier) of this access point.
        This is a MAC address formatted as six two-digit hex numbers,
        separated by colons (`:`).
    sysNetWlanApItemFlags:
      type: string
      example: '[WPA2-PSK-CCMP][ESS]'
      description: |
        A set of flags enclosed in square brackets.  Each flag gives some
        information about the capabilities of this access point.

        The following flags are currently defined:

          * `DMG`: Indicates the access-point supports 802.11ad
            directional multi-gigabit (DMG).

          * `EBSS`: The access-point supports extended wireless networks.

          * `FILS`: The access-point supports 802.11ai fast initial link setup.

          * `FST`: The access-point supports fast session transfers.

          * `HS20`: The access-point supports Hot Spot 2.0 (Wi-Fi
            Certified Passpoint).

          * `IBSS`: The access-point supports independent basic service
            set (ad-hoc) wireless networks.

          * `MESH`: The access-point uses a mesh network.

          * `OSEN`: The access-point supports Server-only authenticated
            layer 2 Encryption Network.

          * `OWE-TRANS`: See Opportunistic Wireless Extension.

          * `OWE-TRANS-OPEN`: See Opportunistic Wireless Extension.

          * `P2P`: The access-point supports point-to-point (WiFi Direct)
            wireless networks.

          * `PBSS`: Indicates the access-point supports personal basic
            service set wireless networks.

          * `RSN`: Indicates the access-point supports Robust Security
            Network (RSN).

          * `UTF-8`: The SSID is UTF-8 encoded.

          * `WEP`: The access-point supports Wired Equivalent Privacy (WEP).

          * `WPA`: The access-point supports Wi-Fi Protected Access (WPA).

          * `WPA2`: The access-point supports Wi-Fi Protected Access (WPA)
            version 2.

          * `WPS`: The access-point supports Wi-Fi Protected Setup (WPS).

        Encryption-related flags may be followed by various sub-flags that
        are separated by a `+` character.  For example,
        `WPA2-PSK-CCMP+TKIP` indicates that WPA2-PSK-CCMP is supported
        with the TKIP protocol.
    sysNetWlanApItemFrequency:
      type: integer
      example: 2452
      description: |
        The frequency in MHz of this access point.
    sysNetWlanApItemSignalLevel:
      type: integer
      example: -18
      description: |
        The signal-strength (in dB) with which the meter is receiving this
        access point.  This is typically a negative number with larger
        (less negative) numbers indicating higher signal strength.
    sysNetWlanApItemSsid:
      type: string
      example: wireless
      description: |
        The SSID (service set identifier) of this WLAN network.
    sysNetWlanApItem:
      type: object
      properties:
        bssid:
          $ref: '#/components/schemas/sysNetWlanApItemBssid'
        flags:
          $ref: '#/components/schemas/sysNetWlanApItemFlags'
        frequency:
          $ref: '#/components/schemas/sysNetWlanApItemFrequency'
        signal_level:
          $ref: '#/components/schemas/sysNetWlanApItemSignalLevel'
        ssid:
          $ref: '#/components/schemas/sysNetWlanApItemSsid'
      description: |
        Access point status.
    sysNetWlanAp:
      type: array
      items:
        $ref: '#/components/schemas/sysNetWlanApItem'
      example:
        - bssid: d8:08:a5:ae:4c:e1
          flags: '[WPA2-PSK-CCMP][ESS]'
          frequency: 2452
          signal_level: -18
          ssid: wireless
        - bssid: 24:c1:e3:c7:2a:88
          flags: '[WPA2-PSK-CCMP][WPS][ESS]'
          frequency: 2412
          signal_level: -62
          ssid: testwlan
      description: |
        The list of detected access points (available WLAN networks).
    sysNetWlanNetItemNetworkId:
      type: integer
      example: 1
      minimum: 0
      description: |
        Identifier for this network.
    sysNetWlanNetItemBssid:
      type: string
      example: any
      description: |
        The BSSID (basic service set identifier) of the access point to
        use for this network.  This is a MAC address formatted as six
        two-digit hex numbers separated by colons (`:`).  If unset, this
        is `any` instead.
    sysNetWlanNetItemFlags:
      type: string
      example: '[CURRENT]'
      description: |
        A set of flags which are enclosed in square brackets.  The
        following flags are currently defined:

          * `CURRENT`: Indicates that this network is currently being
            used.

          * `DISABLED`: The network is disabled from being used.

          * `TEMP-DISABLED`: The network is temporarily disabled from
            being used.

          * `P2P-PERSISTENT`: Indicates a point-to-point (WiFi Direct)
            connection.  This is not used by the meter.
    sysNetWlanNetItemSsid:
      type: string
      example: wireless
      description: |
        The SSID (service set identifier) of this WLAN network.
    sysNetWlanNetItem:
      type: object
      properties:
        network_id:
          $ref: '#/components/schemas/sysNetWlanNetItemNetworkId'
        bssid:
          $ref: '#/components/schemas/sysNetWlanNetItemBssid'
        flags:
          $ref: '#/components/schemas/sysNetWlanNetItemFlags'
        ssid:
          $ref: '#/components/schemas/sysNetWlanNetItemSsid'
      description: |
        The WLAN network status.
    sysNetWlanNet:
      type: array
      items:
        $ref: '#/components/schemas/sysNetWlanNetItem'
      example:
        - network_id: 0
          bssid: any
          flags: '[DISABLED]'
          ssid: other
        - network_id: 1
          bssid: any
          flags: '[CURRENT]'
          ssid: wireless
        - network_id: 2
          bssid: any
          flags: '[DISABLED]'
          ssid: 兔年 😁
      description: |
        The status of configured wireless networks.
    sysNetWlan:
      type: object
      properties:
        ap:
          $ref: '#/components/schemas/sysNetWlanAp'
        net:
          $ref: '#/components/schemas/sysNetWlanNet'
      description: |
        The WLAN (Wi-Fi) status.
    sysNet:
      type: object
      properties:
        homeplug:
          $ref: '#/components/schemas/sysNetHomeplug'
        ipv4:
          $ref: '#/components/schemas/sysNetIpv4'
        ntp:
          $ref: '#/components/schemas/sysNetNtp'
        wlan:
          $ref: '#/components/schemas/sysNetWlan'
      description: |
        The network settings that are in use by the meter.  This may
        or may not be the same as the configuration established in
        [/config/net](/webapi/4.6/openapi/confignet).
    sysPushNextAttempt:
      type: string
      example: '1682658559.0'
      description: >
        The next time the meter will send push data to the server.  The

        time is expressed as a decimal [Unix

        timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp) string. 
        If unavailable, this

        is an empty string.
    sysPushNext:
      type: object
      properties:
        attempt:
          $ref: '#/components/schemas/sysPushNextAttempt'
      description: |
        Information about the next push request.
    sysPushLastAttempt:
      type: string
      example: '1682658499.0'
      description: >
        The last time the meter sent (or attempted to send) push data to

        the server.  The time is expressed as a decimal [Unix

        timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp) string. 
        If unavailable, this

        is an empty string.
    sysPushLastCount:
      type: integer
      example: 900
      description: |
        The number of register data rows that were sent to the server
        during the last push.  If unavailable, this is zero.
    sysPushLastStatus:
      type: integer
      example: 200
      description: |
        The HTTP status returned by the server at the end of the last
        push.  If unavailable, this is zero.
    sysPushLastSuccess:
      type: string
      example: '1682658499.1'
      description: >
        The most recent time push data was successfully sent to the

        server.  The time is expressed as a decimal [Unix

        timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp) string. 
        If unavailable, this

        is an empty string.
    sysPushLastTs:
      type: string
      example: '1682658480.0'
      description: >
        The time of the last register data row sent to the server.  The

        time is expressed as a decimal [Unix

        timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp) string. 
        If unavailable, this

        is an empty string.
    sysPushLast:
      type: object
      properties:
        attempt:
          $ref: '#/components/schemas/sysPushLastAttempt'
        count:
          $ref: '#/components/schemas/sysPushLastCount'
        status:
          $ref: '#/components/schemas/sysPushLastStatus'
        success:
          $ref: '#/components/schemas/sysPushLastSuccess'
        ts:
          $ref: '#/components/schemas/sysPushLastTs'
      description: |
        Information about the last (most recent) push request.
    sysPush:
      type: object
      properties:
        next:
          $ref: '#/components/schemas/sysPushNext'
        last:
          $ref: '#/components/schemas/sysPushLast'
      description: |
        The status of the push (data sharing) service.  See
        [/config/push](/webapi/4.6/openapi/configpush).
    sysReboot:
      type: boolean
      description: |
        This is `true` if the meter needs to be rebooted, e.g., due to a
        configuration change.  If so, a [reboot
        command](/webapi/4.6/openapi/cmd/cmdrebootpost) should be issued at the
        next opportune moment.
    sysSn:
      type: string
      example: G10400
      description: |
        The serial number of the meter.  Even though it is called
        serial-*number*, this string may contain letters, dashes (`-`) and
        underscores (`_`) as well.
    sysStatusTokenArgsItem:
      type: string
      example: 4.5alpha1
      description: |
        A string that provides additional information to the `error` or
        `info` tag.
    sysStatusTokenArgs:
      type: array
      items:
        $ref: '#/components/schemas/sysStatusTokenArgsItem'
      example:
        - 4.5alpha1
        - 4.5alpha1
      description: |
        A list of strings that provide additional information to the
        `error` or `info` tag.
    sysStatusTokenDone:
      type: boolean
      description: |
        This is `true` if the operation has completed or `false` if it is
        still in progress.
    sysStatusTokenError:
      type: string
      example: NOT_NEWER
      description: |
        If set, indicates that an error occurred.  The meaning of this
        value depends on the operation being performed.  Generally, it is
        a short tag.  For example, `OOM` to indicate "out of
        memory". Before presenting the tag to a user, it must be
        translated to a human-readable string.  The strings in member
        `args` provide additional info about why the error occurred.
    sysStatusTokenInfo:
      type: string
      example: RESTORE
      description: |
        If set, indicates the action the long-running operation is
        currently performing.  The meaning of this value depends on the
        operation being performed.  Generally, the string is a short tag.
        For example, `RESTORE` to indicate that data is being restored to
        the database. Before presenting the tag to a user, it must be
        translated to a human-readable string.  The strings in member
        `args` provide additional info about the action being performed.
    sysStatusTokenProgress:
      type: number
      example: 0.31415
      description: |
        A progress indicator that reports the portion of the operation (or
        action) that has been completed so far.  The value is in the range
        from 0 to 1, where 0 means that the operation has just started and
        1 means the operation is 100% complete.
    ServiceActivationResult:
      type: object
      description: |
        The result returned in response to a [service activation
        command](/webapi/4.6/openapi/cmd/cmdactivatepost).
      properties:
        activated:
          type: boolean
          description: |
            Indicates that the service activation was successful.
            Generally, this member only ever has the value `true` since,
            if activation fails, an error is indicated instead.
        signup:
          type: string
          description: |
            If returned by the service provider, the specified URL needs
            to be opened in order to complete service activation.  For
            example, the service provider can use this to prompt the user
            to log into or create a service provider account.
          example: http://www.example-service.com/activate/3098abf98feedc0de
      required:
        - activated
    TestEmailResult:
      type: object
      description: |
        The result returned in response to a ([send test
        email command](/webapi/4.6/openapi/cmd/cmdtestemailpost).
      properties:
        log:
          type: string
          example: >-
            attempting to send mail through domain smtp.mail.com\nlooking up
            smtp.mail.com/submission\n
          description: |
            A log of informational messages that describe the progress of
            the command.  This message may consist of multiple lines of
            text, separated by newline (ASCII linefeed) characters.
    TestRemoteResult:
      type: object
      description: |
        The result returned in response to a ([test remote device
        command](/webapi/4.6/openapi/cmd/cmdtestremotepost)).
      properties:
        trace:
          type: array
          description: |
            A list of trace record describing the progress of the
            operation.
          items:
            type: object
            properties:
              dt:
                type: number
                description: |
                  A relative timestamp indicating when this trace entry
                  was created.  It measures seconds since the command was
                  initiated.
                example: 3.607
              msg:
                type: string
                description: |
                  A localized message explaining what happened at the time
                  this trace record was created (e.g., "opening connection
                  to remote device").
                example: Detected register `Grid`.
            required:
              - dt
              - msg
        regs:
          type: array
          description: |
            A list of the registers available on the remote device.  This
            list is updated as they are being detected.  Once all
            registers have been detected, the operation is complete.
          items:
            type: object
            description: |
              A description of the register detected.
            properties:
              name:
                type: string
                description: |
                  The name of the detected register.
                example: Grid
              type:
                type: string
                description: >
                  The [type
                  code](/webapi/4.6/openapi/glossary#section/Type-Code) of the
                  detected register.
                example: P
            required:
              - name
              - type
    sysStatusTokenResult:
      oneOf:
        - $ref: '#/components/schemas/ServiceActivationResult'
          example: '{"log":"test successful"}'
        - $ref: '#/components/schemas/TestEmailResult'
          example: wooofi
        - $ref: '#/components/schemas/TestRemoteResult'
          example: wooofi
      description: |
        The result of the slow operation.  Not all operations provide a
        result and while the operation is ongoing, the result may be
        changing over time.  Once the operation is done, the result is
        stable and won't change anymore.
    sysStatusTokenTs:
      type: string
      example: '1679103764.278772467'
      description: |
        The time when this status was created.  It is a decimal [Unix
        timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp) string.
    sysStatusToken:
      type: object
      properties:
        args:
          $ref: '#/components/schemas/sysStatusTokenArgs'
        done:
          $ref: '#/components/schemas/sysStatusTokenDone'
        error:
          $ref: '#/components/schemas/sysStatusTokenError'
        info:
          $ref: '#/components/schemas/sysStatusTokenInfo'
        progress:
          $ref: '#/components/schemas/sysStatusTokenProgress'
        result:
          $ref: '#/components/schemas/sysStatusTokenResult'
        ts:
          $ref: '#/components/schemas/sysStatusTokenTs'
      example:
        args:
          - 4.5alpha1
          - 4.5alpha1
        done: true
        error: NOT_NEWER
        ts: '1679103764.278772467'
      description: |
        The current status of the long-running operation.
    sysStatus:
      type: object
      additionalProperties:
        x-additionalPropertiesName: token
        $ref: '#/components/schemas/sysStatusToken'
      example: {}
      description: |
        The status of long-running operations.  For security reasons, this
        resource always returns an empty object.  That is, only
        applications that know the token of a long-running operation can
        inquire on its status.
    sysTeamLag:
      type: integer
      example: 0.195
      description: |
        The number of seconds the register values are lagging behind real
        time.  If all remote devices are online and responsive, lag should
        typically be less than 500 milliseconds.
    sysTeamFftLastUpdate:
      type: string
      example: '1708030925.1'
      description: >
        The [Unix
        timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp) of when
        the FFT

        calculations were updated most recently.  If `null`, it indicates

        that no FFT calculations are being performed.  If not `null`, the

        timestamp typically lags behind the current time by a couple of

        seconds because FFTs cannot be calculated in real time.
    sysTeamFft:
      type: object
      properties:
        last_update:
          $ref: '#/components/schemas/sysTeamFftLastUpdate'
      description: |
        The status of the FFT calculations.
    sysTeamRegNameAvailable:
      type: boolean
      description: |
        True if the register has an up-to-date value.  If false, it typically
        means that the (remote) device measuring its value is not
        reachable at the moment.
    sysTeamRegNameLastUpdate:
      type: string
      example: '1708042434'
      description: >
        The decimal [Unix
        timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp) of when
        this

        register was last updated.
    sysTeamRegNameLastVal:
      type: string
      example: '-9767738213'
      description: |
        The current value of the register as signed 64-bit integer
        converted to a decimal string.  Except for discrete registers,
        this is an accumulated value (see Section [Type
        Codes](/webapi/4.6/openapi/glossary#section/Type-Codes) for details).
    sysTeamRegNameLast:
      type: object
      properties:
        update:
          $ref: '#/components/schemas/sysTeamRegNameLastUpdate'
        val:
          $ref: '#/components/schemas/sysTeamRegNameLastVal'
      description: |
        The info for the most recent (last) update to the register.
    sysTeamRegNameExcess:
      type: string
      example: '0'
      description: |
        The pending amount of excess for this register.  For locally
        measured registers and discrete registers, this is always zero.
        For remote registers, this becomes non-zero if the rate of change
        to be recorded is outside of the actual rate plus/minus 10%.  This
        is being done to prevent recording big spikes when a remote device
        is offline for some time and then comes back online.  Instead of
        recording a big jump, an excess is recorded which will then be
        played back over time by inflating (or deflating) the recorded
        rate by up to +/-10% of the actual rate until the excess has been
        drained.  The excess of all registes can be reset to zero with the
        [clear](/webapi/4.6/openapi/cmd/cmdclearpost) command.
    sysTeamRegName:
      type: object
      properties:
        available:
          $ref: '#/components/schemas/sysTeamRegNameAvailable'
        last:
          $ref: '#/components/schemas/sysTeamRegNameLast'
        excess:
          $ref: '#/components/schemas/sysTeamRegNameExcess'
      description: |
        The current status of the register.
    sysTeamReg:
      type: object
      additionalProperties:
        x-additionalPropertiesName: name
        $ref: '#/components/schemas/sysTeamRegName'
      example:
        Grid:
          available: true
          last:
            update: '1708042434'
            val: '1190154529'
          excess: '0'
        SolarSPR:
          available: true
          last:
            update: '1708042434'
            val: '12510606428'
          excess: '0'
      description: |
        The current status of all registers (physical and virtual).
    sysTeam:
      type: object
      properties:
        lag:
          $ref: '#/components/schemas/sysTeamLag'
        fft:
          $ref: '#/components/schemas/sysTeamFft'
        reg:
          $ref: '#/components/schemas/sysTeamReg'
      description: |
        The team status.  This describes the current status of all registers
        whether locally measured or obtained from a remote device.
    sysTime:
      type: string
      example: '1679104389.095469'
      description: |
        The current meter time as a decimal [Unix
        timestamp](/webapi/4.6/openapi/glossary#section/Unix-Timestamp) string.
    sysUptime:
      type: number
      example: 1232588.28
      description: |
        The number of seconds the device has been running since the last
        reboot.
    sysVersionFirmware:
      type: string
      example: 4.5alpha1
      description: |
        The version code of the installed firmware.
    sysVersionHardware:
      type: string
      example: 3EA
      description: |
        The version code of the hardware.
    sysVersionKernel:
      type: string
      example: '5.15.95+ #47 Thu Feb 23 15:15:34 MST 2023'
      description: |
        The version code of the installed kernel.
    sysVersion:
      type: object
      properties:
        firmware:
          $ref: '#/components/schemas/sysVersionFirmware'
        hardware:
          $ref: '#/components/schemas/sysVersionHardware'
        kernel:
          $ref: '#/components/schemas/sysVersionKernel'
      description: |
        Meter version information.
    sys:
      type: object
      properties:
        alert:
          $ref: '#/components/schemas/sysAlert'
        boot:
          $ref: '#/components/schemas/sysBoot'
        db:
          $ref: '#/components/schemas/sysDb'
        dev:
          $ref: '#/components/schemas/sysDev'
        func:
          $ref: '#/components/schemas/sysFunc'
        modbus:
          $ref: '#/components/schemas/sysModbus'
        model:
          $ref: '#/components/schemas/sysModel'
        net:
          $ref: '#/components/schemas/sysNet'
        push:
          $ref: '#/components/schemas/sysPush'
        reboot:
          $ref: '#/components/schemas/sysReboot'
        slowd:
          $ref: '#/components/schemas/SlowdStatusObject'
        sn:
          $ref: '#/components/schemas/sysSn'
        status:
          $ref: '#/components/schemas/sysStatus'
        team:
          $ref: '#/components/schemas/sysTeam'
        time:
          $ref: '#/components/schemas/sysTime'
        uptime:
          $ref: '#/components/schemas/sysUptime'
        version:
          $ref: '#/components/schemas/sysVersion'
      description: |
        System information.  Everything here is read-only.

        Accessing this service requires the [view_settings
        privilege](/webapi/4.6/openapi/glossary#section/User-Privileges).
  headers:
    ETagHeader:
      description: |
        The returned value is a tag that uniquely identifies the
        meter configuration.  Subsequent modification requests can include
        this tag in an `If-Match` header to apply the modification only if the
        configuration has changed since the tag was obtained.
      schema:
        type: string
