#  ============LICENSE_START=======================================================
#  Copyright (C) 2021 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=========================================================

openapi: 3.0.1
info:
  title: NCMP to CPS Proxy API
  description: NCMP to CPS Proxy API
  version: "1.0"
servers:
  - url: /ncmp
paths:
  /v1/cm-handles/{cm-handle}/node:
    $ref: 'ncmp.yml#/nodeByCmHandleAndXpath'

  /v1/cm-handles/{cm-handle}/list-node:
    $ref: 'ncmp.yml#/listNodeByCmHandleAndXpath'

  /v1/cm-handles/{cm-handle}/nodes/query:
    $ref: 'ncmp.yml#/nodesByCmHandleAndCpsPath'

  /v1/cm-handles/{cm-handle}/nodes:
    $ref: 'ncmp.yml#/nodesByCmHandleAndXpath'

  /v1/ch/{cm-handle}/data/ds/ncmp-datastore:passthrough-operational:
    $ref: 'ncmp.yml#/getResourceDataForPassthroughOperational'

  /v1/ch/{cm-handle}/data/ds/ncmp-datastore:passthrough-running:
    $ref: 'ncmp.yml#/resourceDataForPassthroughRunning'

  /v1/ch/{cm-handle}/modules:
    $ref: 'ncmp.yml#/fetchModuleReferencesByCmHandle'

  /v1/ch/searches:
    $ref: 'ncmp.yml#/executeCmHandleSearch'