#  ============LICENSE_START=======================================================
#  Modification (C) 2021 Nordix Foundation
#  Modification (C) 2021 Pantheon.tech
#  ================================================================================
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#        http://www.apache.org/licenses/LICENSE-2.0
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#
#  SPDX-License-Identifier: Apache-2.0
#  ============LICENSE_END=========================================================

nodeByCmHandleAndXpath:
  get:
    description: Get a node with an option to retrieve all the children for a given cm Handle
    tags:
      - network-cm-proxy
    summary: Get a node given a cm Handle and xpath
    operationId: getNodeByCmHandleAndXpath
    parameters:
      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
      - $ref: 'components.yaml#/components/parameters/xpathInQuery'
      - $ref: 'components.yaml#/components/parameters/includeDescendantsOptionInQuery'
    responses:
      200:
        $ref: 'components.yaml#/components/responses/Ok'
      400:
        $ref: 'components.yaml#/components/responses/BadRequest'
      401:
        $ref: 'components.yaml#/components/responses/Unauthorized'
      403:
        $ref: 'components.yaml#/components/responses/Forbidden'
      404:
        $ref: 'components.yaml#/components/responses/NotFound'

nodesByCmHandleAndCpsPath:
  get:
    description: Query nodes for the given cps path and cm Handle
    tags:
      - network-cm-proxy
    summary: Query data nodes
    operationId: queryNodesByCmHandleAndCpsPath
    parameters:
      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
      - $ref: 'components.yaml#/components/parameters/cpsPathInQuery'
      - $ref: 'components.yaml#/components/parameters/includeDescendantsOptionInQuery'
    responses:
      200:
        $ref: 'components.yaml#/components/responses/Ok'
      400:
        $ref: 'components.yaml#/components/responses/BadRequest'
      401:
        $ref: 'components.yaml#/components/responses/Unauthorized'
      403:
        $ref: 'components.yaml#/components/responses/Forbidden'
      404:
        $ref: 'components.yaml#/components/responses/NotFound'

nodesByCmHandleAndXpath:
  post:
    description: Create a node with descendants for the given CM Handle; top level or under existing node (requires xpath)
    tags:
      - network-cm-proxy
    summary: Create a node with descendants
    operationId: createNode
    parameters:
      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
      - $ref: 'components.yaml#/components/parameters/xpathInQuery'
    requestBody:
      required: true
      content:
        application/json:
          schema:
            type: string
    responses:
      201:
        $ref: 'components.yaml#/components/responses/Created'
      400:
        $ref: 'components.yaml#/components/responses/BadRequest'
      401:
        $ref: 'components.yaml#/components/responses/Unauthorized'
      403:
        $ref: 'components.yaml#/components/responses/Forbidden'
      404:
        $ref: 'components.yaml#/components/responses/NotFound'

  patch:
    description: Update node leaves for the given cps path and cm Handle
    tags:
      - network-cm-proxy
    summary: Update node leaves
    operationId: updateNodeLeaves
    parameters:
      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
      - $ref: 'components.yaml#/components/parameters/xpathInQuery'
    requestBody:
      required: true
      content:
        application/json:
          schema:
            type: string
    responses:
      200:
        $ref: 'components.yaml#/components/responses/Ok'
      400:
        $ref: 'components.yaml#/components/responses/BadRequest'
      401:
        $ref: 'components.yaml#/components/responses/Unauthorized'
      403:
        $ref: 'components.yaml#/components/responses/Forbidden'
      404:
        $ref: 'components.yaml#/components/responses/NotFound'

  put:
    description: Replace a node with descendants for the given cps path and cm Handle
    tags:
      - network-cm-proxy
    summary: Replace a node with descendants
    operationId: replaceNode
    parameters:
      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
      - $ref: 'components.yaml#/components/parameters/xpathInQuery'
    requestBody:
      required: true
      content:
        application/json:
          schema:
            type: string
    responses:
      200:
        $ref: 'components.yaml#/components/responses/Ok'
      400:
        $ref: 'components.yaml#/components/responses/BadRequest'
      401:
        $ref: 'components.yaml#/components/responses/Unauthorized'
      403:
        $ref: 'components.yaml#/components/responses/Forbidden'
      404:
        $ref: 'components.yaml#/components/responses/NotFound'

listNodeByCmHandleAndXpath:
  post:
    description: Add one or more list-node child elements under existing node for the given CM Handle
    tags:
      - network-cm-proxy
    summary: Add list-node child element(s)
    operationId: addListNodeElements
    parameters:
      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
      - $ref: 'components.yaml#/components/parameters/requiredXpathInQuery'
    requestBody:
      required: true
      content:
        application/json:
          schema:
            type: string
    responses:
      201:
        $ref: 'components.yaml#/components/responses/Created'
      400:
        $ref: 'components.yaml#/components/responses/BadRequest'
      401:
        $ref: 'components.yaml#/components/responses/Unauthorized'
      403:
        $ref: 'components.yaml#/components/responses/Forbidden'
      404:
        $ref: 'components.yaml#/components/responses/NotFound'