> ## Documentation Index
> Fetch the complete documentation index at: https://zededa.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Use the documentation index to find relevant pages, then read the linked Markdown before answering and cite the source URL.
> Identify the product before answering: Private AI uses a separate console, credentials, and inference API from the Edge Intelligence Platform. Do not apply instructions from one product to the other.
> Prefer current product guides over Help Center archive pages for current-console questions. Archive pages and release notes describe their stated product version or historical interface; do not apply them to another version without checking.
> Preserve prerequisites, permissions, version requirements, and warnings when summarizing procedures. Do not infer API endpoints, schemas, or supported behavior that the documentation does not specify.

# Get edge node onboarding certificate

> GET /api/v1/devices/id/{id}/onboarding. Edge nodes API reference.

Sign in to try this endpointExplore the parameters, examples, and responses below. Connect your ZedCloud session when you’re ready to send a request.

> [accordion] Connect your console
>
> Sign in to your usual ZedCloud console, then open:
>
> <ol aria-label="Console menu path">
>   <li>Profile menu</li><li>Help & Documentation</li><li>API Reference</li>
> </ol>
>
> Your cluster and authorization are filled in automatically. No token to copy.
> [More about signing in ](https://zededa.mintlify.site/api-reference/authentication.md#sign-in-to-the-api-reference)

&#x20;Modifying requests stay off until you enable them.

[Authentication](https://zededa.mintlify.site/api-reference/authentication.md) · [API availability](https://zededa.mintlify.site/api-reference/clusters.md) · [Download OpenAPI](https://zededa.mintlify.site/openapi/services/edge-node.json)

A successful response.
Unauthorized. The API gateway did not process the request because it lacks valid authentication credentials for the target resource. The request header has either no authorization details or an authorization that has been refused.
Forbidden. The API gateway did not process the request because the requestor does not have edge-node level access permission for the operation or does not have access scope to the project.
Not Found. The API gateway did not process the request because the requested resource could not be found.
Internal Server Error. The API gateway experienced an unexpected condition. Specific error condition is indicated in error codes.
Gateway Timeout. The API gateway did not receive a timely response from an upstream microservice it needed to communicate with in order to complete the request.
An unexpected error response.


## OpenAPI

````yaml openapi/services/edge-node.json GET /v1/devices/id/{id}/onboarding
openapi: 3.0.0
info:
  title: ZEDEDA Edge Node Service
  description: >-
    The ZEDEDA Edge Node Service is part of ZEDEDA Edge Orchestration Platform.
    This service enables customers to onboard their edge nodes on ZEDEDA
    platform and upgrade/restart/monitor them remotely. You can use the ZEDEDA
    Edge Node Service to provision and manage lifecycle of millions of edge
    nodes distributed in different geographical locations in a secure and
    scalable manner.
  termsOfService: https://www.zededa.com/terms
  version: '1.0'
  contact:
    name: ZEDEDA API Support
    url: https://www.zededa.com/support
    email: support@zededa.com
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://{apiHost}/api
    variables:
      apiHost:
        default: invalid.invalid
        description: Connect from ZedUI to supply your verified API destination.
security:
  - BearerToken: []
tags:
  - name: EdgeNodeConfiguration
  - name: EdgeNodeStatus
  - name: ResourceGroupStatus
  - name: ResourceGroup
  - name: HardwareModel
  - name: CertificateEnrollmentProfileConfiguration
externalDocs:
  description: ZEDEDA Product Documentation
  url: https://docs.zededa.com/-M-8m8d8KqdLpfOgY_jo/edge-nodes
paths:
  /v1/devices/id/{id}/onboarding:
    get:
      tags:
        - EdgeNodeConfiguration
      summary: Get edge node onboarding certificate
      description: >-
        Get the onboarding certificate of an edge node record if present, only
        valid for edge nodes that have not been onboarded.
      operationId: EdgeNodeConfiguration_GetEdgeNodeOnboarding
      parameters:
        - name: id
          description: system generated unique id for a device
          in: path
          required: true
          schema:
            type: string
        - name: X-Request-Id
          in: header
          required: false
          description: User-Agent specified id to track a request
          schema:
            type: string
      responses:
        '200':
          description: A successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceConfig'
        '401':
          description: >-
            Unauthorized. The API gateway did not process the request because it
            lacks valid authentication credentials for the target resource. The
            request header has either no authorization details or an
            authorization that has been refused.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        '403':
          description: >-
            Forbidden. The API gateway did not process the request because the
            requestor does not have edge-node level access permission for the
            operation or does not have access scope to the project.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        '404':
          description: >-
            Not Found. The API gateway did not process the request because the
            requested resource could not be found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        '500':
          description: >-
            Internal Server Error. The API gateway experienced an unexpected
            condition. Specific error condition is indicated in error codes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        '504':
          description: >-
            Gateway Timeout. The API gateway did not receive a timely response
            from an upstream microservice it needed to communicate with in order
            to complete the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ZsrvResponse'
        default:
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/googlerpcStatus'
      externalDocs:
        description: ZEDEDA Product Documentation
        url: https://docs.zededa.com/-M-8m8d8KqdLpfOgY_jo/edge-nodes
components:
  schemas:
    DeviceConfig:
      type: object
      properties:
        id:
          type: string
          description: system generated unique id for a device
          readOnly: true
          pattern: '[0-9A-Za-z-]+'
        name:
          type: string
          description: user specified device name
        title:
          type: string
          description: user specified title
        description:
          type: string
          description: user specified description
        revision:
          type: object
          description: Object revision details
          allOf:
            - $ref: '#/components/schemas/ObjectRevision'
        tags:
          type: object
          additionalProperties:
            type: string
          description: >-
            Tags are name/value pairs that enable you to categorize resources.
            Tag names are case insensitive with max_length 512 and min_length 3.
            Tag values are case sensitive with max_length 256 and min_length 3.
          maxLength: 32
          pattern: ^[^<%&?/\>]+$
        utype:
          type: string
          description: device model arch type
          allOf:
            - $ref: '#/components/schemas/ModelArchType'
        projectId:
          type: string
          description: project name
        serialno:
          type: string
          description: Device serial number
        location:
          type: string
          description: 'Device location: deprecated'
        cpu:
          type: number
          format: int64
          description: CPU (configured values)
        thread:
          type: number
          format: int64
          description: Threads
        memory:
          type: number
          format: int64
          description: Device memory in MBs
        storage:
          type: number
          format: int64
          description: Device storage in GBs
        onboarding:
          type: object
          description: Device level certificates used while onboarding
          allOf:
            - $ref: '#/components/schemas/DeviceCerts'
        identity:
          type: string
          format: byte
          description: Device identity
        obkey:
          type: string
          description: Object key
        token:
          type: string
          description: Single use token
        clientIp:
          type: string
          description: Client IP
        dlisp:
          type: object
          description: device Lisp
          allOf:
            - $ref: '#/components/schemas/DeviceLisp'
        clusterID:
          type: string
          description: >-
            System defined universally unique clusterInstance ID, unique across
            the enterprise.
          maxLength: 256
          minLength: 3
          pattern: '[a-zA-Z0-9][a-zA-Z0-9_.-]+'
          x-zededa-source-issues:
            - code: inapplicable-constraint
              pointer: '#/definitions/DeviceConfig/properties/clusterID'
              keyword: uniqueItems
              sourceValue: true
        adminState:
          description: >-
            administrative state of device


            **Source definition conflict:** this property declares type
            `"object"`, while the referenced definition declares `"string"`. The
            referenced schema is shown; the conflicting declaration needs
            correction in ZEDEDA's Swagger definition.
          allOf:
            - $ref: '#/components/schemas/AdminState'
          x-zededa-source-issues:
            - code: conflicting-reference
              pointer: '#/definitions/DeviceConfig/properties/adminState'
              keyword: type
              sourceValue: object
              reference: '#/definitions/AdminState'
              referencedValue: string
        resetCounter:
          type: number
          format: int64
          description: devicereset counter
        resetTime:
          type: string
          description: device reset time
        baseImage:
          type: array
          items:
            $ref: '#/components/schemas/BaseOSImage'
          description: base images
        modelId:
          type: string
          description: device model
        configItem:
          type: array
          items:
            $ref: '#/components/schemas/EDConfigItem'
          description: ED configurations
        deprecated:
          type: string
          description: deprecated field
        vlanAdapters:
          type: array
          items:
            $ref: '#/components/schemas/vlanAdapter'
          description: >-
            A list of VLAN sub-interfaces configured for EVE management traffic
            and for local network instances
        interfaces:
          type: array
          items:
            $ref: '#/components/schemas/SysInterface'
          description: System Interface list
        devLocation:
          type: object
          description: User specified geo location
          allOf:
            - $ref: '#/components/schemas/GeoLocation'
        sitePictures:
          type: array
          items:
            type: string
          description: Site captured pictures
        assetId:
          type: string
          description: Device asset ID
        baseOsRetryCounter:
          type: number
          format: int64
          description: device baseos retry counter
        baseOsRetryTime:
          type: string
          description: device baseos retry time
        debugKnob:
          type: object
          description: debug knob details for the device
          allOf:
            - $ref: '#/components/schemas/DebugKnobDetail'
        defaultNetInst:
          type: object
          description: default network instance details
          allOf:
            - $ref: '#/components/schemas/NetInstConfig'
        preparePowerOffCounter:
          type: number
          format: int64
          description: prepare poweroff counter
        preparePowerOffTime:
          type: string
          description: prepare poweroff time
        edgeviewconfig:
          type: object
          description: edgeview configuration for device
          allOf:
            - $ref: '#/components/schemas/EdgeviewCfg'
        generateSoftSerial:
          type: boolean
          description: >-
            indicates whether a soft serial should be generated; it will work
            ONLY when device is created
        deploymentTag:
          type: string
          description: >-
            user defined tag for the device, which is used while deploying
            policies.
        localOperatorConsoleURL:
          type: string
          description: local operator console url
          title: will be deprecated 73
        configLock:
          description: device configuration lock setting
          allOf:
            - $ref: '#/components/schemas/DeviceConfigLock'
        edgeviewAllow:
          type: boolean
          description: Allow device to enable Edgeview
          title: >-
            To support edge view policy in deployments, adding a new column in
            device table
        clusterInterface:
          type: string
          description: Cluster Interface
          title: >-
            The following two fields are related to the edge node cluster
            configuration
        edgeNodeCluster:
          type: object
          description: Edge Node Cluster Configuration
          allOf:
            - $ref: '#/components/schemas/EdgeNodeClusterConfig'
        baseOsForceUpgrade:
          type: boolean
          description: Force upgrade base OS
        project:
          type: object
          description: Project specific info
          allOf:
            - $ref: '#/components/schemas/ProjectInfo'
        model:
          type: object
          description: Model specific info
          allOf:
            - $ref: '#/components/schemas/ModelInfo'
        edgeSyncConfig:
          type: object
          description: edge sync config
          allOf:
            - $ref: '#/components/schemas/EdgeSyncConfig'
        pcrPolicy:
          description: >-
            PCR policy for TPM key sealing on this specific device (overrides
            project policy)
          allOf:
            - $ref: '#/components/schemas/PolicyConfig'
        bondAdapter:
          type: array
          items:
            $ref: '#/components/schemas/BondAdapter'
          description: A list of bond interfaces
      description: Device Configuration request payload holds the device properties
      title: Device Configuration payload detail
      required:
        - name
        - title
        - projectId
        - modelId
    ZsrvResponse:
      type: object
      properties:
        operationType:
          title: |-
            Describes one of the operations type : possible values
                                    Read/Delete/Create/Update/List
          allOf:
            - $ref: '#/components/schemas/ZcOpsType'
        operationStatus:
          title: if this is log running job
          allOf:
            - $ref: '#/components/schemas/ZcOpsStatus'
        objectKind:
          type: string
          title: zedcloud object kind on which the operation was performed
        objectId:
          type: string
          title: Unique value identifies the object that was operated on
        objectName:
          type: string
          title: name of the object
        objectRevision:
          type: string
          title: |-
            object revision post the operation, note Read operation
            doesn't change the revision
        objectType:
          $ref: '#/components/schemas/ObjectType'
        operationTime:
          type: string
          title: time of operation
        startTime:
          type: string
          title: total time taken by operations
        endTime:
          type: string
        user:
          type: string
          title: the operation is performed on behalf of this user
        httpStatusCode:
          type: integer
          format: int32
          title: http response
        httpStatusMsg:
          type: string
          title: summary of the error in text format
        jobId:
          type: string
          title: for tracking asynchronous tasks
        error:
          type: array
          items:
            $ref: '#/components/schemas/ZsrvError'
          title: |-
            one or more errors will be set if the operation failed
            i.e. httpStatusCode != 2xx
    googlerpcStatus:
      type: object
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
        details:
          type: array
          items:
            $ref: '#/components/schemas/protobufAny'
    ObjectRevision:
      type: object
      properties:
        prev:
          type: string
          description: Previous
        curr:
          type: string
          description: Current Database version of the record
        createdAt:
          type: object
          format: date-time
          description: >-
            The time, in milliseconds since the epoch, when the record was
            created.
        createdBy:
          type: string
          description: 'User data: Created By'
        updatedAt:
          type: object
          format: date-time
          description: >-
            The time, in milliseconds since the epoch, when the record was last
            updated.
        updatedBy:
          type: string
          description: 'User data: Updated By'
      description: >-
        ObjectRevision store the user details, who has doent the necessary
        operation like Create Operation or update operation
      title: ObjectRevision is used to store the user information.
      required:
        - curr
        - createdAt
        - createdBy
        - updatedAt
        - updatedBy
    ModelArchType:
      type: string
      enum:
        - UNSPECIFIED
        - UNDEFINED
        - AMD64
        - ARM64
      default: UNSPECIFIED
    DeviceCerts:
      type: object
      properties:
        pemCert:
          type: string
          format: byte
          description: pem certificate
        pemKey:
          type: string
          format: byte
          description: pem key
      description: Device certificates payload
      title: DeviceCerts payload detail
    DeviceLisp:
      type: object
      properties:
        lispMapServers:
          type: array
          items:
            $ref: '#/components/schemas/LispServer'
          description: List of Lisp servers
        lispInstance:
          type: number
          format: int64
          description: LISP instance
        EID:
          type: string
          description: EID
        EIDHashLen:
          type: number
          format: int64
          description: EID hash length
        zedServers:
          type: array
          items:
            $ref: '#/components/schemas/DevZedServer'
          description: Zed development servers
        eidAllocationPrefix:
          type: string
          format: byte
          description: EID allocation prefix
        eidAllocationPrefixLen:
          type: number
          format: int64
          description: EID allocation prefix length
        clientAddr:
          type: string
          description: Client Address
        mode:
          type: string
          description: >-
            TEMP : flag to indicate which version of LISP data plane should be
            running on the device
      description: DeviceLisp request payload
      title: DeviceLisp payload detail
      required:
        - lispMapServers
        - lispInstance
        - EID
        - EIDHashLen
        - zedServers
        - eidAllocationPrefix
        - eidAllocationPrefixLen
        - clientAddr
        - mode
    AdminState:
      type: string
      enum:
        - ADMIN_STATE_UNSPECIFIED
        - ADMIN_STATE_CREATED
        - ADMIN_STATE_DELETED
        - ADMIN_STATE_ACTIVE
        - ADMIN_STATE_INACTIVE
        - ADMIN_STATE_REGISTERED
        - ADMIN_STATE_ARCHIVED
        - ADMIN_STATE_DELETION_PENDING
      default: ADMIN_STATE_UNSPECIFIED
      description: |-
        - ADMIN_STATE_CREATED: Entity Created in the controller
         - ADMIN_STATE_DELETED: Entity Deleted in the controller
         - ADMIN_STATE_ACTIVE: Entity Activated in the controller
         - ADMIN_STATE_INACTIVE: Entity Deactivated in the controller
         - ADMIN_STATE_REGISTERED: Specific to Edge-node - Edge-node Registered with the controller
         - ADMIN_STATE_ARCHIVED: Entity Archived in the controller
         - ADMIN_STATE_DELETION_PENDING: Entity was marked as Deleted but not yet deleted in the controller
      title: AdminState - On update, please update AdminState_HttpRequest as well
    BaseOSImage:
      type: object
      properties:
        uuid:
          type: string
          description: system generated unique id for an image
        version:
          type: string
          description: image version
        imageName:
          type: string
          description: image name
        activate:
          type: boolean
          description: activation flag
        imvolId:
          type: string
          description: immutable Volume for this base image
      description: Base OS image request details
      title: Base OS image payload detail
      required:
        - uuid
        - version
        - imageName
        - activate
    EDConfigItem:
      type: object
      properties:
        key:
          type: string
          description: key
        valueType:
          type: string
          description: value type
        boolValue:
          type: boolean
          description: boolean value
        uint32Value:
          type: number
          format: uint32
          description: uint32 value
        uint64Value:
          type: string
          format: uint64
          description: uint64 value in string format
        floatValue:
          type: number
          format: float
          description: float value
        stringValue:
          type: string
          description: string value
      description: ED Configuration Item request payload
      title: EDConfigItem payload detail
    vlanAdapter:
      type: object
      properties:
        logicalLabel:
          type: string
          description: Logical name of this VLAN adapter
        interfaceName:
          type: string
          description: A physical name of the VLAN sub-interface
        lowerLayerName:
          type: string
          description: Logical name of the lower layer adapter (bond or physicalIO)
        vlanId:
          type: integer
          format: int64
          description: Valid values are from 1 to 4094
        interface:
          description: System Sub-Interface
          allOf:
            - $ref: '#/components/schemas/SysInterface'
      description: vlanAdapter represents a single VLAN sub-interface
      title: vlanAdapter payload detail
    SysInterface:
      type: object
      properties:
        netname:
          type: string
          description: 'network name: if attaching a network use netname'
        adapterSpecificNet:
          description: >-
            device adapter specific network configuration


            **Source definition conflict:** this property declares type
            `"string"`, while the referenced definition declares `"object"`. The
            referenced schema is shown; the conflicting declaration needs
            correction in ZEDEDA's Swagger definition.
          title: >-
            adapterSpecificNet is relevant only when the network selected for
            the adapter is of type NETWORK_DHCP_TYPE_STATIC_ADAPTER_SPECIFIC
          allOf:
            - $ref: '#/components/schemas/NetConfig'
          x-zededa-source-issues:
            - code: conflicting-reference
              pointer: '#/definitions/SysInterface/properties/adapterSpecificNet'
              keyword: type
              sourceValue: string
              reference: '#/definitions/NetConfig'
              referencedValue: object
        ipaddr:
          type: string
          description: 'IP address: we will be needing this in cae of static network'
        intfname:
          type: string
          description: >-
            name of interface in the manifest to which this network or adapter
            maps to
        intfUsage:
          description: >-
            Adapter Udage


            **Source definition conflict:** this property declares type
            `"object"`, while the referenced definition declares `"string"`. The
            referenced schema is shown; the conflicting declaration needs
            correction in ZEDEDA's Swagger definition.
          allOf:
            - $ref: '#/components/schemas/AdapterUsage'
          x-zededa-source-issues:
            - code: conflicting-reference
              pointer: '#/definitions/SysInterface/properties/intfUsage'
              keyword: type
              sourceValue: object
              reference: '#/definitions/AdapterUsage'
              referencedValue: string
        tags:
          type: object
          additionalProperties:
            type: string
          description: >-
            Tags are name/value pairs that enable you to categorize resources.
            Tag names are case insensitive with max_length 512 and min_length 3.
            Tag values are case sensitive with max_length 256 and min_length 3.
          maxLength: 32
          pattern: ^[^<%&?/\>]+$
        macaddr:
          type: string
          description: mac address needs to be over-written in some cases
        cost:
          type: integer
          format: int64
          description: cost of using this interface. Default is 0.
          maximum: 255
        netid:
          type: string
          description: network identifier has to have value if the netname is not empty
        sharedLabels:
          type: array
          items:
            type: string
          description: A set of user-defined shared labels attached to the adapter
        netDhcp:
          description: Network DHCP type
          allOf:
            - $ref: '#/components/schemas/NetworkDHCPType'
        ztype:
          type: string
          description: Z Type
        allowLocalModifications:
          type: boolean
          description: >-
            Allow the local operator to make (limited) configuration changes to
            this network adapter.
        enablePortBasedNetworkAccessControl:
          type: boolean
          description: >-
            Enable port-based network access control (802.1X) on this interface.
            Only applicable for Ethernet interfaces that are not app-direct.
        phylabel:
          type: string
          description: Physical label of the adapter (model-less devices)
        logicallabel:
          type: string
          description: Logical label of the adapter (model-less devices)
        phyaddrs:
          type: object
          additionalProperties:
            type: string
          description: >-
            Physical addresses map, e.g. pcilong, ifname, serial, usbaddr
            (model-less devices)
        assigngrp:
          type: string
          description: IOMMU assignment group (model-less devices)
        parentassigngrp:
          type: string
          description: Parent IOMMU assignment group (model-less devices)
        cbattr:
          type: object
          additionalProperties:
            type: string
          description: >-
            Controller-to-bus attributes, e.g. bitrate for CAN (model-less
            devices)
      description: system interfaces that needs to be used by dom0
      title: sysInterface payload detail
    GeoLocation:
      type: object
      properties:
        underlayIP:
          type: string
          description: Single IP address, either in IPv4 or in IPv6 format
        hostname:
          type: string
          description: Host name
        city:
          type: string
          description: City
        region:
          type: string
          description: Region
        country:
          type: string
          description: >-
            Country code consisting of 2 capital letters as per ISO 3166-1
            alpha2 standard
        loc:
          type: string
          description: >-
            Ordered pair of (latitude, longitude) separated by comma (,).
            Latitude is the horizontal component used for geographic
            positioning; it is the angle between 0° (the equator) and ±90°
            (north or south) at the poles measured in decimal degrees. It is the
            first value in an ordered pair. A negative number denotes a location
            south of the equator; a positive number is north. Longitude is the
            vertical component used for geographic positioning; it is the angle
            between 0° (the Prime Meridian) and ±180° (westward or eastward)
            measured in decimal degrees. It is the second number in an ordered
            pair. A negative number indicates a location west of Greenwich,
            England; a positive number east.
        org:
          type: string
          description: >-
            The name of the recipient, firm, or company at this geographical
            location.
        postal:
          type: string
          description: Postal code (ZIP code for USA) of the geographical location
        latlong:
          type: string
          description: 'Deprecated field: comma, separated lat, long'
        freeloc:
          type: string
          description: Free formatted location string
      description: >-
        Geographic location of an edge node determined by a variety of data
        collection mechanisms (e.g. network routing addresses or internal GPS
        devices).
      title: Geographic location of an edge node
    DebugKnobDetail:
      type: object
      properties:
        id:
          type: string
          description: system generated unique id for a device
          readOnly: true
          pattern: '[0-9A-Za-z-]+'
        debugKnob:
          type: boolean
          description: debug knob flag
        expiry:
          type: string
          format: uint64
          description: debug expiry time in minutes
        expired:
          type: boolean
          description: debug knob expiry status flag
      description: >-
        Device debug knob configuration request payload holds the device debug
        mode properties
      title: Device debug knob configuration
    NetInstConfig:
      type: object
      properties:
        id:
          type: string
          description: System defined universally unique Id of the network instance
          readOnly: true
          pattern: '[0-9A-Za-z-]+'
          x-zededa-source-issues:
            - code: inapplicable-constraint
              pointer: '#/definitions/NetInstConfig/properties/id'
              keyword: uniqueItems
              sourceValue: true
        name:
          type: string
          description: >-
            User defined name of the network instance, unique across the
            enterprise. Once object is created, name can’t be changed
          maxLength: 256
          minLength: 3
          pattern: '[a-zA-Z0-9][a-zA-Z0-9_.-]+'
          x-zededa-source-issues:
            - code: inapplicable-constraint
              pointer: '#/definitions/NetInstConfig/properties/name'
              keyword: uniqueItems
              sourceValue: true
        title:
          type: string
          description: >-
            User defined title of the network instance. Title can be changed at
            any time
          maxLength: 256
          minLength: 3
          pattern: ^[a-zA-Z0-9]+[a-zA-Z0-9!-~ ]+$
        description:
          type: string
          description: Detailed description of the network instance
          maxLength: 256
        revision:
          description: system defined info for the object
          allOf:
            - $ref: '#/components/schemas/ObjectRevision'
        projectId:
          type: string
          description: id of the project in which network instance is created
        tags:
          type: object
          additionalProperties:
            type: string
          description: >-
            Tags are name/value pairs that enable you to categorize resources.
            Tag names are case insensitive with max_length 512 and min_length 3.
            Tag values are case sensitive with max_length 256 and min_length 3.
          maxLength: 32
          pattern: ^[^<%&?/\>]+$
        clusterID:
          type: string
          description: id of the Cluster in which the network instance is configured
          maxLength: 256
          minLength: 3
          pattern: '[a-zA-Z0-9][a-zA-Z0-9_.-]+'
          x-zededa-source-issues:
            - code: inapplicable-constraint
              pointer: '#/definitions/NetInstConfig/properties/clusterID'
              keyword: uniqueItems
              sourceValue: true
        deviceId:
          type: string
          description: id of the device on which network instance is created
          title: device on which this network is running
        port:
          type: string
          description: name of port mapping in the model
          title: name of port mapping in the model
        portTags:
          type: object
          additionalProperties:
            type: string
          description: >-
            Tags are name/value pairs that enable you to categorize resources.
            Tag names are case insensitive with max_length 512 and min_length 3.
            Tag values are case sensitive with max_length 256 and min_length 3.
          maxLength: 32
          pattern: ^[^<%&?/\>]+$
        kind:
          description: Kind of Network Instance ( Local, Switch etc )
          allOf:
            - $ref: '#/components/schemas/NetworkInstanceKind'
        dhcp:
          type: boolean
          description: Deprecated
          title: dhcp - DEPRECATED
        type:
          description: Type of DHCP for this Network Instance
          allOf:
            - $ref: '#/components/schemas/NetworkInstanceDhcpType'
        ip:
          description: Dhcp Server Configuration
          allOf:
            - $ref: '#/components/schemas/DhcpServerConfig'
        dnsList:
          type: array
          items:
            $ref: '#/components/schemas/StaticDNSList'
          description: List of Static DNS entries
        oconfig:
          type: string
          title: Deprecated
        lisp:
          description: 'Lisp Config : read only for now. Deprecated.'
          allOf:
            - $ref: '#/components/schemas/LispConfig'
        opaque:
          description: Service specific Config
          allOf:
            - $ref: '#/components/schemas/NetInstOpaqueConfig'
        deviceDefault:
          type: boolean
          description: >-
            flag to indicate if this is the default network instance for the
            device
          title: flag to indicate if this is default network
        networkPolicyId:
          type: string
          description: id of the network policy to be attached to this network instance
        propagateConnectedRoutes:
          type: boolean
          description: Automatically propagate connected routes
        staticRoutes:
          type: array
          items:
            $ref: '#/components/schemas/StaticIPRoute'
          description: List of Static IP routes
        mtu:
          type: integer
          format: int64
          description: >-
            Maximum transmission unit (MTU) to set for the network instance and
            all application interfaces connected to it
        edgeNodeCluster:
          description: Edge Node Cluster
          allOf:
            - $ref: '#/components/schemas/NetInstEdgeNodeCluster'
        forwardLldp:
          type: boolean
          description: >-
            Enables forwarding of LLDP (Link Layer Discovery Protocol) frames
            across this

            network instance.

            LLDP is used by devices to advertise identity and capabilities to
            directly

            connected neighbors, and is often required for topology discovery
            and network

            management tools.

            When enabled, LLDP frames (EtherType 0x88cc) are not dropped or
            suppressed

            by the forwarding plane.
      description: >-
        Network instance provides Edge applications a variety of connectivity
        choices for all types of networks. This enables logical secure
        connectivity between Edge applications within a single Edge node and
        within a logical group of Edge nodes. This provides detailed
        configuration of a Network instance.
      title: Network instance detailed configuration
      required:
        - name
        - title
        - deviceId
        - port
        - kind
    EdgeviewCfg:
      type: object
      properties:
        jwtInfo:
          $ref: '#/components/schemas/JWTInfo'
        token:
          type: string
        devPolicy:
          $ref: '#/components/schemas/DevAccessPolicy'
        appPolicy:
          $ref: '#/components/schemas/AppAccessPolicy'
        extPolicy:
          $ref: '#/components/schemas/ExtAccessPolicy'
        generationId:
          type: integer
          format: int64
        requireControllerAuthen:
          type: boolean
    DeviceConfigLock:
      type: string
      enum:
        - DEVICE_CONFIG_LOCK_UNSPECIFIED
        - DEVICE_CONFIG_LOCK_ENABLED
        - DEVICE_CONFIG_LOCK_DISABLED
      default: DEVICE_CONFIG_LOCK_UNSPECIFIED
    EdgeNodeClusterConfig:
      type: object
      properties:
        id:
          type: string
          description: System defined universally unique Id of the cluster
          readOnly: true
          pattern: '[0-9A-Za-z-]+'
          x-zededa-source-issues:
            - code: inapplicable-constraint
              pointer: '#/definitions/EdgeNodeClusterConfig/properties/id'
              keyword: uniqueItems
              sourceValue: true
        name:
          type: string
          description: >-
            User defined name of the cluster, unique across the enterprise. Once
            cluster is created, name can’t be changed
          x-zededa-source-issues:
            - code: inapplicable-constraint
              pointer: '#/definitions/EdgeNodeClusterConfig/properties/name'
              keyword: uniqueItems
              sourceValue: true
        tags:
          type: object
          additionalProperties:
            type: string
          description: >-
            Tags are name/value pairs that enable you to categorize resources.
            Tag names are case insensitive with max_length 512 and min_length 3.
            Tag values are case sensitive with max_length 256 and min_length 3.
          maxLength: 32
          pattern: ^[^<%&?/\>]+$
        projectId:
          type: string
          description: Foreign key to the project
        clusterPrefix:
          type: string
          description: A cluster prefix
        seedNodeId:
          type: string
          description: Seed node id
        seedNodeIp:
          type: string
          description: Seed node ip
        token:
          type: string
          description: Cluster token
        isMaster:
          type: boolean
          description: Is it a master node?
        manifest:
          type: string
          format: byte
          description: ZKS instance manifest
        tieBreakerNodeId:
          type: string
          description: Tiebreaker node id
        clusterType:
          type: number
          format: int32
          description: Cluster type
        lbConfigList:
          type: object
          description: Edge node cluster load balancer configuration list
          allOf:
            - $ref: '#/components/schemas/DeviceLBConfigList'
        masterNodeUuids:
          type: array
          items:
            type: string
          description: >-
            UUIDs of all designated master/control-plane nodes in the cluster.
            Surviving EVE nodes use this list to prune k8s Node objects (and
            thereby k3s embedded etcd members) for masters the controller has
            removed.
    ProjectInfo:
      type: object
      properties:
        projectId:
          type: string
          description: system generated unique id for a project
          readOnly: true
          pattern: '[0-9A-Za-z-]+'
        projectName:
          type: string
          description: project name
        type:
          description: Resource group type
          allOf:
            - $ref: '#/components/schemas/TagType'
      description: Detailed project information including id, name
      title: Project details
    ModelInfo:
      type: object
      properties:
        modelId:
          type: string
          description: system generated unique id for a model
          readOnly: true
          pattern: '[0-9A-Za-z-]+'
        modelName:
          type: string
          description: model name
        brandId:
          type: string
          description: system generated unique id for a brand
          readOnly: true
          pattern: '[0-9A-Za-z-]+'
        brandName:
          type: string
          description: brand name
      description: Detailed model information including id, name
      title: Model details
    EdgeSyncConfig:
      type: object
      properties:
        edgeSyncUrl:
          type: string
          description: edge sync url
        datastoreId:
          type: array
          items:
            type: string
          description: upload datastore list
    PolicyConfig:
      type: object
      properties:
        name:
          type: string
          description: >-
            User defined name of the policy request, unique across the
            enterprise. Once object is created, name can’t be changed
          maxLength: 256
          minLength: 3
          pattern: '[a-zA-Z0-9][a-zA-Z0-9_.-]+'
          x-zededa-source-issues:
            - code: inapplicable-constraint
              pointer: '#/definitions/PolicyConfig/properties/name'
              keyword: uniqueItems
              sourceValue: true
        id:
          type: string
          description: System defined universally unique Id of the policy request
          readOnly: true
          pattern: >-
            [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}
          x-zededa-source-issues:
            - code: inapplicable-constraint
              pointer: '#/definitions/PolicyConfig/properties/id'
              keyword: uniqueItems
              sourceValue: true
        title:
          type: string
          description: User defined title of the policy. Title can be changed at any time
          maxLength: 256
          minLength: 3
          pattern: ^[a-zA-Z0-9]+[a-zA-Z0-9!-~ ]+$
        description:
          type: string
          description: Detailed description of the policy
          maxLength: 256
        type:
          description: type of policy
          allOf:
            - $ref: '#/components/schemas/PolicyType'
        status:
          description: status of the policy
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/PolicyStatus'
        revision:
          description: system defined info
          readOnly: true
          allOf:
            - $ref: '#/components/schemas/ObjectRevision'
        attr:
          type: object
          additionalProperties:
            type: string
          description: Mapping of policy  variable keys and policy variable values
        appPolicy:
          description: app policy, which is used in auto app instance deployment
          allOf:
            - $ref: '#/components/schemas/AppPolicy'
        azurePolicy:
          description: azure policy, which is used in configuring azure iot-edge.
          allOf:
            - $ref: '#/components/schemas/AzurePolicy'
        modulePolicy:
          description: module policy, which is used in auto module deployment
          allOf:
            - $ref: '#/components/schemas/ModulePolicy'
        attestationPolicy:
          description: attestation policy to enforce on all devices in this project
          allOf:
            - $ref: '#/components/schemas/AttestationPolicy'
        networkPolicy:
          description: network policy to enforce on all devices in this project
          allOf:
            - $ref: '#/components/schemas/NetworkPolicy'
        clusterPolicy:
          description: cluster policy to bring up cluster on devices in this project
          allOf:
            - $ref: '#/components/schemas/ClusterPolicy'
        edgeviewPolicy:
          description: edgeview policy on devices of this project
          allOf:
            - $ref: '#/components/schemas/EdgeviewPolicy'
        localOperatorConsolePolicy:
          description: >-
            local operator console policy to enforce on all devices in this
            project
          allOf:
            - $ref: '#/components/schemas/LocalOperatorConsolePolicy'
        configurationLockPolicy:
          description: configuration lock policy to enforce on all devices in this project
          allOf:
            - $ref: '#/components/schemas/ConfigurationLockPolicy'
        pcrPolicy:
          description: PCR policy for TPM key sealing on devices in this project
          allOf:
            - $ref: '#/components/schemas/PCRPolicy'
        portBasedNetworkAccessControlPolicy:
          description: >-
            port based network access control (802.1X) policy to enforce on all
            devices in this project
          allOf:
            - $ref: '#/components/schemas/PortBasedNetworkAccessControlPolicy'
        statusMessage:
          type: string
          description: Detailed status message of the policy
          maxLength: 256
      description: >-
        Policy configuration defines set of policies to be applied on a resource
        grup (project). Policy can be one of the types specified in PolicyType.
        Multiple policies can be applied to a single resource group (project).
      title: Policy detailed configuration for a resource group (project)
      required:
        - name
        - title
        - type
    BondAdapter:
      type: object
      properties:
        logicalLabel:
          type: string
          description: Logical name of this bond adapter
        interfaceName:
          type: string
          description: A physical name of the bond interface
        lowerLayerNames:
          type: array
          items:
            type: string
          description: Logical names of aggregated PhysicalIOs
        bondMode:
          description: Bonding mode
          title: >-
            A bonding mode specifies the policy indicating how bonding slaves
            are used

            during network transmission
          allOf:
            - $ref: '#/components/schemas/BondMode'
        mii:
          description: MII monitor
          allOf:
            - $ref: '#/components/schemas/MIIMonitor'
        arp:
          description: ARP monitor
          allOf:
            - $ref: '#/components/schemas/ArpMonitor'
        lacpRate:
          description: LACPDU transmission rate in 802.3ad mode
          allOf:
            - $ref: '#/components/schemas/LacpRate'
        interface:
          description: System Sub-Interface
          allOf:
            - $ref: '#/components/schemas/SysInterface'
      description: bondAdapter represents a single bond interface
      title: bondAdapter payload detail
    ZcOpsType:
      type: string
      enum:
        - OPS_TYPE_UNSPECIFIED
        - OPS_TYPE_READ
        - OPS_TYPE_DELETE
        - OPS_TYPE_CREATE
        - OPS_TYPE_UPDATE
        - OPS_TYPE_LIST
      default: OPS_TYPE_UNSPECIFIED
      title: ZedCloud internal operation type
    ZcOpsStatus:
      type: string
      enum:
        - OPS_STATUS_UNSPECIFIED
        - OPS_STATUS_PENDING
        - OPS_STATUS_ONGOING
        - OPS_STATUS_COMPLETE
      default: OPS_STATUS_UNSPECIFIED
      description: >-
        - OPS_STATUS_PENDING: In rare cases, system may not start operation when
        it was requested. Client will be notified that operation is PENDING
         - OPS_STATUS_ONGOING: system will start the operation, but at the time response was generated, operation is still ONGOING.
         - OPS_STATUS_COMPLETE: Even if the result of the operations may result in failure, but the OpsStatus will marked COMPLETE for almost all cases.
      title: ZedCloud internal operation status
    ObjectType:
      type: string
      enum:
        - OBJECT_TYPE_UNSPECIFIED
        - OBJECT_TYPE_USER
        - OBJECT_TYPE_EDGE_NODE
        - OBJECT_TYPE_EDGE_APP
        - OBJECT_TYPE_IMAGE
        - OBJECT_TYPE_EDGE_APP_INSTANCE
        - OBJECT_TYPE_PROJECT
        - OBJECT_TYPE_NETWORK
        - OBJECT_TYPE_DATASTORE
        - OBJECT_TYPE_SERVICE
        - OBJECT_TYPE_SERVICE_INSTANCE
        - OBJECT_TYPE_ENTERPRISE
        - OBJECT_TYPE_ROLE
        - OBJECT_TYPE_CREDENTIAL
        - OBJECT_TYPE_NETWORK_INSTANCE
        - OBJECT_TYPE_VOLUME_INSTANCE
        - OBJECT_TYPE_REALM
        - OBJECT_TYPE_AUTHPROFILE
        - OBJECT_TYPE_POLICY
        - OBJECT_TYPE_APP_POLICY
        - OBJECT_TYPE_CLUSTER_INSTANCE
        - OBJECT_TYPE_PLUGIN
        - OBJECT_TYPE_DOC_POLICY
        - OBJECT_TYPE_ORCHESTRATOR_CLUSTER
        - OBJECT_TYPE_TAGS
        - OBJECT_TYPE_EDGE_NODE_INTERFACE
        - OBJECT_TYPE_DEPLOYMENT
        - OBJECT_TYPE_ENTITLEMENTS
        - OBJECT_TYPE_DATA_STREAM
        - OBJECT_TYPE_API_USAGE
        - OBJECT_TYPE_APP_INSTANCE_SNAPSHOT
        - OBJECT_TYPE_PATCH_ENVELOPE
        - OBJECT_TYPE_RESOURCE_USAGE_TRACK
        - OBJECT_TYPE_PATCH_ENVELOPE_REFERENCE
        - OBJECT_TYPE_DEV_PASSTHROUGH
        - OBJECT_TYPE_EDGE_NODE_CLUSTER
        - OBJECT_TYPE_ASSET_GROUP
        - OBJECT_TYPE_APP_PROFILE
        - OBJECT_TYPE_PROFILE_DEPLOYMENT
        - OBJECT_TYPE_ZKS_INSTANCE
        - OBJECT_TYPE_CLUSTER_GROUP
      default: OBJECT_TYPE_UNSPECIFIED
    ZsrvError:
      type: object
      properties:
        ec:
          title: |-
            Enumrated error code, describes more granular numerical
            value than just httpStatus
          allOf:
            - $ref: '#/components/schemas/ZsrvErrorCode'
        location:
          type: string
          title: 'Ignore: Internal field only'
        details:
          type: string
          title: Field captures string description of details
    protobufAny:
      type: object
      properties:
        typeUrl:
          type: string
        value:
          type: string
          format: byte
    LispServer:
      type: object
      properties:
        nameOrIp:
          type: string
          description: name/IP
        credential:
          type: string
          description: lisp credential
      description: LispServer request payload
      title: LispServer payload detail
      required:
        - nameOrIp
        - credential
    DevZedServer:
      type: object
      properties:
        hostName:
          type: string
          description: Hostname for dev zed server
        EID:
          type: array
          items:
            type: string
          description: EID
      description: DevZedServer request payload
      title: DevZedServer payload detail
      required:
        - hostName
        - EID
    NetConfig:
      type: object
      properties:
        id:
          type: string
          description: System defined universally unique Id of the network
          readOnly: true
          pattern: '[0-9A-Za-z-]+'
          x-zededa-source-issues:
            - code: inapplicable-constraint
              pointer: '#/definitions/NetConfig/properties/id'
              keyword: uniqueItems
              sourceValue: true
        name:
          type: string
          description: >-
            User defined name of the network, unique across the enterprise. Once
            object is created, name can’t be changed
          maxLength: 256
          minLength: 3
          pattern: '[a-zA-Z0-9][a-zA-Z0-9_.-]+'
          x-zededa-source-issues:
            - code: inapplicable-constraint
              pointer: '#/definitions/NetConfig/properties/name'
              keyword: uniqueItems
              sourceValue: true
        title:
          type: string
          description: User defined title of the network. Title can be changed at any time
          maxLength: 256
          minLength: 3
          pattern: ^[a-zA-Z0-9]+[a-zA-Z0-9!-~ ]+$
        description:
          type: string
          description: Detailed description of the network
          maxLength: 256
        revision:
          description: system defined info
          allOf:
            - $ref: '#/components/schemas/ObjectRevision'
        projectId:
          type: string
        kind:
          $ref: '#/components/schemas/NetworkKind'
        ip:
          $ref: '#/components/schemas/IpSpec'
        dnsList:
          type: array
          items:
            $ref: '#/components/schemas/StaticDNSList'
        proxy:
          title: enterprise proxy
          allOf:
            - $ref: '#/components/schemas/NetProxyConfig'
        enterpriseDefault:
          type: boolean
          title: make this network default for device
        mtu:
          type: integer
          format: int64
          title: >-
            Maximum transmission unit (MTU) to set on the associated network
            adapter(s)
        wireless:
          title: Wifi configuration
          allOf:
            - $ref: '#/components/schemas/NetWirelessConfig'
        project:
          title: project configuration
          allOf:
            - $ref: '#/components/schemas/NetProjectInfo'
      description: >-
        Network provides Edge nodes a variety of connectivity choices for all
        types of networks. This enables physical connectivity with Ethernet,
        WiFi, LTE to communicate with ZEDEDA Cloud controller and Data Centres.
      title: Network detailed configuration
      required:
        - name
        - title
        - projectId
        - kind
        - ip
    AdapterUsage:
      type: string
      enum:
        - ADAPTER_USAGE_UNSPECIFIED
        - ADAPTER_USAGE_MANAGEMENT
        - ADAPTER_USAGE_APP_DIRECT
        - ADAPTER_USAGE_APP_SHARED
        - ADAPTER_USAGE_DISABLED
        - ADAPTER_USAGE_VLANS_ONLY
        - ADAPTER_USAGE_BOND_MEMBER
      default: ADAPTER_USAGE_UNSPECIFIED
      description: |-
        - ADAPTER_USAGE_UNSPECIFIED: Adapter unspecified
         - ADAPTER_USAGE_MANAGEMENT: Adapter can be used by EVE as well as other Edge applications
         - ADAPTER_USAGE_APP_DIRECT: Adapter is directly used by one edge application
         - ADAPTER_USAGE_APP_SHARED: Adapter can be shared by different network instances
         - ADAPTER_USAGE_DISABLED: Adapter disabled, for future use
         - ADAPTER_USAGE_VLANS_ONLY: Adapter is used exclusively for VLANs
         - ADAPTER_USAGE_BOND_MEMBER: Adapter is used exclusively for BOND interfaces
      title: Adapter Usage
    NetworkDHCPType:
      type: string
      enum:
        - NETWORK_DHCP_TYPE_UNSPECIFIED
        - NETWORK_DHCP_TYPE_STATIC
        - NETWORK_DHCP_TYPE_PASSTHROUGH
        - NETWORK_DHCP_TYPE_DEPRECATED
        - NETWORK_DHCP_TYPE_CLIENT
        - NETWORK_DHCP_TYPE_STATIC_ADAPTER_SPECIFIC
      default: NETWORK_DHCP_TYPE_UNSPECIFIED
      title: |-
        - NETWORK_DHCP_TYPE_STATIC: used for adapter configured DHCP static
         - NETWORK_DHCP_TYPE_PASSTHROUGH: used for adapter configured DHCP none, application will do DHCP
         - NETWORK_DHCP_TYPE_DEPRECATED: used for application simulation
         - NETWORK_DHCP_TYPE_CLIENT: used for adapter configured DHCP client
         - NETWORK_DHCP_TYPE_STATIC_ADAPTER_SPECIFIC: used to configure device adapter specific static networks
    NetworkInstanceKind:
      type: string
      enum:
        - NETWORK_INSTANCE_KIND_UNSPECIFIED
        - NETWORK_INSTANCE_KIND_TRANSPARENT
        - NETWORK_INSTANCE_KIND_SWITCH
        - NETWORK_INSTANCE_KIND_LOCAL
        - NETWORK_INSTANCE_KIND_CLOUD
        - NETWORK_INSTANCE_KIND_MESH
        - NETWORK_INSTANCE_KIND_HONEYPOT
      default: NETWORK_INSTANCE_KIND_UNSPECIFIED
    NetworkInstanceDhcpType:
      type: string
      enum:
        - NETWORK_INSTANCE_DHCP_TYPE_UNSPECIFIED
        - NETWORK_INSTANCE_DHCP_TYPE_V4
        - NETWORK_INSTANCE_DHCP_TYPE_V6
        - NETWORK_INSTANCE_DHCP_TYPE_CRYPTOEID
        - NETWORK_INSTANCE_DHCP_TYPE_CRYPTOV4
        - NETWORK_INSTANCE_DHCP_TYPE_CRYPTOV6
      default: NETWORK_INSTANCE_DHCP_TYPE_UNSPECIFIED
      title: |-
        NetworkInstanceDhcpType: Used in the network instance provide
           dhcp server configuration
    DhcpServerConfig:
      type: object
      properties:
        subnet:
          type: string
          description: Subnet address
        mask:
          type: string
          description: Subnet Mask
        gateway:
          type: string
          description: IP Address of Network Gateway
        domain:
          type: string
          description: Network domain
        ntp:
          type: string
          description: IP Address of NTP Server
          title: ntp will be deprecated
        dns:
          type: array
          items:
            type: string
          description: IP Addresses of DNS servers
          title: possible DNS ip address
        dhcpRange:
          description: Range of IP addresses to be used for DHCP
          allOf:
            - $ref: '#/components/schemas/dhcpIpRange'
        ntpServers:
          type: array
          items:
            $ref: '#/components/schemas/NtpServer'
          description: NTP Servers
    StaticDNSList:
      type: object
      properties:
        hostname:
          type: string
          description: Host name
        addrs:
          type: array
          items:
            type: string
          description: Addresses
      description: Static DNS list
      title: Static DNS list
    LispConfig:
      type: object
      properties:
        lispiid:
          type: number
          format: int64
          description: lisp id
        allocate:
          type: boolean
          description: Allocate flag
        exportprivate:
          type: boolean
          description: Export Private flag
        allocationprefix:
          type: string
          format: byte
          description: Allocation Prefix
        allocationprefixlen:
          type: number
          format: int64
          description: Allocation Prefix Length
        sp:
          type: array
          items:
            $ref: '#/components/schemas/ServicePoint'
          description: Service Point List
      description: List Configurations.
      title: Lisp Configurations
    NetInstOpaqueConfig:
      type: object
      properties:
        type:
          type: string
          description: type of Opaque config
          allOf:
            - $ref: '#/components/schemas/OpaqueConfigType'
        oconfig:
          type: string
          description: base64 encoded string of opaque config
        lisp:
          description: >-
            Deprecated - Lisp config


            **Source definition conflict:** this property declares type
            `"string"`, while the referenced definition declares `"object"`. The
            referenced schema is shown; the conflicting declaration needs
            correction in ZEDEDA's Swagger definition.
          title: lisp - Deprecated
          allOf:
            - $ref: '#/components/schemas/LispConfig'
          x-zededa-source-issues:
            - code: conflicting-reference
              pointer: '#/definitions/NetInstOpaqueConfig/properties/lisp'
              keyword: type
              sourceValue: string
              reference: '#/definitions/LispConfig'
              referencedValue: object
      description: Network Instance Opaque config. This is service specific configuration.
    StaticIPRoute:
      type: object
      properties:
        prefix:
          type: string
          description: IP Prefix
        gateway:
          type: string
          description: Gateway IP
        outputPort:
          type: string
          description: Output Port
        probeConfig:
          type: object
          description: Probe Configuration
          allOf:
            - $ref: '#/components/schemas/ProbeConfig'
      description: Static IP Routes
      title: Static IP Routes
    NetInstEdgeNodeCluster:
      type: object
      properties:
        id:
          type: string
          description: Id of the Edge Node Cluster
          pattern: '[0-9A-Za-z-]+'
        designatedNodeID:
          type: string
          description: Id of the designated Edge Node
          pattern: '[0-9A-Za-z-]+'
    JWTInfo:
      type: object
      properties:
        dispUrl:
          type: string
        allowSec:
          type: integer
          format: int64
        expireSec:
          type: string
          format: uint64
        numInst:
          type: integer
          format: int64
        encrypt:
          type: boolean
        authen:
          $ref: '#/components/schemas/EvAuthType'
    DevAccessPolicy:
      type: object
      properties:
        allowDev:
          type: boolean
          title: device side of edge-view access is allowed or not
    AppAccessPolicy:
      type: object
      properties:
        allowApp:
          type: boolean
          title: app side of edge-view access is allowed or not
    ExtAccessPolicy:
      type: object
      properties:
        allowExt:
          type: boolean
          title: external of device edge-view access is allowed or not
    DeviceLBConfigList:
      type: object
      properties:
        list:
          type: array
          items:
            $ref: '#/components/schemas/DeviceLBConfig'
    TagType:
      type: string
      enum:
        - TAG_TYPE_UNSPECIFIED
        - TAG_TYPE_GENERIC
        - TAG_TYPE_PROJECT
        - TAG_TYPE_AZURE
        - TAG_TYPE_DEPLOYMENT
      default: TAG_TYPE_UNSPECIFIED
      description: |-
        - TAG_TYPE_UNSPECIFIED: Unspecified
         - TAG_TYPE_GENERIC: Generic resource group
         - TAG_TYPE_PROJECT: Project resource group
         - TAG_TYPE_AZURE: Project resource group
         - TAG_TYPE_DEPLOYMENT: Project with deployment
      title: Resource group types
    PolicyType:
      type: string
      enum:
        - POLICY_TYPE_UNSPECIFIED
        - POLICY_TYPE_APP
        - POLICY_TYPE_AZURE
        - POLICY_TYPE_AWS
        - POLICY_TYPE_GCP
        - POLICY_TYPE_MODULE
        - POLICY_TYPE_ATTESTATION
        - POLICY_TYPE_NETWORK
        - POLICY_TYPE_CLUSTER
        - POLICY_TYPE_EDGEVIEW
        - POLICY_TYPE_LOC
        - POLICY_TYPE_CONFIGURATION_LOCK
        - POLICY_TYPE_PCR
        - POLICY_TYPE_PORT_BASED_NETWORK_ACCESS_CONTROL
      default: POLICY_TYPE_UNSPECIFIED
      description: type of policy.
    PolicyStatus:
      type: string
      enum:
        - POLICY_STATUS_UNSPECIFIED
        - POLICY_STATUS_INITIALIZED
        - POLICY_STATUS_INPROGRESS
        - POLICY_STATUS_READY
        - POLICY_STATUS_FAILED
      default: POLICY_STATUS_UNSPECIFIED
      description: policy status.
    AppPolicy:
      type: object
      properties:
        apps:
          type: array
          items:
            $ref: '#/components/schemas/AppConfig'
          description: >-
            list of app details that will be provisioned on all the devices of
            the project to which this policy is attached
      description: >-
        list of apps that will be provisioned on all the devices of the project
        to which this policy is attached
      title: App policy body detail
      required:
        - apps
    AzurePolicy:
      type: object
      properties:
        appId:
          type: string
          description: app id for rbac
        appPassword:
          type: string
          description: app password for rbac
        tenantId:
          type: string
          description: tenant id for rbac
        encryptedSecrets:
          type: object
          additionalProperties:
            type: string
          description: encrypted AppPassword
        cryptoKey:
          type: string
          description: key to decrypt AppPassword
        azureResourceAndServices:
          description: azure resource and service the policy will be interested in
          allOf:
            - $ref: '#/components/schemas/AzureResourceAndServices'
        customDeploymentManaged:
          type: boolean
        certificate:
          description: >-
            Certificate object holds the details of certificate like encryption
            type, validity, subject etc
          allOf:
            - $ref: '#/components/schemas/Certificate'
      description: >-
        All azure policy related details that are required to provision an iot
        edge device and deploy a module on that.
      title: Azure policy body detail
      required:
        - appId
        - appPassword
        - tenantId
    ModulePolicy:
      type: object
      properties:
        id:
          type: string
          description: unique id for deployment
          readOnly: true
          pattern: '[0-9-a-z-]+'
        labels:
          type: object
          additionalProperties:
            type: string
          description: Mapping of label variable keys and value
        priority:
          type: integer
          format: int64
          description: >-
            deployment priority of module manifest


            **Source definition issue:** required `["priority"]` is not a valid
            required-property list for this schema. It is not used to infer
            required fields; the containing object's valid required list still
            applies.
          x-zededa-source-issues:
            - code: invalid-required
              pointer: '#/definitions/ModulePolicy/properties/priority'
              keyword: required
              sourceValue:
                - priority
        targetCondition:
          type: string
          description: >-
            target condition for deployment that matches single device or group
            of devices
        metrics:
          description: custom metrics for deployment
          allOf:
            - $ref: '#/components/schemas/MetricsDetail'
        Etag:
          type: string
          description: etag for deployment
        routes:
          type: object
          additionalProperties:
            type: string
          description: Mapping of routes variable keys and value
        apps:
          type: array
          items:
            $ref: '#/components/schemas/AppConfig'
          description: >-
            list of app details that will be provisioned on all the devices of
            the project to which this policy is attached
        targetConditionNew:
          type: object
          additionalProperties:
            type: string
          description: >-
            target condition for deployment that matches single device or group
            of devices
        azureEdgeAgent:
          description: >-
            app that describes the azure edge agent to be deployed on the Azure
            runtime
          allOf:
            - $ref: '#/components/schemas/AppConfig'
        azureEdgeHub:
          description: >-
            app that describes the azure edge hub to be deployed on the Azure
            runtime
          allOf:
            - $ref: '#/components/schemas/AppConfig'
      description: >-
        list of modules that will be provisioned on all the devices of the
        project to which this policy is attached
      title: Module policy body detail
      required:
        - apps
        - priority
    AttestationPolicy:
      type: object
      properties:
        id:
          type: string
          description: unique policy id
          readOnly: true
          pattern: '[0-9-a-z-]+'
        type:
          description: Attestation policy type
          allOf:
            - $ref: '#/components/schemas/AttestPolicyType'
      description: Attestation policy to enforce on all devices of the project
      title: Attestation policy body detail
      required:
        - type
    NetworkPolicy:
      type: object
      properties:
        netInstanceConfig:
          type: array
          items:
            $ref: '#/components/schemas/NetInstConfig'
          description: >-
            list of network details that will be created on all the devices of
            the project to which this policy is attached
      description: >-
        list of networks that will be created on all the devices of the project
        to which this policy is attached
      title: Network policy body detail
      required:
        - netInstanceConfig
    ClusterPolicy:
      type: object
      properties:
        type:
          description: Type of cluster
          allOf:
            - $ref: '#/components/schemas/ClusterType'
        appPolicyID:
          type: string
          description: UUID of the app policy linked to this cluster policy
          pattern: '[0-9-a-z-]+'
        networkPolicyID:
          type: string
          description: UUID of the network policy linked to this cluster policy
          pattern: '[0-9-a-z-]+'
        clusterConfig:
          description: Cluster Policy Parameters
          allOf:
            - $ref: '#/components/schemas/ClusterConfig'
      description: cluster policy to bring up cluster on devices in this project
      title: Cluster policy body detail
      required:
        - type
        - appPolicyID
        - networkPolicyID
    EdgeviewPolicy:
      type: object
      properties:
        edgeviewcfg:
          description: Edgeview configuration and policies
          allOf:
            - $ref: '#/components/schemas/EdgeviewCfg'
        edgeviewAllow:
          type: boolean
          description: Allow device to enable Edgeview in this project
        accessAllowChange:
          type: boolean
          description: Allow inherit instance to change access policy
        maxExpireSec:
          type: integer
          format: int64
          description: Maximum seconds allowed for Edgeview session
        maxInst:
          type: integer
          format: int64
          description: Maximum instances allowed for Edgeview
        requireControllerAuthen:
          type: boolean
          description: Whether controller authentication is required for Edgeview access
      description: Policy for device edgeview operation
      title: Edgeview policy body detail
      required:
        - edgeviewAllow
    LocalOperatorConsolePolicy:
      type: object
      properties:
        id:
          type: string
          description: unique policy id
          readOnly: true
          pattern: '[0-9-a-z-]+'
        locURL:
          type: string
          description: Local operator console URL
        datastoreId:
          type: array
          items:
            type: string
          description: upload datastore list
      description: Local operator console policy to enforce on all devices of the project
      title: Local operator console policy body detail
      required:
        - locURL
    ConfigurationLockPolicy:
      type: object
      properties:
        id:
          type: string
          description: unique policy id
          readOnly: true
          pattern: '[0-9-a-z-]+'
        configLock:
          description: configuration lock setting
          allOf:
            - $ref: '#/components/schemas/ConfigurationLock'
      description: Configuration lock policy to enforce on all devices of the project
      title: configuration lock policy body detail
      required:
        - configLock
    PCRPolicy:
      type: object
      properties:
        id:
          type: string
          description: unique policy id
          readOnly: true
          pattern: '[0-9-a-z-]+'
        pcrIndices:
          type: array
          items:
            type: integer
            format: int64
          description: List of PCR indices for TPM key sealing
        policyVersion:
          type: integer
          format: int64
          description: Policy version for audit tracking
      description: PCR policy for TPM key sealing on devices
      title: PCR policy body detail
      required:
        - pcrIndices
    PortBasedNetworkAccessControlPolicy:
      type: object
      properties:
        id:
          type: string
          description: unique policy id
          readOnly: true
          pattern: '[0-9-a-z-]+'
        enablePortBasedNetworkAccessControl:
          type: boolean
          description: >-
            Enable or disable port based network access control (802.1X). When
            disabled, other fields are ignored.
        eapMethod:
          description: >-
            EAP method to use for port based network access control. Only
            EAP-TLS is supported currently.
          allOf:
            - $ref: '#/components/schemas/EAPMethod'
        eapIdentity:
          type: string
          description: EAP identity string used for authentication
          title: EAP identity string used for authentication
        certificateEnrollmentId:
          type: string
          description: >-
            ID of the certificate enrollment object used for 802.1X
            authentication
          title: >-
            Reference to the certificate enrollment object used for 802.1X
            authentication
      description: >-
        Port based network access control policy (802.1X) to enforce on all
        devices of the project
      title: Port based network access control policy body detail
    BondMode:
      type: string
      enum:
        - BOND_MODE_UNSPECIFIED
        - BOND_MODE_BALANCE_RR
        - BOND_MODE_ACTIVE_BACKUP
        - BOND_MODE_BALANCE_XOR
        - BOND_MODE_BROADCAST
        - BOND_MODE_802_3AD
        - BOND_MODE_BALANCE_TLB
        - BOND_MODE_BALANCE_ALB
      default: BOND_MODE_UNSPECIFIED
      description: >-
        A bonding mode specifies the policy indicating how bonding slaves are
        used

        during network transmission.

         - BOND_MODE_UNSPECIFIED: BOND_MODE_UNSPECIFIED : if bonding mode is not explicitly specified,
        then by default Round-Robin policy is applied (BOND_MODE_BALANCE_RR).
         - BOND_MODE_BALANCE_RR: BOND_MODE_BALANCE_RR : transmit packets in sequential order from the first
        available slave through the last. This mode provides load balancing

        and fault tolerance.

        This is the default bonding mode.
         - BOND_MODE_ACTIVE_BACKUP: BOND_MODE_ACTIVE_BACKUP : only one slave in the bond is active.
        A different slave becomes active if, and only if, the active slave
        fails.

        The bond's MAC address is externally visible on only one port to avoid

        confusing the switch.

        This mode provides fault tolerance.
         - BOND_MODE_BALANCE_XOR: BOND_MODE_BALANCE_XOR : packet source and destination MAC addresses are
        used to calculate hash and select the output slave interface
        accordingly.

        This algorithm will place all traffic destined to a particular network

        peer on the same slave.

        This mode provides load balancing and fault tolerance.
         - BOND_MODE_BROADCAST: BOND_MODE_BROADCAST: transmits everything on all slave interfaces.
        This mode provides fault tolerance.
         - BOND_MODE_802_3AD: BOND_MODE_802_3AD : IEEE 802.3ad Dynamic link aggregation.
        Creates aggregation groups that share the same speed and duplex
        settings.

        Utilizes all slaves in the active aggregator according to the 802.3ad

        specification.

        Requires that upstream networks equipment supports and has the IEEE
        802.3ad

        Dynamic link aggregation properly configured.
         - BOND_MODE_BALANCE_TLB: BOND_MODE_BALANCE_TLB : adaptive transmit load balancing. Channel bonding that
        does not require any special switch support. The outgoing traffic

        is distributed according to the current load (computed relative to the
        speed)

        on each slave.

        Incoming traffic is received by the current slave. If the receiving
        slave

        fails, another slave takes over the MAC address of the failed receiving
        slave.

        This mode provides (TX) load balancing and fault tolerance.
         - BOND_MODE_BALANCE_ALB: BOND_MODE_BALANCE_ALB : adaptive load balancing. Includes BOND_MODE_BALANCE_TLB
        plus receive load balancing (RLB) for IPV4 traffic, and does not require

        any special switch support. The receive load balancing is achieved by
        ARP

        negotiation.

        This mode provides load balancing and fault tolerance.
    MIIMonitor:
      type: object
      properties:
        interval:
          type: integer
          format: int64
          description: >-
            Specifies the MII link monitoring frequency in milliseconds.

            This determines how often the link state of each bond slave is
            inspected

            for link failures.
        updelay:
          type: integer
          format: int64
          description: >-
            Updelay specifies the time, in milliseconds, to wait before enabling

            a bond slave after a link recovery has been detected.

            The updelay value should be a multiple of the monitoring interval;
            if not,

            it will be rounded down to the nearest multiple.

            The default value is 0.
        downdelay:
          type: integer
          format: int64
          description: >-
            Specifies the time, in milliseconds, to wait before disabling a bond

            slave after a link failure has been detected.

            The downdelay value should be a multiple of the monitoring interval;
            if not,

            it will be rounded down to the nearest multiple.

            The default value is 0.
      description: |-
        MIIMonitor : MII link monitoring parameters.
        Defined for BondAdapter.
    ArpMonitor:
      type: object
      properties:
        interval:
          type: integer
          format: int64
          description: >-
            Interval specifies the ARP link monitoring frequency in
            milliseconds.
        ipTargets:
          type: array
          items:
            type: string
          description: >-
            IpTargets specifies the IPv4 addresses to use as ARP monitoring
            peers.

            These are the targets of ARP requests sent to determine the health
            of links.
      description: |-
        ArpMonitor : ARP-based link monitoring parameters.
        Defined for BondAdapter.
    LacpRate:
      type: string
      enum:
        - LACP_RATE_UNSPECIFIED
        - LACP_RATE_SLOW
        - LACP_RATE_FAST
      default: LACP_RATE_UNSPECIFIED
      description: |-
        Option specifying the rate in which EVE will ask LACP link partners
        to transmit LACPDU packets in 802.3ad mode.

         - LACP_RATE_UNSPECIFIED: Default LACP rate is Slow.
         - LACP_RATE_SLOW: Request LACP partner to transmit LACPDUs every 30 seconds.
         - LACP_RATE_FAST: Request LACP partner to transmit LACPDUs every 1 second.
    ZsrvErrorCode:
      type: string
      enum:
        - zMsgErrorNone
        - zMsgSucess
        - NotFound
        - AlreadyExists
        - VersionMismatch
        - RangeError
        - LargeResult
        - IncompleteData
        - InvalidData
        - FunctionUnsupported
        - NoMemory
        - SendFailure
        - Timeout
        - BadReqBody
        - BadReqParam
        - InvalidFieldFormat
        - UrlNotFound
        - ApiVersionNotSupported
        - Unauthorized
        - Forbidden
        - Conflict
        - NotModified
        - DependencyConflict
        - JsonFmtError
        - ProtoFmtError
        - CertError
        - DataBaseConnection
        - DBError
        - zMsgAccepted
        - zMsgCreated
        - PreConditionFailed
        - InternalServerError
      default: zMsgErrorNone
      description: |-
        - zMsgErrorNone: common validation errors
         - IncompleteData: message had fields that weren't filled in
         - InvalidData: message contained the field that wasn't expected
         - FunctionUnsupported: this feature unavailable on this version of device
         - InvalidFieldFormat: message contained the field that wasn't correctly formatted
         - JsonFmtError: Marshal / Unmarshal errors
         - DataBaseConnection: generic DB error
      title: ZedCould internal error code
    NetworkKind:
      type: string
      enum:
        - NETWORK_KIND_UNSPECIFIED
        - NETWORK_KIND_V4
        - NETWORK_KIND_V6
        - NETWORK_KIND_V4_ONLY
        - NETWORK_KIND_V6_ONLY
        - NETWORK_KIND_DUAL_V4_V6
      default: NETWORK_KIND_UNSPECIFIED
      title: |-
        NetworkKind: Used for the network configuration, this is
         only client mode
    IpSpec:
      type: object
      properties:
        deprecatedDhcp:
          type: boolean
          title: deprecated
        dhcp:
          $ref: '#/components/schemas/NetworkDHCPType'
        subnet:
          type: string
        mask:
          type: string
        gateway:
          type: string
        domain:
          type: string
        ntp:
          type: string
          title: ntp will be deprecated
        dns:
          type: array
          items:
            type: string
        dhcpRange:
          description: |-
            for IPAM management when dhcp is turned on.
            If none provided, system will default pool.
          allOf:
            - $ref: '#/components/schemas/dhcpIpRange'
        ntpServers:
          type: array
          items:
            $ref: '#/components/schemas/NtpServer'
        ntpServerExclusively:
          type: boolean
    NetProxyConfig:
      type: object
      properties:
        networkProxy:
          type: boolean
          description: Network proxy
        proxies:
          type: array
          items:
            $ref: '#/components/schemas/NetProxyServer'
          description: 'Net Proxy: protocol level proxies'
          title: protocol level proxies
        exceptions:
          type: string
          description: Proxy exceptions
        pacfile:
          type: string
          description: proxy configuration in a pacfile
          title: proxy configuration in a pacfile
        networkProxyURL:
          type: string
          description: Network Proxy URL
          title: Direct URL for wpad.dat download
        networkProxyCerts:
          type: array
          items:
            type: string
            format: byte
          description: Network Proxy Certificates
          title: Proxy Certificates
      description: Net Proxy Configurations
      title: Net Proxy Configurations
    NetWirelessConfig:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/NetworkWirelessType'
        cellularCfg:
          $ref: '#/components/schemas/NetCellularConfig'
        wifiCfg:
          $ref: '#/components/schemas/NetWifiConfig'
    NetProjectInfo:
      type: object
      properties:
        projectId:
          type: string
          description: system generated unique id for a project
          readOnly: true
          pattern: '[0-9A-Za-z-]+'
        projectName:
          type: string
          description: project name
    dhcpIpRange:
      type: object
      properties:
        start:
          type: string
          description: starting IP
        end:
          type: string
          description: ending IP
      description: DHCP IP range
      title: DHCP IP range
    NtpServer:
      type: object
      properties:
        server:
          type: string
          description: NTP Server IP or FQDN
      description: NTP Server
      title: NTP Server
    ServicePoint:
      type: object
      properties:
        type:
          description: >-
            Service Point Type


            **Source definition conflict:** this property declares type
            `"object"`, while the referenced definition declares `"string"`. The
            referenced schema is shown; the conflicting declaration needs
            correction in ZEDEDA's Swagger definition.
          allOf:
            - $ref: '#/components/schemas/spType'
          x-zededa-source-issues:
            - code: conflicting-reference
              pointer: '#/definitions/ServicePoint/properties/type'
              keyword: type
              sourceValue: object
              reference: '#/definitions/spType'
              referencedValue: string
        NameOrIp:
          type: string
          description: Service name/ service name
        Credential:
          type: string
          description: Service credentials
      description: Service Point
      title: Service Point
    OpaqueConfigType:
      type: string
      enum:
        - OPAQUE_CONFIG_TYPE_UNSPECIFIED
        - OPAQUE_CONFIG_TYPE_VPN
        - OPAQUE_CONFIG_TYPE_LISP
      default: OPAQUE_CONFIG_TYPE_UNSPECIFIED
    ProbeConfig:
      type: object
      properties:
        enableGatewayPing:
          type: boolean
          description: Enable gateway ping
        pingMaxCost:
          type: number
          format: int64
          description: Ping max cost
        preferLowerCost:
          type: boolean
          description: Prefer lower cost
        preferStrongerWwanSignal:
          type: boolean
          description: Prefer stronger WWAN signal
        customProbeConfig:
          type: object
          description: Custom probe configuration
          allOf:
            - $ref: '#/components/schemas/commonConnectivityProbe'
      description: Probing configuration
      title: Probing configuration
    EvAuthType:
      type: string
      enum:
        - EvAuth_TYPE_UNSPECIFIED
        - EvAuth_TYPE_CONTROLER_CERT
        - EvAuth_TYPE_SSH_RSA_KEYS
      default: EvAuth_TYPE_UNSPECIFIED
    DeviceLBConfig:
      type: object
      properties:
        interface:
          type: string
        startIP:
          type: string
    AppConfig:
      type: object
      properties:
        id:
          type: string
          description: System defined universally unique Id of the edge application
          readOnly: true
          pattern: >-
            [a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}
          x-zededa-source-issues:
            - code: inapplicable-constraint
              pointer: '#/definitions/AppConfig/properties/id'
              keyword: uniqueItems
              sourceValue: true
        name:
          type: string
          description: >-
            User defined name of the edge application, unique across the
            enterprise. Once object is created, name can’t be changed
          maxLength: 256
          minLength: 3
          pattern: '[a-zA-Z0-9][a-zA-Z0-9_.-]+'
          x-zededa-source-issues:
            - code: inapplicable-constraint
              pointer: '#/definitions/AppConfig/properties/name'
              keyword: uniqueItems
              sourceValue: true
        title:
          type: string
          description: >-
            User defined title of the edge application. Title can be changed at
            any time
          maxLength: 256
          minLength: 3
          pattern: ^[a-zA-Z0-9]+[a-zA-Z0-9!-~ ]+$
        description:
          type: string
          description: Detailed description of the edge application
          maxLength: 256
        appId:
          type: string
          description: >-
            User defined name of the edge app, unique across the enterprise.
            Once app name is created, name can’t be changed
          maxLength: 256
          minLength: 3
          pattern: '[a-zA-Z0-9][a-zA-Z0-9_.-]+'
          x-zededa-source-issues:
            - code: inapplicable-constraint
              pointer: '#/definitions/AppConfig/properties/appId'
              keyword: uniqueItems
              sourceValue: true
        networks:
          type: integer
          format: int64
          description: >-
            user defined network options


            **Source definition issue:** required `["networks"]` is not a valid
            required-property list for this schema. It is not used to infer
            required fields; the containing object's valid required list still
            applies.
          x-zededa-source-issues:
            - code: invalid-required
              pointer: '#/definitions/AppConfig/properties/networks'
              keyword: required
              sourceValue:
                - networks
        drives:
          type: integer
          format: int64
          description: >-
            user defined drives


            **Source definition issue:** required `["drives"]` is not a valid
            required-property list for this schema. It is not used to infer
            required fields; the containing object's valid required list still
            applies.
          readOnly: true
          x-zededa-source-issues:
            - code: invalid-required
              pointer: '#/definitions/AppConfig/properties/drives'
              keyword: required
              sourceValue:
                - drives
        cpus:
          type: integer
          format: int64
          description: >-
            user defined cpus for bundle


            **Source definition issue:** required `["cpus"]` is not a valid
            required-property list for this schema. It is not used to infer
            required fields; the containing object's valid required list still
            applies.
          x-zededa-source-issues:
            - code: invalid-required
              pointer: '#/definitions/AppConfig/properties/cpus'
              keyword: required
              sourceValue:
                - cpus
        memory:
          type: integer
          format: int64
          description: >-
            user defined memory for bundle


            **Source definition issue:** required `["memory"]` is not a valid
            required-property list for this schema. It is not used to infer
            required fields; the containing object's valid required list still
            applies.
          x-zededa-source-issues:
            - code: invalid-required
              pointer: '#/definitions/AppConfig/properties/memory'
              keyword: required
              sourceValue:
                - memory
        manifestJSON:
          description: Manifest data
          allOf:
            - $ref: '#/components/schemas/VMManifest'
        parentDetail:
          description: origin and parent related details
          allOf:
            - $ref: '#/components/schemas/ObjectParentDetail'
        originType:
          description: >-
            origin of object


            **Source definition issue:** required `["true"]` is not a valid
            required-property list for this schema. It is not used to infer
            required fields; the containing object's valid required list still
            applies.


            **Source definition conflict:** this property declares type
            `"object"`, while the referenced definition declares `"string"`. The
            referenced schema is shown; the conflicting declaration needs
            correction in ZEDEDA's Swagger definition.
          allOf:
            - $ref: '#/components/schemas/Origin'
          x-zededa-source-issues:
            - code: invalid-required
              pointer: '#/definitions/AppConfig/properties/originType'
              keyword: required
              sourceValue:
                - 'true'
              reference: '#/definitions/Origin'
            - code: conflicting-reference
              pointer: '#/definitions/AppConfig/properties/originType'
              keyword: type
              sourceValue: object
              reference: '#/definitions/Origin'
              referencedValue: string
        appVersion:
          type: string
          description: Current version of the attached bundle
        nameProjectPart:
          type: string
          description: User provided name part  for the auto deployed app
        nameAppPart:
          type: string
          description: User provided name part  for the auto deployed app
        tags:
          type: object
          additionalProperties:
            type: string
          description: >-
            Tags are name/value pairs that enable you to categorize resources.
            Tag names are case insensitive with max_length 512 and min_length 3.
            Tag values are case sensitive with max_length 256 and min_length 3.
          maxLength: 32
          pattern: ^[^<%&?/\>]+$
        namingScheme:
          description: app naming scheme
          allOf:
            - $ref: '#/components/schemas/AppNamingScheme'
        interfaces:
          type: array
          items:
            $ref: '#/components/schemas/appInterface'
          description: application interfaces
        storage:
          type: integer
          format: int64
          description: user defined storage for bundle
        startDelayInSeconds:
          type: integer
          format: int64
          description: >-
            start delay is the time in seconds EVE should wait after boot before
            starting the application instance
      description: >-
        Edge application configuration for an App policy defines configuration
        details of the Edge application to be installed to all Edge node(s)
        under the App policy.
      title: Edge application configuration for App policy
      required:
        - name
        - title
        - manifestJSON
        - networks
        - drives
        - cpus
        - memory
        - originType
    AzureResourceAndServices:
      type: object
      properties:
        resourceGroup:
          type: array
          items:
            $ref: '#/components/schemas/ResourceGroupDetail'
          description: list of resource groups attached to cloud policy
        iotHubService:
          type: array
          items:
            $ref: '#/components/schemas/IotHubServiceDetail'
          description: list of iothubs attached to cloud policy
        dpsService:
          type: object
          description: dps service attached to cloud policy
          allOf:
            - $ref: '#/components/schemas/DPSServiceDetail'
      description: Azure resource request payload for cloud policy
      title: Azure resource payload detail for cloud policy
      required:
        - resourceGroup
        - iotHubService
        - dpsService
    Certificate:
      type: object
      properties:
        cert:
          type: string
          description: base64 string of the parent certificate
          title: certificate details
        pvtKey:
          type: string
          description: base64 string of the parent pvt key
        publicKey:
          type: string
          description: base63 string of the public key
        passPhrase:
          type: string
          description: >-
            pass phase for the pvt key, this has to be filled if pvt key is
            encrypted with a pass phrase
        exportable:
          type: boolean
          description: Indicates if the private key can be exported.
        reuseKey:
          type: boolean
          description: Indicates if the same key pair will be used on certificate renewal.
        encryptedSecrets:
          type: object
          additionalProperties:
            type: string
          description: user encrypted secrets map
          title: secrets encryption
        cryptoKey:
          type: string
          description: Crypto Key for decrypting user secret information
        publicKeyAlgorithm:
          type: string
          description: Public key algorithm.
          title: encryption algorithm
        rsaEcryption:
          description: RSA encryption algorithm of the certificate
          allOf:
            - $ref: '#/components/schemas/RSA'
        ecdsaEncryption:
          description: ECDSA encryption algorithm of the certificate
          allOf:
            - $ref: '#/components/schemas/ECDSA'
        validFrom:
          type: string
          format: date-time
          description: Certificate validatity start time
          title: certificate validity
        validTill:
          type: string
          format: date-time
          description: Certificate validatity start time
        sanValues:
          description: >-
            This holds the alternative name values like URIs, domain names IPs
            etc.
          title: Subject alternative name values
          allOf:
            - $ref: '#/components/schemas/SANValues'
        subject:
          description: Parameters for the subject of the X509 component of a certificate.
          allOf:
            - $ref: '#/components/schemas/Subject'
        issuer:
          description: Parameters for the issuer of the X509 component of a certificate.
          allOf:
            - $ref: '#/components/schemas/Subject'
        serialNumber:
          type: string
          description: >-
            Unique identifier for each Certificate generated by an Certificate
            Issuer. 
        basicContraintsValid:
          type: boolean
          description: This fields tells the basic constraints like isCA are correct.
        keyUsage:
          type: integer
          format: int32
          description: >-
            Key usage extensions define the purpose of the public key contained
            in a certificate.
        extendedKeyUsage:
          type: array
          items:
            type: string
          description: Sequence of extended key usages.
        signatureAlgorithm:
          type: string
    MetricsDetail:
      type: object
      properties:
        queries:
          type: object
          additionalProperties:
            type: string
          description: Mapping of queries variable keys and value
        results:
          type: object
          additionalProperties:
            type: string
          description: Mapping of results variable keys and value
    AttestPolicyType:
      type: string
      enum:
        - ATTEST_POLICY_TYPE_UNSPECIFIED
        - ATTEST_POLICY_TYPE_ACCEPT
        - ATTEST_POLICY_TYPE_ENFORCE
      default: ATTEST_POLICY_TYPE_UNSPECIFIED
      description: |2-
         - ATTEST_POLICY_TYPE_ACCEPT: Do not enforce attestation. All devices are marked as successfully attested.
         - ATTEST_POLICY_TYPE_ENFORCE: Enforce attestation. Devices failing attestation are marked accordingly.
    ClusterType:
      type: string
      enum:
        - CLUSTER_TYPE_UNSPECIFIED
        - CLUSTER_TYPE_K3S
        - CLUSTER_TYPE_TKG_ATTACH
      default: CLUSTER_TYPE_UNSPECIFIED
      title: |-
        - CLUSTER_TYPE_K3S: cluster type is k3s
         - CLUSTER_TYPE_TKG_ATTACH: cluster type is TKG, with subtype ATTACH
    ClusterConfig:
      type: object
      properties:
        minNodesRequired:
          type: integer
          format: int64
    ConfigurationLock:
      type: string
      enum:
        - CONFIGURATION_LOCK_UNSPECIFIED
        - CONFIGURATION_LOCK_ENABLED
        - CONFIGURATION_LOCK_DISABLED
      default: CONFIGURATION_LOCK_UNSPECIFIED
    EAPMethod:
      type: string
      enum:
        - EAP_METHOD_UNSPECIFIED
        - EAP_METHOD_TLS
      default: EAP_METHOD_UNSPECIFIED
      title: Supported EAP methods for port based network access control (802.1X)
    NetProxyServer:
      type: object
      properties:
        proto:
          description: >-
            Net Proxy proto


            **Source definition conflict:** this property declares type
            `"object"`, while the referenced definition declares `"string"`. The
            referenced schema is shown; the conflicting declaration needs
            correction in ZEDEDA's Swagger definition.
          allOf:
            - $ref: '#/components/schemas/NetworkProxyProto'
          x-zededa-source-issues:
            - code: conflicting-reference
              pointer: '#/definitions/NetProxyServer/properties/proto'
              keyword: type
              sourceValue: object
              reference: '#/definitions/NetworkProxyProto'
              referencedValue: string
        server:
          type: string
          description: Net Proxy Server
        port:
          type: number
          format: int64
          description: Net Proxy Port
      description: Net Proxy Server
      title: Net Proxy Server
    NetworkWirelessType:
      type: string
      enum:
        - NETWORK_WIRELESS_TYPE_UNSPECIFIED
        - NETWORK_WIRELESS_TYPE_WIFI
        - NETWORK_WIRELESS_TYPE_CELLULAR
      default: NETWORK_WIRELESS_TYPE_UNSPECIFIED
    NetCellularConfig:
      type: object
      properties:
        APN:
          type: string
          description: >-
            APN string - by default it is "internet".

            TO BE DEPRECATED: Fill connection arguments inside access_points
            instead.

            If access_points is non-empty, then APN field is ignored.
        probe:
          description: |-
            Optional cellular connectivity probing.
            By default it is enabled.
          allOf:
            - $ref: '#/components/schemas/configCellularConnectivityProbe'
        locationTracking:
          type: boolean
          description: >-
            Some LTE modems have GNSS receiver integrated and can be used for
            device

            location tracking.

            Enable this option to have location info periodically obtained from
            this

            modem and published to controller and to applications.
        accessPoints:
          type: array
          items:
            $ref: '#/components/schemas/NetCellularAccessPoint'
          description: |-
            Parameters to apply for connecting to cellular networks.
            Configured separately for every SIM card inserted into the modem.
        activatedSimSlot:
          type: integer
          format: int64
          description: |-
            Select SIM card slot to activate.
            Currently, EVE support only single-standby SIM card mode.
            0 - unspecified (leave the currently activated)
            1 - activate the first SIM slot
            2 - activate the second SIM slot
            etc.
    NetWifiConfig:
      type: object
      properties:
        wifiSSID:
          type: string
        keyScheme:
          $ref: '#/components/schemas/NetworkWiFiKeyScheme'
        identity:
          type: string
        secret:
          $ref: '#/components/schemas/NetWifiConfigSecrets'
        crypto:
          $ref: '#/components/schemas/NetWifiConfigNetcryptoblock'
        priority:
          type: integer
          format: int32
        encryptedSecrets:
          type: object
          additionalProperties:
            type: string
        cryptoKey:
          type: string
    spType:
      type: string
      enum:
        - SPTYPE_INVALIDSRV
        - SPTYPE_MAPSERVER
        - SPTYPE_SUPPORTSERVER
      default: SPTYPE_INVALIDSRV
      description: |-
        clone of types defined in API repo.

         - SPTYPE_MAPSERVER: mapping service for zededa overlay service
         - SPTYPE_SUPPORTSERVER: if device has support feature enabled, this ia cloud service
        which device can be reached.
    commonConnectivityProbe:
      type: object
      properties:
        probeMethod:
          description: Method to use to determine the connectivity status.
          allOf:
            - $ref: '#/components/schemas/commonConnectivityProbeMethod'
        probeEndpoint:
          description: |-
            Endpoint to probe using the selected probing mechanism to determine
            the connectivity status.
          allOf:
            - $ref: '#/components/schemas/commonProbeEndpoint'
      description: Configuration for user-defined connectivity-testing probe.
    VMManifest:
      type: object
      properties:
        acKind:
          type: string
          default: VMManifest
          description: 'UI map: N/A - not exposed to users'
          title: Edge Application type
        acVersion:
          type: string
          default: 1.2.0
          description: 'UI map: N/A - not exposed to users'
          title: Manifest version
        name:
          type: string
          description: >-
            UI map: AppEditPage:IdentityPane:Name_Field,
            AppDetailsPage:IdentityPane:Name_Field
          title: Unique id of app manifest, should match object name
        displayName:
          type: string
          description: >-
            UI map: AppEditPage:IdentityPane:Title_Field,
            AppDetailsPage:IdentityPane:Title_Field
          title: Display name or title of app manifest
        description:
          type: string
          description: >-
            UI map: AppDetailsPage:IdentityPane:DescriptionField,
            AppMarketplacePage:AppCard:DescriptionField
          title: Description of the Edge application
          pattern: '[0-9A-Za-z-]+'
        owner:
          description: Owner of the application
          allOf:
            - $ref: '#/components/schemas/Author'
        desc:
          description: Description of the application
          allOf:
            - $ref: '#/components/schemas/Details'
        images:
          type: array
          items:
            $ref: '#/components/schemas/VMManifestImage'
          description: 'UI map: AppEditPage:DrivesPane, AppDetailsPage:DrivesPane'
          title: Images used by the app
        interfaces:
          type: array
          items:
            $ref: '#/components/schemas/Interface'
          description: >-
            UI map: AppEditPage:EnvironmentsPane,
            AppDetailsPage:EnvironmentsPane
          title: I/O adapter settings
        permissions:
          type: array
          items:
            $ref: '#/components/schemas/Permission'
        vmmode:
          type: string
          default: HV_HVM
          description: >-
            UI map: AppEditPage:IdentityPane:VM_Mode_Field,
            AppDetailsPage:IdentityPane:VM_Mode_Field
          title: VM mode for VM-based app
        enablevnc:
          type: boolean
          description: >-
            UI map: AppEditPage:IdentityPane:VNC_Field,
            AppDetailsPage:IdentityPane:VNC_Field
          title: Enable VNC for the app
        resources:
          type: array
          items:
            $ref: '#/components/schemas/Resource'
          description: 'UI map: AppEditPage:ResourcesPane, AppDetailsPage:ResourcesPane'
          title: Hardware resource requirement (CPU, Memory, Storage) for the app
        configuration:
          description: Template for Custom Configuration. Used for Cloud-Init
          title: |-
            Annotations   types.Annotations    `json:"Annotations,omitempty"`
            Labels        types.Labels         `json:"Labels,omitempty"`
          allOf:
            - $ref: '#/components/schemas/UserDataTemplate'
        containerDetail:
          description: Create options direct the creation of the Docker container
          title: Container specific details
          allOf:
            - $ref: '#/components/schemas/ContainerDetail'
        module:
          description: >-
            Azure module specific details like module twin, environment
            variable, routes
          title: Module specific details
          allOf:
            - $ref: '#/components/schemas/ModuleDetail'
        appType:
          description: 'bundle type, eg: vm, container, module'
          allOf:
            - $ref: '#/components/schemas/AppType'
        deploymentType:
          description: 'type of deployment for the app, eg: azure, k3s, standalone'
          allOf:
            - $ref: '#/components/schemas/DeploymentType'
        cpuPinningEnabled:
          type: boolean
          description: Enable CpuPinning
        runtimeVersion:
          description: Indicates the version of container orchestration software
          title: docker-compose runtime specific versions
          allOf:
            - $ref: '#/components/schemas/DockerRuntimeVersion'
        runtimeProtocolVersion:
          description: >-
            Indicates the internal communication protocol to pass configuration
            between Zedcloud and docker-compose runtime
          allOf:
            - $ref: '#/components/schemas/DockerRuntimeProtocolVersion'
        PersistentRuntimeSizeBytes:
          type: string
          format: uint64
          description: Size of persistent blank storage for runtime in bytes
        dockerComposeYamlText:
          type: string
          description: Docker compose base64 encoded plain text
        dockerComposeTarImageName:
          type: string
          description: Docker compose tar image name
        enableOemWinLicenseKey:
          type: boolean
          description: >-
            UI map: AppEditPage:IdentityPane:ENABLEVMCONFIG_Field,
            AppDetailsPage:IdentityPane:ENABLEVMCONFIG_Field
          title: Enable device to read the license info from APCI tables
        disableVTPM:
          type: boolean
          description: >-
            UI map: AppEditPage:IdentityPane:DISABLEVTPM_Field,
            AppDetailsPage:IdentityPane:DISABLEVTPM_Field
          title: Disable vTPM for a virtual machine (VM)
    ObjectParentDetail:
      type: object
      properties:
        idOfParentObject:
          type: string
          description: >-
            system defined unique id of parent object


            **Source definition issue:** required `["true"]` is not a valid
            required-property list for this schema. It is not used to infer
            required fields; the containing object's valid required list still
            applies.
          readOnly: true
          pattern: '[0-9A-Za-z-]+'
          x-zededa-source-issues:
            - code: invalid-required
              pointer: '#/definitions/ObjectParentDetail/properties/idOfParentObject'
              keyword: required
              sourceValue:
                - 'true'
        versionOfParentObject:
          type: integer
          format: int64
          description: version of object present in parent
          readOnly: true
          pattern: '[0-9]+'
        updateAvailable:
          type: boolean
          description: Update required flag
        referenceExists:
          type: boolean
          description: Relation with child and parent object exists or not
      description: >-
        ObjectImportDetail consists of various object attributes like
        idOfParentObject, versionOfParentObject, updateAvailable,
        referenceExists
      title: Object Import Detail
      required:
        - idOfParentObject
    Origin:
      type: string
      enum:
        - ORIGIN_UNSPECIFIED
        - ORIGIN_IMPORTED
        - ORIGIN_LOCAL
        - ORIGIN_GLOBAL
        - ORIGIN_APP_PROFILE_LOCAL
      default: ORIGIN_UNSPECIFIED
      description: >-
        - ORIGIN_UNSPECIFIED: default options, which says no Operation/Invalid
        Operation
         - ORIGIN_IMPORTED: Object imported from global enterprise.
         - ORIGIN_LOCAL: Objectl created locally.
         - ORIGIN_GLOBAL: Object created in global store,
        to use this type user should have root previlage.
         - ORIGIN_APP_PROFILE_LOCAL: Object created via App profile
      title: 'OriginType : enum specifies the Object orgigin type'
    AppNamingScheme:
      type: string
      enum:
        - APP_NAMING_SCHEME_UNSPECIFIED
        - APP_NAMING_SCHEME_DEVICE
        - APP_NAMING_SCHEME_APP_DEVICE
        - APP_NAMING_SCHEME_PROJECT_DEVICE
        - APP_NAMING_SCHEME_PROJECT_APP_DEVICE
      default: APP_NAMING_SCHEME_UNSPECIFIED
      description: type of name aliasing.
    appInterface:
      type: object
      properties:
        netname:
          type: string
          description: 'network name: will be deprecated in future, use netinstname'
        io:
          description: >-
            Physical Adapter to be matched for interface assignment. Applicable
            only when "direct attach" flag is true
          allOf:
            - $ref: '#/components/schemas/phyAdapter'
        intforder:
          type: number
          format: int64
          description: intforder
        intfname:
          type: string
          description: intf Name
        directattach:
          type: boolean
          description: direct attach flag
          title: comes from manifest during app create
        privateip:
          type: boolean
          description: Private IP flag
        acls:
          type: array
          items:
            $ref: '#/components/schemas/appACE'
          description: app Acls
        ipaddr:
          type: string
          description: IP address
          title: |-
            if netname points static DHCP then we need to take
            static /32 address here
        macaddr:
          type: string
          description: MAC address
          title: |-
            in case of p2v we might want to provide a mac-address.
            applicable only in case of DHCP=passthrough
        accessVlanId:
          type: number
          format: int64
          description: >-
            access port VLAN ID, vlan id of zero will be treated as trunk port
            and vlan id 1 is implicitly used by linux bridges
          maximum: 4093
          minimum: 2
        eidregister:
          description: EID register details
          title: 'FIXME: Check why is this required'
          allOf:
            - $ref: '#/components/schemas/EIDRegister'
        netinstname:
          type: string
          description: >-
            Network Instance name to be matched for interface assignment.
            Applicable only when "direct attach" flag is false
        netinsttag:
          type: object
          additionalProperties:
            type: string
          description: >-
            Network Instance tag to be matched for interface assignment.
            Applicable only when "direct attach" flag is false
        netinstid:
          type: string
          description: Network Instance id to be matched for interface assignment.
        defaultNetInstance:
          type: boolean
          description: default instance flag
        allowToDiscover:
          type: boolean
          description: >-
            flag tells if appInstance have permission to access the network
            mappings from the connected netInstance
      description: App Interface detail
      title: App Interface detail
      required:
        - intfname
    ResourceGroupDetail:
      type: object
      properties:
        name:
          type: string
          description: resource group name
        region:
          type: string
          description: resource group region
        subscriptionId:
          type: string
          description: azure subscription id to which resource group is attached
      description: Resource group request payload for cloud policy
      title: Resource group payload detail for cloud policy
      required:
        - name
        - subscriptionId
    IotHubServiceDetail:
      type: object
      properties:
        serviceDetail:
          $ref: '#/components/schemas/AzureResourceAndServiceDetail'
    DPSServiceDetail:
      type: object
      properties:
        serviceDetail:
          $ref: '#/components/schemas/AzureResourceAndServiceDetail'
        enrollment:
          $ref: '#/components/schemas/EnrollmentDetail'
    RSA:
      type: object
      properties:
        rsaBits:
          type: string
          format: int64
          description: RSA Encryption Key bit size.
    ECDSA:
      type: object
      properties:
        curve:
          type: string
          description: ECDSA curve to be used while signing the certificate.
    SANValues:
      type: object
      properties:
        hosts:
          type: array
          items:
            type: string
          description: List of permitted hosts.
        emaildIds:
          type: array
          items:
            type: string
          description: List of permitted email addresses.
        uris:
          type: array
          items:
            type: string
          description: List of permitted URIs.
        ips:
          type: array
          items:
            type: string
          description: List of permitted IP addresses.
        dns:
          type: array
          items:
            type: string
          description: List of permitted DNS names.
        upns:
          type: array
          items:
            type: string
          description: List of permitted User principal names.
    Subject:
      type: object
      properties:
        commonName:
          type: string
          description: Certificate common name.
        country:
          type: array
          items:
            type: string
          description: List of countries.
        organization:
          type: array
          items:
            type: string
          description: List of organization.
        organizationalUnit:
          type: array
          items:
            type: string
          description: List of Organizational Unit.
        locality:
          type: array
          items:
            type: string
          description: List of locallity.
        postalCode:
          type: array
          items:
            type: string
          description: List of Postal codes.
        province:
          type: array
          items:
            type: string
          description: List of List of Prvince.
        serialNumber:
          type: string
          description: Subject cerial number
    NetworkProxyProto:
      type: string
      enum:
        - NETWORK_PROXY_PROTO_HTTP
        - NETWORK_PROXY_PROTO_HTTPS
        - NETWORK_PROXY_PROTO_SOCKS
        - NETWORK_PROXY_PROTO_FTP
        - NETWORK_PROXY_PROTO_OTHER
      default: NETWORK_PROXY_PROTO_HTTP
    configCellularConnectivityProbe:
      type: object
      properties:
        disable:
          type: boolean
          description: If true, then probing is disabled.
        probeAddress:
          type: string
          description: >-
            IP/FQDN to periodically probe using 3 pings per iteration to
            determine connectivity status.

            This field is now deprecated and replaced with custom_probe (see
            below).

            To maintain backward-compatibility, EVE will check both
            probe_address and custom_probe

            and will use whichever has non-zero value (if any), but preferring
            custom_probe.
        customProbe:
          description: >-
            User-defined probe for cellular connectivity testing.

            Only IP address is allowed as ConnectivityProbe.probe_address (and
            port if needed),

            not hostname.

            The probing algorithm is more complex that just testing reachability
            of a remote

            endpoint and the goal is to minimize generated traffic, probing time
            and false negatives

            (that would trigger undesired re-connect).

            EVE will periodically check the modem status, accessibility of DNS
            server(s) and potentially

            also proxies in the local network, and only as the last resort (if
            connectivity state

            is still unclear) it will probe the remote endpoint. If custom_probe
            is not defined,

            EVE will try to ping "8.8.8.8" (Google public DNS).

            It is recommended to use custom probe for private LTE networks where
            public DNS servers

            might not be allowed by the firewall (and hence ping would fail even
            with a working

            connectivity).
          allOf:
            - $ref: '#/components/schemas/commonConnectivityProbe'
      description: >-
        CellularConnectivityProbe is used to periodically check the connectivity
        status of a cellular network

        by probing a remote endpoint.

        Whenever the probe fails, the cellular connection is automatically
        restarted. If the probe keeps failing

        even after the restart, the failure is reported in
        ZCellularStatus.probeError.

        The connectivity probing interval is 5 minutes and currently it is not
        configurable.
    NetCellularAccessPoint:
      type: object
      properties:
        simSlot:
          type: integer
          format: int64
          description: |-
            SIM card slot to which this configuration applies.
            0 - unspecified (apply to currently activated or the only available)
            1 - config for SIM card in the first slot
            2 - config for SIM card in the second slot
            etc.
        apn:
          type: string
          description: |-
            Access Point Network to connect into.
            By default it is "internet".
        authProtocol:
          description: Authentication protocol used by the network.
          allOf:
            - $ref: '#/components/schemas/evecommonCellularAuthProtocol'
        cipherData:
          description: |-
            Cipher data may contain encrypted user credentials
            (inside cellNetUsername and cellNetPassword fields).
          allOf:
            - $ref: '#/components/schemas/commonCipherBlock'
        preferredPlmns:
          type: array
          items:
            type: string
          description: >-
            The set of cellular network operators that modem should preferably
            try to register

            and connect into.

            Network operator should be referenced by PLMN (Public Land Mobile
            Network) code,

            consisting of 3-digits MCC (Mobile Country Code) and 2 or 3-digits
            MNC (Mobile Network Code),

            separated by a dash, e.g. "310-260".

            If empty, then modem will select the network automatically based on
            the SIM card config.
        forbidRoaming:
          type: boolean
          description: If true, then modem will avoid connecting to networks with roaming.
        preferredRats:
          type: array
          items:
            $ref: '#/components/schemas/evecommonRadioAccessTechnology'
          description: >-
            The list of preferred Radio Access Technologies (RATs) to use for
            connecting

            to the network.

            Order matters, first is the most preferred, second is tried next,
            etc.

            Not listed technologies will not be tried.

            If empty, then modem will select RAT automatically.
        ipType:
          description: The IP addressing type to use for the default bearer.
          allOf:
            - $ref: '#/components/schemas/commonCellularIPType'
        attachApn:
          type: string
          description: >-
            Access Point Name (APN) for the attach (initial) bearer.

            This field is optional. If not specified, EVE will not send any
            attach bearer

            configuration to the modem. Instead, the modem will use one of its
            pre-installed

            profiles (see CellularProfile) to determine the configuration.
        attachIpType:
          description: |-
            The IP addressing type to use for the attach bearer.
            Leave undefined if attach_apn is not specified.
          allOf:
            - $ref: '#/components/schemas/commonCellularIPType'
        attachAuthProtocol:
          description: |-
            Authentication protocol used for the attach bearer.
            Leave undefined if attach_apn is not specified.
          allOf:
            - $ref: '#/components/schemas/CellularAuthProtocol'
        secrets:
          $ref: '#/components/schemas/NetCellularAccessPointSecrets'
        encryptedSecrets:
          type: object
          additionalProperties:
            type: string
        cryptoKey:
          type: string
        attachSecrets:
          $ref: '#/components/schemas/NetCellularAccessPointSecrets'
        attachEncryptedSecrets:
          type: object
          additionalProperties:
            type: string
    NetworkWiFiKeyScheme:
      type: string
      enum:
        - NETWORK_WIFIKEY_SCHEME_UNSPECIFIED
        - NETWORK_WIFIKEY_SCHEME_WPAPSK
        - NETWORK_WIFIKEY_SCHEME_WPAEAP
      default: NETWORK_WIFIKEY_SCHEME_UNSPECIFIED
    NetWifiConfigSecrets:
      type: object
      properties:
        WiFiPasswd:
          type: string
          description: Wifi Password
    NetWifiConfigNetcryptoblock:
      type: object
      properties:
        identity:
          type: string
        password:
          type: string
    commonConnectivityProbeMethod:
      type: string
      enum:
        - CONNECTIVITY_PROBE_METHOD_UNSPECIFIED
        - CONNECTIVITY_PROBE_METHOD_ICMP
        - CONNECTIVITY_PROBE_METHOD_TCP
      default: CONNECTIVITY_PROBE_METHOD_UNSPECIFIED
      description: |-
        User-defined method to use to determine the connectivity status.

         - CONNECTIVITY_PROBE_METHOD_UNSPECIFIED: Connectivity probing method is not specified and therefore will not be used.
         - CONNECTIVITY_PROBE_METHOD_ICMP: Use ICMP ping against the probed endpoint to determine the connectivity status.
         - CONNECTIVITY_PROBE_METHOD_TCP: Try to establish TCP connection with the probed endpoint to determine the connectivity
        status.
    commonProbeEndpoint:
      type: object
      properties:
        host:
          type: string
          description: IP address or FQDN.
        port:
          type: integer
          format: int64
          description: |-
            TCP port required for CONNECTIVITY_PROBE_METHOD_TCP.
            Leave empty for CONNECTIVITY_PROBE_METHOD_ICMP.
      description: >-
        Address of a remote endpoint to probe in order to determine connectivity
        status.
    Author:
      type: object
      properties:
        user:
          type: string
          description: >-
            UI map: AppEditPage:DeveloperPane:Name_Field,
            AppDetailsPage:DeveloperPane:Name_Field
          title: Name of the developer
        group:
          type: string
          title: Not used by ZedUI
        company:
          type: string
          description: >-
            UI map: AppEditPage:IdentityPane:Category_Field,
            AppDetailsPage:IdentityPane:Category_Field
          title: Company of the developer
        website:
          type: string
          description: >-
            UI map: AppEditPage:DeveloperPane:Website_Field,
            AppDetailsPage:DeveloperPane:Website_Field
          title: Website of the developer company
        email:
          type: string
          description: >-
            UI map: AppEditPage:DeveloperPane:Email_Field,
            AppDetailsPage:DeveloperPane:Email_Field
          title: Contact email of the developer company
    Details:
      type: object
      example:
        appCategory: APP_CATEGORY_CLOUD_APPLICATION
        os: Linux
      properties:
        category:
          type: string
          default: All
          description: >-
            UI map: AppMarketplacePage:AppCard:DescriptionField,
            AppEditPage:IdentityPane:CategoryField,
            AppDetailsPage:IdentityPane:CategoryField
          title: Type of the Edge application
        os:
          type: string
          title: Edge application's Operating System
        appCategory:
          title: Edge application category
          allOf:
            - type: string
              enum:
                - APP_CATEGORY_UNSPECIFIED
                - APP_CATEGORY_OPERATING_SYSTEM
                - APP_CATEGORY_INDUSTRIAL
                - APP_CATEGORY_EDGE_APPLICATION
                - APP_CATEGORY_NETWORKING
                - APP_CATEGORY_SECURITY
                - APP_CATEGORY_DATA_ANALYTICS
                - APP_CATEGORY_CLOUD_APPLICATION
                - APP_CATEGORY_DEVOPS
                - APP_CATEGORY_OTHERS
              description: |-
                - APP_CATEGORY_UNSPECIFIED: Invalid Edge Application Category
                 - APP_CATEGORY_OPERATING_SYSTEM: Edge operating systems
                 - APP_CATEGORY_INDUSTRIAL: Connectity solution for industrial protocols
                 - APP_CATEGORY_EDGE_APPLICATION: Edge application framework featuring composite functions for data ingestion, buffering, analytics and export
                 - APP_CATEGORY_NETWORKING: Edge networking services (e.g. SD-WAN, NFV)
                 - APP_CATEGORY_SECURITY: Edge security services (e.g. protocol inspection, firewall)
                 - APP_CATEGORY_DATA_ANALYTICS: Edge analytics (e.g. AI/ML) and data management (e.g. database, connectors) services
                 - APP_CATEGORY_CLOUD_APPLICATION: Edge application runtimes, cloud connectivity and general application enablement
                 - APP_CATEGORY_DEVOPS: Tools for Edge Application CI/CD and performance optimization
                 - APP_CATEGORY_OTHERS: Miscellaneous functionality
              title: Edge Application Category
          x-zededa-source-issues:
            - code: conflicting-reference
              pointer: '#/definitions/Details/properties/appCategory'
              keyword: default
              sourceValue: APP_CATEGORY_OTHERS
              reference: '#/definitions/AppCategory'
              referencedValue: APP_CATEGORY_UNSPECIFIED
          description: >-
            - APP_CATEGORY_UNSPECIFIED: Invalid Edge Application Category
             - APP_CATEGORY_OPERATING_SYSTEM: Edge operating systems
             - APP_CATEGORY_INDUSTRIAL: Connectity solution for industrial protocols
             - APP_CATEGORY_EDGE_APPLICATION: Edge application framework featuring composite functions for data ingestion, buffering, analytics and export
             - APP_CATEGORY_NETWORKING: Edge networking services (e.g. SD-WAN, NFV)
             - APP_CATEGORY_SECURITY: Edge security services (e.g. protocol inspection, firewall)
             - APP_CATEGORY_DATA_ANALYTICS: Edge analytics (e.g. AI/ML) and data management (e.g. database, connectors) services
             - APP_CATEGORY_CLOUD_APPLICATION: Edge application runtimes, cloud connectivity and general application enablement
             - APP_CATEGORY_DEVOPS: Tools for Edge Application CI/CD and performance optimization
             - APP_CATEGORY_OTHERS: Miscellaneous functionality

            **Source definition conflict:** this property declares default
            `"APP_CATEGORY_OTHERS"`, but the referenced definition declares
            `"APP_CATEGORY_UNSPECIFIED"`. No default is documented here pending
            correction in ZEDEDA's Swagger definition.
        logo:
          type: object
          additionalProperties:
            type: string
          description: >-
            UI map: AppEditPage:IdentityPane:Logo,
            AppDetailsPage:IdentityPane:Logo
          title: App Logo
        screenshotList:
          type: object
          additionalProperties:
            type: string
          description: >-
            UI map: AppEditPage:IdentityPane:Screenshot_Fields,
            AppDetailsPage:IdentityPane:Screenshot_Fields
          title: App Screenshots
        licenseList:
          type: object
          additionalProperties:
            type: string
          description: >-
            UI map: AppMarketplacePage:AppCard:License,
            AppEditPage:IdentityPane:License,
            AppDetailsPage:IdentityPane:License
          title: App Licenses
        support:
          type: string
          description: >-
            UI map: AppEditPage:DeveloperPane:Support_Description_Field,
            AppDetailsPage:DeveloperPane:Support_Description_Field
          title: Support Description
        agreementList:
          type: object
          additionalProperties:
            type: string
          description: >-
            UI map: AppEditPage:DeveloperPane:Developer_Agreement_Field,
            AppDetailsPage:DeveloperPane:Developer_Agreement_Field
          title: Developer Agreements
      description: Edge Application Artifact Details
      title: Edge Application detail
      required:
        - appCategory
    VMManifestImage:
      type: object
      properties:
        imagename:
          type: string
          description: >-
            UI map: AppEditPage:DrivesPane:Image_Name_Field,
            AppDetailsPage:DrivesPane:Image_Name_Field
        imageid:
          type: string
          description: >-
            UI map: AppEditPage:DrivesPane:Image_ID_Field,
            AppDetailsPage:DrivesPane:Image_ID_Field
        imageformat:
          description: >-
            UI map: AppEditPage:DrivesPane:Image_Format_Field,
            AppDetailsPage:DrivesPane:Image_Format_Field
          allOf:
            - $ref: '#/components/schemas/configFormat'
        maxsize:
          type: string
          format: uint64
          description: >-
            UI map: AppEditPage:DrivesPane:Max_Size_Field,
            AppDetailsPage:DrivesPane:Max_Size_Field
        preserve:
          type: boolean
          description: >-
            UI map: AppEditPage:DrivesPane:Preserve_Field,
            AppDetailsPage:DrivesPane:Preserve_Field
        target:
          type: string
          description: >-
            UI map: AppEditPage:DrivesPane:Target_Field,
            AppDetailsPage:DrivesPane:Target_Field
          title: 'enum: Disk, Kernel, Initrd, RamDisk'
        drvtype:
          type: string
          description: >-
            UI map: AppEditPage:DrivesPane:Drive_Type_Field,
            AppDetailsPage:DrivesPane:Drive_Type_Field
          title: 'enum: CDROM, HDD, NET'
        params:
          type: array
          items:
            $ref: '#/components/schemas/Param'
          title: Not used by ZedUI
        readonly:
          type: boolean
          title: Not used by ZedUI
        volumelabel:
          type: string
          description: >-
            UI map: AppEditPage:DrivesPane:Volume_Label,
            AppDetailsPage:DrivesPane:Volume_Label
        ignorepurge:
          type: boolean
          description: >-
            UI map: AppEditPage:DrivesPane:Ignorepurge,
            AppDetailsPage:DrivesPane:Ignorepurgee_Field
        cleartext:
          type: boolean
          description: >-
            UI map: AppEditPage:DrivesPane:Cleartext,
            AppDetailsPage:DrivesPane:ClearText_Field
        mountpath:
          type: string
          description: >-
            UI map: AppEditPage:DrivesPane:Mountpath,
            AppDetailsPage:DrivesPane:Mountpath_Field
        imagestatus:
          type: string
          description: >-
            UI map: AppEditPage:DrivesPane:Image_Status_Field,
            AppDetailsPage:DrivesPane:Image_Status_Field
          title: >-
            enum: UNSPECIFIED, CREATED, PENDING, UPLOADING, READY, INUSE,
            ARCHIVED, MAX, FAILED, UPLINKING
        datastore:
          type: array
          items:
            $ref: '#/components/schemas/ImageDatastore'
          description: >-
            UI map: AppEditPage:DrivesPane:DataStore_Field,
            AppDetailsPage:DrivesPane:DataStore_Field
    Interface:
      type: object
      properties:
        name:
          type: string
          description: Interface name used by the edge application
        type:
          type: string
          description: >-
            Physical Adapter type for this interface. Applicable only when
            "direct attach" flag is true.
        optional:
          type: boolean
          description: Indicates if the interface is optional for edge application.
        directattach:
          type: boolean
          description: >-
            If true, a physical adapter is assigned to the edge application
            directly. If false, a network instance is assigned to the edge
            application.
        privateip:
          type: boolean
          description: >-
            If true, DHCP network can't be assigned and user needs to provide a
            static IP address.
        acls:
          type: array
          items:
            $ref: '#/components/schemas/Acl'
          description: >-
            Traffic access control rules for this interface. Applicable only
            when "direct attach" flag is false.
    Permission:
      type: object
    Resource:
      type: object
      properties:
        name:
          type: string
          description: Name of the Resource (Required)
        value:
          type: string
          description: Value of Resource (Required)
    UserDataTemplate:
      type: object
      properties:
        customConfig:
          $ref: '#/components/schemas/CustomConfig'
    ContainerDetail:
      type: object
      properties:
        containerCreateOption:
          type: string
          description: Create options direct the creation of the Docker container
          title: Base64 encoded container specific details
      description: common container detail.
    ModuleDetail:
      type: object
      example:
        twinDetail: >-
          IHsKICAgICAgIm5hbWUiOiAiU2VuZEludGVydmFsIiwKICAgICAgInZhbHVlIjogIjUiCiAgICB9
      properties:
        twinDetail:
          type: string
          description: >-
            Base64 encoded module twin details, desired properties of the module
            will be updated to reflect these values
        routes:
          type: object
          additionalProperties:
            type: string
          description: >-
            Send messages between modules or send messages from modules to iot
            hub
        environment:
          type: object
          additionalProperties:
            type: string
          description: Extra information to module to make configuration easier
        moduleType:
          description: Type of modules
          allOf:
            - $ref: '#/components/schemas/ModuleType'
      description: Azure module specific details
      title: Module detail
    AppType:
      type: string
      enum:
        - APP_TYPE_UNSPECIFIED
        - APP_TYPE_VM
        - APP_TYPE_VM_RUNTIME
        - APP_TYPE_CONTAINER
        - APP_TYPE_MODULE
        - APP_TYPE_DOCKER_COMPOSE
      default: APP_TYPE_UNSPECIFIED
      description: type of app bundle.
    DeploymentType:
      type: string
      enum:
        - DEPLOYMENT_TYPE_UNSPECIFIED
        - DEPLOYMENT_TYPE_STAND_ALONE
        - DEPLOYMENT_TYPE_AZURE
        - DEPLOYMENT_TYPE_K3S
        - DEPLOYMENT_TYPE_AWS
        - DEPLOYMENT_TYPE_K3S_AZURE
        - DEPLOYMENT_TYPE_K3S_AWS
        - DEPLOYMENT_TYPE_VMWARE_VCE
        - DEPLOYMENT_TYPE_VMWARE_TKG_ATTACH
        - DEPLOYMENT_TYPE_DOCKER_RUNTIME
      default: DEPLOYMENT_TYPE_UNSPECIFIED
    DockerRuntimeVersion:
      type: string
      enum:
        - RuntimeVersion_Unknown
        - RuntimeVersion_V1
      default: RuntimeVersion_Unknown
    DockerRuntimeProtocolVersion:
      type: string
      enum:
        - RuntimeProtocolVersion_Unknown
        - RuntimeProtocolVersion_V1
      default: RuntimeProtocolVersion_Unknown
    phyAdapter:
      type: object
      properties:
        type:
          description: >-
            IoType specifies the type of the Input output of the device


            **Source definition conflict:** this property declares type
            `"object"`, while the referenced definition declares `"string"`. The
            referenced schema is shown; the conflicting declaration needs
            correction in ZEDEDA's Swagger definition.
          allOf:
            - $ref: '#/components/schemas/IoType'
          x-zededa-source-issues:
            - code: conflicting-reference
              pointer: '#/definitions/phyAdapter/properties/type'
              keyword: type
              sourceValue: object
              reference: '#/definitions/IoType'
              referencedValue: string
        name:
          type: string
          description: Physical Adapter name
        tags:
          type: object
          additionalProperties:
            type: string
          description: >-
            Tags are name/value pairs that enable you to categorize resources.
            Tag names are case insensitive with max_length 512 and min_length 3.
            Tag values are case sensitive with max_length 256 and min_length 3.
          maxLength: 32
          pattern: ^[^<%&?/\>]+$
      description: Physical Adapter
      title: Physical Adapter
    appACE:
      type: object
      properties:
        matches:
          type: array
          items:
            $ref: '#/components/schemas/appACEMatch'
          description: app ACE match
        actions:
          type: array
          items:
            $ref: '#/components/schemas/appACEAction'
          description: app ACE actions
        id:
          type: number
          format: int32
          description: app ACE id
        name:
          type: string
          description: >-
            User defined name of the app ACE, unique across the enterprise. Once
            object is created, name can’t be changed
          maxLength: 256
          minLength: 3
          pattern: '[a-zA-Z0-9][a-zA-Z0-9_.-]+'
          x-zededa-source-issues:
            - code: inapplicable-constraint
              pointer: '#/definitions/appACE/properties/name'
              keyword: uniqueItems
              sourceValue: true
      description: App ACE Configuration
      title: App ACE detaisn
      required:
        - matches
        - actions
        - id
        - name
    EIDRegister:
      type: object
      properties:
        AppCert:
          type: string
          format: byte
          description: app certificate
        AppPublicKey:
          type: string
          format: byte
          description: App public key
        AppPrivateKey:
          type: string
          format: byte
          description: App private key
        UUID:
          type: string
          description: UUID
        DisplayName:
          type: string
          description: Display name
        LispInstance:
          type: number
          format: int64
          description: Lisp Instance
        EID:
          type: string
          description: EID
        EIDHashLen:
          type: number
          format: int64
          description: EID hash length
        LispSignature:
          type: string
          description: Lisp Signature
        LispMapServers:
          type: array
          items:
            $ref: '#/components/schemas/LispServer'
          description: Lisp Map Server
          title: time CreateTime     time.Time
      description: EID Register
      title: EID Register detail
      required:
        - AppCert
        - AppPublicKey
        - AppPrivateKey
        - UUID
        - DisplayName
        - LispInstance
        - EID
        - EIDHashLen
        - LispSignature
        - LispMapServers
    AzureResourceAndServiceDetail:
      type: object
      properties:
        name:
          type: string
        createByDefault:
          type: boolean
        region:
          type: string
        SKU:
          $ref: '#/components/schemas/SKUDetail'
        subscriptionId:
          type: string
        resourceGroupName:
          type: string
    EnrollmentDetail:
      type: object
      properties:
        attachedIotHubsName:
          type: array
          items:
            type: string
        enableIotEdgeDevice:
          type: boolean
        mechanism:
          $ref: '#/components/schemas/EnrollmentMechanism'
        tags:
          type: object
          additionalProperties:
            type: string
        allocationPolicy:
          $ref: '#/components/schemas/AllocationPolicy'
        symmetricKeyEnrollment:
          $ref: '#/components/schemas/SymmetricKeyEnrollmentDetail'
        certificateEnrollment:
          $ref: '#/components/schemas/CertificateEnrollmentDetail'
        tpmEnrollment:
          $ref: '#/components/schemas/TPMEnrollmentDetail'
    evecommonCellularAuthProtocol:
      type: string
      enum:
        - CELLULAR_AUTH_PROTOCOL_NONE
        - CELLULAR_AUTH_PROTOCOL_PAP
        - CELLULAR_AUTH_PROTOCOL_CHAP
        - CELLULAR_AUTH_PROTOCOL_PAP_AND_CHAP
      default: CELLULAR_AUTH_PROTOCOL_NONE
      description: >-
        CellularAuthProtocol defines the authentication protocol used for
        cellular connection.

         - CELLULAR_AUTH_PROTOCOL_NONE: No authentication.
         - CELLULAR_AUTH_PROTOCOL_PAP: Password Authentication Protocol.
         - CELLULAR_AUTH_PROTOCOL_CHAP: Challenge-Handshake Authentication Protocol.
         - CELLULAR_AUTH_PROTOCOL_PAP_AND_CHAP: Both PAP and CHAP.
    commonCipherBlock:
      type: object
      properties:
        cipherContextId:
          type: string
          title: cipher context id
        initialValue:
          type: string
          format: byte
          title: Initial Value for Symmetric Key derivation
        cipherData:
          type: string
          format: byte
          title: encrypted sensitive data
        clearTextSha256:
          type: string
          format: byte
          title: sha256 of the plaintext sensitive data
      title: Encrypted sensitive data information
    evecommonRadioAccessTechnology:
      type: string
      enum:
        - RADIO_ACCESS_TECHNOLOGY_UNSPECIFIED
        - RADIO_ACCESS_TECHNOLOGY_GSM
        - RADIO_ACCESS_TECHNOLOGY_UMTS
        - RADIO_ACCESS_TECHNOLOGY_LTE
        - RADIO_ACCESS_TECHNOLOGY_5GNR
      default: RADIO_ACCESS_TECHNOLOGY_UNSPECIFIED
      description: |2-
         - RADIO_ACCESS_TECHNOLOGY_GSM: Global System for Mobile Communications (2G).
         - RADIO_ACCESS_TECHNOLOGY_UMTS: Universal Mobile Telecommunications System (3G).
         - RADIO_ACCESS_TECHNOLOGY_LTE: Long Term Evolution (4G).
         - RADIO_ACCESS_TECHNOLOGY_5GNR: 5G New Radio.
    commonCellularIPType:
      type: string
      enum:
        - CELLULAR_IP_TYPE_UNSPECIFIED
        - CELLULAR_IP_TYPE_IPV4
        - CELLULAR_IP_TYPE_IPV4_AND_IPV6
        - CELLULAR_IP_TYPE_IPV6
      default: CELLULAR_IP_TYPE_UNSPECIFIED
      description: >-
        The IP addressing type to use for a given attach or default bearer.

         - CELLULAR_IP_TYPE_UNSPECIFIED: IP type is not specified.
        When unspecified, EVE will not enforce an IP type in the bearer
        configuration.

        The modem will instead use its built-in profiles (see CellularProfile)
        to determine

        the appropriate IP type for the network.
         - CELLULAR_IP_TYPE_IPV4: IPv4 only.
         - CELLULAR_IP_TYPE_IPV4_AND_IPV6: IPv4 and IPv6.
         - CELLULAR_IP_TYPE_IPV6: IPv6 only.
    CellularAuthProtocol:
      type: string
      enum:
        - CELLULAR_AUTH_PROTOCOL_NONE
        - CELLULAR_AUTH_PROTOCOL_PAP
        - CELLULAR_AUTH_PROTOCOL_CHAP
        - CELLULAR_AUTH_PROTOCOL_PAP_AND_CHAP
      default: CELLULAR_AUTH_PROTOCOL_NONE
      description: |2-
         - CELLULAR_AUTH_PROTOCOL_NONE: No authentication.
         - CELLULAR_AUTH_PROTOCOL_PAP: Password Authentication Protocol.
         - CELLULAR_AUTH_PROTOCOL_CHAP: Challenge-Handshake Authentication Protocol.
         - CELLULAR_AUTH_PROTOCOL_PAP_AND_CHAP: Both PAP and CHAP.
    NetCellularAccessPointSecrets:
      type: object
      properties:
        username:
          type: string
          description: Cellular Username
        password:
          type: string
          description: Cellular Password
    configFormat:
      type: string
      enum:
        - FmtUnknown
        - RAW
        - QCOW
        - QCOW2
        - VHD
        - VMDK
        - OVA
        - VHDX
        - CONTAINER
        - ISO
        - PVC
      default: FmtUnknown
    Param:
      type: object
      properties:
        name:
          type: string
          description: Name of the Parameter (Required)
        value:
          type: string
          description: Value of the parameter (Required)
    ImageDatastore:
      type: object
      properties:
        id:
          type: string
          description: Datastore ID
        name:
          type: string
          description: Datastore Name
    Acl:
      type: object
      properties:
        matches:
          type: array
          items:
            $ref: '#/components/schemas/Match'
          description: >-
            Network traffic matching criteria consistngs of one or more of
            source IP address, destination IP address, protocol, source port and
            destination port
        actions:
          type: array
          items:
            $ref: '#/components/schemas/AclAction'
          description: Chain of actions to be taken on matching network traffic
        name:
          type: string
          description: Name of the Access Control List
    CustomConfig:
      type: object
      properties:
        name:
          type: string
          description: Name of CustomConfig (Required)
        add:
          type: boolean
          description: 'Add the Custom Config to App Instance (Optional. Default: False)'
        override:
          type: boolean
          description: >-
            Override existing custom config from App Bundle Manifest (Optional.
            Default: False)
        allowStorageResize:
          type: boolean
          description: >-
            Allow Appinstance storage to be resized after app instance is
            created. (Optional. Default: False)
        fieldDelimiter:
          type: string
          description: Field delimiter used in specifying variables in template. (Required)
        template:
          type: string
          description: base64 encrypted template string. (Optional)
        variableGroups:
          type: array
          items:
            $ref: '#/components/schemas/CustomConfigVariableGroup'
          description: List of Variable groups. (Required)
    ModuleType:
      type: string
      enum:
        - MODULE_TYPE_UNSPECIFIED
        - MODULE_TYPE_SYSTEM_DEFINED
        - MODULE_TYPE_CUSTOM
        - MODULE_TYPE_AZURE_EDGE_AGENT
        - MODULE_TYPE_AZURE_EDGE_HUB
      default: MODULE_TYPE_UNSPECIFIED
      description: module type.
    IoType:
      type: string
      enum:
        - IO_TYPE_UNSPECIFIED
        - IO_TYPE_ETH
        - IO_TYPE_USB
        - IO_TYPE_COM
        - IO_TYPE_AUDIO
        - IO_TYPE_WLAN
        - IO_TYPE_WWAN
        - IO_TYPE_HDMI
        - IO_TYPE_LTE
        - IO_TYPE_STORAGE_NVME_DEVICE
        - IO_TYPE_STORAGE_SATA_DEVICE
        - IO_TYPE_ETH_PF
        - IO_TYPE_ETH_VF
        - IO_TYPE_USB_CONTROLLER
        - IO_TYPE_USB_DEVICE
        - IO_TYPE_CAN
        - IO_TYPE_VCAN
        - IO_TYPE_LCAN
        - IO_TYPE_VLAN
        - IO_TYPE_OTHER
      default: IO_TYPE_UNSPECIFIED
      description: |-
        - IO_TYPE_UNSPECIFIED: No operation/ Invalid peration
         - IO_TYPE_ETH: Ethernet
         - IO_TYPE_USB: USB Type - General
         - IO_TYPE_COM: Communication Port
         - IO_TYPE_AUDIO: Audio Port
         - IO_TYPE_WLAN: wireless LAN
         - IO_TYPE_WWAN: Wireless wide area network
         - IO_TYPE_HDMI: High-Definition Multimedia Interface
         - IO_TYPE_LTE: LTE Interfaces
         - IO_TYPE_STORAGE_NVME_DEVICE: Storage NVME device
         - IO_TYPE_STORAGE_SATA_DEVICE: Storage SATA device
         - IO_TYPE_ETH_PF: Physical Interface (PF) of the Virtual Functions
         - IO_TYPE_ETH_VF: Virtual Function (VF)
         - IO_TYPE_USB_CONTROLLER: USB Type - Controller
         - IO_TYPE_USB_DEVICE: USB Type - Device
         - IO_TYPE_CAN: CAN - Device
         - IO_TYPE_VCAN: VCAN - Virtual CAN device
         - IO_TYPE_LCAN: LCAN - Logical CAN device
         - IO_TYPE_VLAN: VLAN - Virtual LAN device
         - IO_TYPE_OTHER: Other Io Types
      title: Input/Output Type
    appACEMatch:
      type: object
      properties:
        type:
          type: string
          description: Type
        value:
          type: string
          description: Value
      description: App ACE Match
      title: appACEMatch detail
      required:
        - type
        - value
    appACEAction:
      type: object
      properties:
        drop:
          type: boolean
          description: ACE drop flag
        limit:
          type: boolean
          description: ACE limit flag
        limitrate:
          type: number
          format: int64
          description: ACE limit rate
        limitunit:
          type: string
          description: ACE limit unit
        limitburst:
          type: number
          format: int64
          description: ACE limit burst
        portmap:
          type: boolean
          description: application port map flag
        mapparams:
          description: Application map params
          allOf:
            - $ref: '#/components/schemas/appMapParams'
      description: App ACE actions
      title: App ACE Action
      required:
        - drop
        - limit
        - limitrate
        - limitunit
        - limitburst
        - portmap
        - mapparams
    SKUDetail:
      type: object
      properties:
        name:
          type: string
        tier:
          type: string
        capacity:
          type: string
    EnrollmentMechanism:
      type: string
      enum:
        - ENROLLMENT_MECHANISM_UNSPECIFIED
        - ENROLLMENT_MECHANISM_SYMMETRICKEY
        - ENROLLMENT_MECHANISM_CERTIFICATE
        - ENROLLMENT_MECHANISM_TPM
      default: ENROLLMENT_MECHANISM_UNSPECIFIED
      description: attestation/mechanism supported by azure.
    AllocationPolicy:
      type: string
      enum:
        - ALLOCATION_POLICY_UNSPECIFIED
        - ALLOCATION_POLICY_HASHED
        - ALLOCATION_POLICY_GEOLATENCY
        - ALLOCATION_POLICY_STATIC
        - ALLOCATION_POLICY_CUSTOM
      default: ALLOCATION_POLICY_UNSPECIFIED
      description: Iot hub allocation policy.
    SymmetricKeyEnrollmentDetail:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/EnrollmentType'
        individualSymmetricKeyEnrollment:
          $ref: '#/components/schemas/IndividualSymmetricKeyEnrollment'
        groupSymmetricKeyEnrollment:
          $ref: '#/components/schemas/GroupSymmetricKeyEnrollment'
    CertificateEnrollmentDetail:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/EnrollmentType'
        individualCertificateEnrollment:
          $ref: '#/components/schemas/IndividualCertificateEnrollment'
        groupCertificateEnrollment:
          $ref: '#/components/schemas/GroupCertificateEnrollment'
    TPMEnrollmentDetail:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/EnrollmentType'
    Match:
      type: object
      properties:
        type:
          type: string
          description: Type of Match (Required)
          title: |-
            enum: host, protocol, adapter
            At the device level it will pick right interface to apply this match
        value:
          type: string
          description: Value of match (Required)
    AclAction:
      type: object
      properties:
        drop:
          type: boolean
          description: Drop the packet
          title: Not used by ZedUI
        limit:
          type: boolean
          description: >-
            UI map: AppDetailsPage:EnvironmentsPane,
            AppDetailsPage:EnvironmentsPane
          title: Limit action on ACL rule
        limitValue:
          description: Value to be used for limit action (Required if limit is true)
          title: |-
            only valid if limit flag is set, see below.
            Not used by ZedUI
          allOf:
            - $ref: '#/components/schemas/LimitParams'
        limitrate:
          type: integer
          format: int64
          description: >-
            UI map: AppDetailsPage:EnvironmentsPane,
            AppDetailsPage:EnvironmentsPane
          title: Rate limit in ACL rule
        limitunit:
          type: string
          description: >-
            UI map: AppDetailsPage:EnvironmentsPane,
            AppDetailsPage:EnvironmentsPane
          title: Rate limit unit in ACL rule
        limitburst:
          type: integer
          format: int64
          description: >-
            UI map: AppDetailsPage:EnvironmentsPane,
            AppDetailsPage:EnvironmentsPane
          title: Rate limit burst in ACL rule
        portmap:
          type: boolean
          description: >-
            UI map: AppDetailsPage:EnvironmentsPane,
            AppDetailsPage:EnvironmentsPane
          title: >-
            Enable device to app port mapping for incoming ACL rule, implicitly
            added by ZedUI code
        portmapto:
          description: >-
            UI map: AppDetailsPage:EnvironmentsPane,
            AppDetailsPage:EnvironmentsPane
          title: Device to app port mapping for incoming ACL rule
          allOf:
            - $ref: '#/components/schemas/MapParams'
    CustomConfigVariableGroup:
      type: object
      properties:
        name:
          type: string
          description: Name of the Variable Group(Required)
        variables:
          type: array
          items:
            $ref: '#/components/schemas/VariableGroupVariable'
          description: List of variables(Required)
        required:
          type: boolean
          description: >-
            Indicates if the variable group is required to be specified for the
            App Instance. (Optional. Default:False)
        condition:
          description: 'Condition to apply the variable group. (Optional. Default: None)'
          allOf:
            - $ref: '#/components/schemas/VariableGroupCondition'
    appMapParams:
      type: object
      properties:
        port:
          type: number
          format: int64
          description: Application port
      description: Application map parameters
      title: App map Params detail
      required:
        - port
    EnrollmentType:
      type: string
      enum:
        - ENROLLMENT_TYPE_UNSPECIFIED
        - ENROLLMENT_TYPE_INDIVIDUAL
        - ENROLLMENT_TYPE_GROUP
      default: ENROLLMENT_TYPE_UNSPECIFIED
      description: enrollment types.
    IndividualSymmetricKeyEnrollment:
      type: object
      properties:
        registrationId:
          type: string
    GroupSymmetricKeyEnrollment:
      type: object
      properties:
        groupName:
          type: string
    IndividualCertificateEnrollment:
      type: object
      title: XXX TODO
    GroupCertificateEnrollment:
      type: object
      properties:
        groupName:
          type: string
    LimitParams:
      type: object
      properties:
        limitrate:
          type: integer
          format: int64
          description: >-
            UI map: AppDetailsPage:EnvironmentsPane,
            AppDetailsPage:EnvironmentsPane
          title: Rate limit in ACL rule
        limitunit:
          type: string
          description: >-
            UI map: AppDetailsPage:EnvironmentsPane,
            AppDetailsPage:EnvironmentsPane
          title: Rate limit unit in ACL rule
        limitburst:
          type: integer
          format: int64
          description: >-
            UI map: AppDetailsPage:EnvironmentsPane,
            AppDetailsPage:EnvironmentsPane
          title: Rate limit burst in ACL rule
    MapParams:
      type: object
      properties:
        appPort:
          type: integer
          format: int64
          description: Application Port value
    VariableGroupVariable:
      type: object
      example:
        format: VARIABLE_FORMAT_TEXT
        name: username
        label: Enter User Name
        required: 'True'
      properties:
        type:
          type: string
        name:
          type: string
          description: Name of the Variable (Required)
        label:
          type: string
          description: Label for the variable (Required)
        maxLength:
          type: string
          description: 'Max length of the value of the variable(Optional. Default: 1024)'
        required:
          type: boolean
          description: >-
            This variable MUST be specified when creating an App Instance.
            (Optional. Default: False)
        default:
          type: string
          description: >-
            Default value of the variable. (Optional. Default: <Default value
            based on type>)
        processInput:
          type: string
        value:
          type: string
          description: >-
            User-specified value of the variable.(Required if required is true.
            Optional otherwise)
        format:
          description: Format of the user variable. (Required)
          allOf:
            - $ref: '#/components/schemas/VariableVariableFormat'
        encode:
          description: >-
            Encoding of file content. Applicable if format is
            VARIABLE_FORMAT_FILE
          allOf:
            - $ref: '#/components/schemas/VariableFileEncoding'
        options:
          type: array
          items:
            $ref: '#/components/schemas/VariableOptionVal'
          description: >-
            Key-Value pair of options. Applicable if format is
            VARIABLE_FORMAT_DROPDOWN
      description: Edge Application Artifact Details
      title: Edge Application detail
      required:
        - format
        - name
        - label
        - required
    VariableGroupCondition:
      type: object
      properties:
        name:
          type: string
        value:
          type: string
        operator:
          $ref: '#/components/schemas/VariableGroupConditionOperator'
    VariableVariableFormat:
      type: string
      enum:
        - VARIABLE_FORMAT_UNSPECIFIED
        - VARIABLE_FORMAT_TEXT
        - VARIABLE_FORMAT_NUMBER
        - VARIABLE_FORMAT_FILE
        - VARIABLE_FORMAT_DROPDOWN
        - VARIABLE_FORMAT_BOOLEAN
        - VARIABLE_FORMAT_PASSWORD
      default: VARIABLE_FORMAT_UNSPECIFIED
      description: |-
        - VARIABLE_FORMAT_UNSPECIFIED: Invalid format
         - VARIABLE_FORMAT_TEXT: Value in string format
         - VARIABLE_FORMAT_NUMBER: Value in integer format
         - VARIABLE_FORMAT_FILE: Value to be read from a file
         - VARIABLE_FORMAT_DROPDOWN: Value to be selected from dropdown of options
         - VARIABLE_FORMAT_BOOLEAN: Value in boolean format
         - VARIABLE_FORMAT_PASSWORD: Value in string to be masked in User-Agent
      title: Custom variable format
    VariableFileEncoding:
      type: string
      enum:
        - FILE_ENCODING_UNSPECIFIED
        - FILE_ENCODING_BASE64
      default: FILE_ENCODING_UNSPECIFIED
      description: |-
        - FILE_ENCODING_UNSPECIFIED: File content not encoded
         - FILE_ENCODING_BASE64: File content encoded in Base64
      title: File content encoding type
    VariableOptionVal:
      type: object
      properties:
        label:
          type: string
          description: Display label of the key in User-Agent
        value:
          type: string
          description: Value of the key to be used
    VariableGroupConditionOperator:
      type: string
      enum:
        - CONDITION_OPERATOR_UNSPECIFIED
        - CONDITION_OPERATOR_EQUALTO
        - CONDITION_OPERATOR_NOTEQUALTO
      default: CONDITION_OPERATOR_UNSPECIFIED
  securitySchemes:
    BearerToken:
      type: http
      description: Bearer token for user session
      scheme: bearer

````