#  ============LICENSE_START=======================================================
#  Copyright (C) 2021 Bell Canada
#  Modifications Copyright (C) 2022-2023 Nordix Foundation
#  ================================================================================
#  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.3
info:
  title: NCMP Inventory API
  description: NCMP Inventory API
  version: "1.0"
servers:
  - url: /ncmpInventory
components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
paths:
  /v1/ch:
    $ref: 'ncmp-inventory.yml#/updateDmiRegistration'

  /v1/ch/cmHandles:
    $ref: 'ncmp-inventory.yml#/getAllCmHandleIdsForRegisteredDmi'

  /v1/ch/searches:
    $ref: 'ncmp-inventory.yml#/searchCmHandleIds'

security:
  - basicAuth: []