#  ============LICENSE_START=======================================================
#  Copyright (C) 2021-2022 Nordix Foundation
#  Modifications Copyright (C) 2021 Pantheon.tech
#  Modifications Copyright (C) 2021 Bell Canada
#  ================================================================================
#  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=========================================================
getResourceDataForPassthroughOperational:
  get:
    tags:
      - network-cm-proxy
    summary: Get resource data from pass-through operational for cm handle
    description: Get resource data from pass-through operational for given cm handle
    operationId: getResourceDataOperationalForCmHandle
    parameters:
      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
      - $ref: 'components.yaml#/components/parameters/resourceIdentifierInQuery'
      - $ref: 'components.yaml#/components/parameters/acceptParamInHeader'
      - $ref: 'components.yaml#/components/parameters/optionsParamInQuery'
      - $ref: 'components.yaml#/components/parameters/topicParamInQuery'
    responses:
      200:
        description: OK
        content:
          application/json:
            schema:
              type: object
            examples:
              dataSampleResponse:
                $ref: 'components.yaml#/components/examples/dataSampleResponse'
      400:
        $ref: 'components.yaml#/components/responses/BadRequest'
      401:
        $ref: 'components.yaml#/components/responses/Unauthorized'
      403:
        $ref: 'components.yaml#/components/responses/Forbidden'
      500:
        $ref: 'components.yaml#/components/responses/InternalServerError'

resourceDataForPassthroughRunning:
  get:
    tags:
      - network-cm-proxy
    summary: Get resource data from pass-through running for cm handle
    description: Get resource data from pass-through running for given cm handle
    operationId: getResourceDataRunningForCmHandle
    parameters:
      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
      - $ref: 'components.yaml#/components/parameters/resourceIdentifierInQuery'
      - $ref: 'components.yaml#/components/parameters/acceptParamInHeader'
      - $ref: 'components.yaml#/components/parameters/optionsParamInQuery'
      - $ref: 'components.yaml#/components/parameters/topicParamInQuery'
    responses:
      200:
        description: OK
        content:
          application/json:
            schema:
              type: object
            examples:
              dataSampleResponse:
                $ref: 'components.yaml#/components/examples/dataSampleResponse'
      400:
        $ref: 'components.yaml#/components/responses/BadRequest'
      401:
        $ref: 'components.yaml#/components/responses/Unauthorized'
      403:
        $ref: 'components.yaml#/components/responses/Forbidden'
      500:
        $ref: 'components.yaml#/components/responses/InternalServerError'
  post:
    tags:
      - network-cm-proxy
    summary: create resource data from pass-through running for cm handle
    description: create resource data from pass-through running for given cm handle
    operationId: createResourceDataRunningForCmHandle
    parameters:
      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
      - $ref: 'components.yaml#/components/parameters/resourceIdentifierInQuery'
      - $ref: 'components.yaml#/components/parameters/contentParamInHeader'
    requestBody:
      required: true
      content:
        application/json:
          schema:
            type: object
          examples:
            dataSampleRequest:
              $ref: 'components.yaml#/components/examples/dataSampleRequest'
        application/yang-data+json:
          schema:
            type: object
          examples:
            dataSampleRequest:
              $ref: 'components.yaml#/components/examples/dataSampleRequest'
    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'
      500:
        $ref: 'components.yaml#/components/responses/InternalServerError'

  put:
    tags:
      - network-cm-proxy
    summary: Update resource data from pass-through running for a cm handle
    description: Update resource data from pass-through running for the given cm handle
    operationId: updateResourceDataRunningForCmHandle
    parameters:
      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
      - $ref: 'components.yaml#/components/parameters/resourceIdentifierInQuery'
      - $ref: 'components.yaml#/components/parameters/contentParamInHeader'
    requestBody:
      required: true
      content:
        application/json:
          schema:
            type: object
          examples:
            dataSampleRequest:
              $ref: 'components.yaml#/components/examples/dataSampleRequest'
        application/yang-data+json:
          schema:
            type: object
          examples:
            dataSampleRequest:
              $ref: 'components.yaml#/components/examples/dataSampleRequest'
    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'
      500:
        $ref: 'components.yaml#/components/responses/InternalServerError'

  patch:
    tags:
      - network-cm-proxy
    summary: Patch resource data from pass-through running
    description: Patch resource data from pass-through running for the given cm handle
    operationId: patchResourceDataRunningForCmHandle
    parameters:
      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
      - $ref: 'components.yaml#/components/parameters/resourceIdentifierInQuery'
      - $ref: 'components.yaml#/components/parameters/contentParamInHeader'
    requestBody:
      required: true
      content:
        '*/*':
          schema:
            type: object
          examples:
            dataSampleRequest:
              $ref: 'components.yaml#/components/examples/dataSamplePatchRequest'
    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'
      500:
        $ref: 'components.yaml#/components/responses/InternalServerError'

  delete:
    tags:
      - network-cm-proxy
    summary: Delete resource data
    description: Delete resource data from pass-through running for a given cm handle
    operationId: deleteResourceDataRunningForCmHandle
    parameters:
      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
      - $ref: 'components.yaml#/components/parameters/resourceIdentifierInQuery'
      - $ref: 'components.yaml#/components/parameters/contentParamInHeader'
    responses:
      204:
        $ref: 'components.yaml#/components/responses/NoContent'
      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'
      500:
        $ref: 'components.yaml#/components/responses/InternalServerError'

fetchModuleReferencesByCmHandle:
  get:
    description: fetch all module references (name and revision) for a given cm handle
    tags:
      - network-cm-proxy
    summary: Fetch all module references (name and revision) for a given cm handle
    operationId: getModuleReferencesByCmHandle
    parameters:
      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
    responses:
      200:
        description: OK
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: 'components.yaml#/components/schemas/RestModuleReference'
      400:
        $ref: 'components.yaml#/components/responses/BadRequest'
      401:
        $ref: 'components.yaml#/components/responses/Unauthorized'
      403:
        $ref: 'components.yaml#/components/responses/Forbidden'
      500:
        $ref: 'components.yaml#/components/responses/InternalServerError'

executeCmHandleSearch:
  post:
    description: Execute cm handle searches using 'hasAllModules' condition to get all cm handles for the given module names
    tags:
      - network-cm-proxy
    summary: Execute cm handle search using the available conditions
    operationId: executeCmHandleSearch
    requestBody:
      required: true
      content:
        application/json:
          schema:
            $ref: 'components.yaml#/components/schemas/Conditions'
    responses:
      200:
        description: OK
        content:
          application/json:
            schema:
              $ref: 'components.yaml#/components/schemas/CmHandles'
      400:
        $ref: 'components.yaml#/components/responses/BadRequest'
      401:
        $ref: 'components.yaml#/components/responses/Unauthorized'
      403:
        $ref: 'components.yaml#/components/responses/Forbidden'
      500:
        $ref: 'components.yaml#/components/responses/InternalServerError'

retrieveCmHandleDetailsById:
  get:
    description: Retrieve CM handle details and properties by cm handle id
    tags:
      - network-cm-proxy
    summary: Retrieve CM handle details
    operationId: retrieveCmHandleDetailsById
    parameters:
      - $ref: 'components.yaml#/components/parameters/cmHandleInPath'
    responses:
      200:
        description: OK
        content:
          application/json:
            schema:
              $ref: 'components.yaml#/components/schemas/RestOutputCmHandle'
      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'
      500:
        $ref: 'components.yaml#/components/responses/InternalServerError'