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

components:
  schemas:
    # Common Schemas
    ErrorMessage:
      type: object
      title: Error
      properties:
        status:
          type: string
        message:
          type: string
        details:
          type: string

    # Request Schemas
    RestDmiPluginRegistration:
      type: object
      properties:
        dmiPlugin:
          type: string
          example: onap-dmi-plugin
        createdCmHandles:
          type: array
          items:
            $ref: '#/components/schemas/RestCmHandle'
        updatedCmHandles:
          type: array
          items:
            $ref: '#/components/schemas/RestCmHandle'
        removedCmHandles:
          type: array
          items:
            type: string

    RestCmHandle:
      required:
        - cmHandle
      type: object
      properties:
        cmHandle:
          type: string
          example: cmHandle123
        cmHandleProperties:
            $ref: '#/components/schemas/RestCmHandleAdditionalProperties'
    RestCmHandleAdditionalProperties:
        type: object
        additionalProperties:
            type: string
            example: system-001

    Conditions:
      type: object
      properties:
        conditions:
          $ref: '#/components/schemas/ConditionsData'
    ConditionsData:
      type: array
      items:
        type: object
        $ref: '#/components/schemas/ConditionProperties'
    ConditionProperties:
      properties:
        name:
          type: string
          example: hasAllModules
        conditionParameters:
          $ref: '#/components/schemas/ConditionParameters'
    ConditionParameters:
      type: array
      items:
        type: object
        $ref: '#/components/schemas/ConditionParameter'
    ConditionParameter:
        properties:
          moduleName:
            type: string
            example: someModuleName

    #Response Schemas
    CmHandles:
      type: object
      properties:
        cmHandles:
          $ref: '#/components/schemas/CmHandleProperties'
    CmHandleProperties:
      type: array
      items:
        type: object
        $ref: '#/components/schemas/CmHandleProperty'
    CmHandleProperty:
      properties:
        cmHandleId:
          type: string
          example: someCmHandleId

  parameters:
    cmHandleInPath:
      name: cm-handle
      in: path
      description: The identifier for a network function, network element, subnetwork or any other cm object by managed Network CM Proxy
      required: true
      schema:
        type: string
    xpathInQuery:
      name: xpath
      in: query
      description: xpath
      required: false
      schema:
        type: string
        default: /
    requiredXpathInQuery:
      name: xpath
      in: query
      description: xpath
      required: true
      schema:
        type: string
    includeDescendantsOptionInQuery:
      name: include-descendants
      in: query
      description: include-descendants
      required: false
      schema:
        type: boolean
        default: false
    cpsPathInQuery:
      name: cps-path
      in: query
      description: cps-path
      required: false
      schema:
        type: string
        default: /
    resourceIdentifierInQuery:
      name: resourceIdentifier
      in: query
      description: The format of resource identifier depend on the associated DMI Plugin implementation. For ONAP DMI Plugin it will be RESTConf paths but it can really be anything.
      required: true
      allowReserved: true
      schema:
        type: string
      examples:
        sample1:
          value:
            resourceIdentifier: \parent\child
        sample2:
          value:
            resourceIdentifier: \parent\listElement[key=value]
        sample3:
          value:
            resourceIdentifier: \parent\listElement[key=value]\grandChild
        sample4:
          value:
            resourceIdentifier: parent=1,child=abc
    acceptParamInHeader:
      name: Accept
      in: header
      required: false
      description: Accept parameter for response, if accept parameter is null, that means client can accept any format.
      schema:
        type: string
        enum: [ application/json, application/yang-data+json ]
    optionsParamInQuery:
      name: options
      in: query
      description: options parameter in query, it is mandatory to wrap key(s)=value(s) in parenthesis'()'.
      required: false
      schema:
        type: string
      allowReserved: true
      examples:
        sample1:
          value:
            options: (key1=value1,key2=value2)
        sample2:
          value:
            options: (key1=value1,key2=value1/value2)
        sample3:
          value:
            options: (key1=10,key2=value2,key3=[val31;val32])
    contentParamInHeader:
      name: Content-Type
      in: header
      required: false
      description: Content parameter for request, if content parameter is null, default value is application/json.
      schema:
        type: string
        default: application/json


  responses:
    NotFound:
      description: The specified resource was not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    BadRequest:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    Conflict:
      description: Conflict
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    NotImplemented:
      description: The given path has not been implemented
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    Ok:
      description: OK
      content:
        application/json:
          schema:
            type: object
    Created:
      description: Created
      content: {}
    NoContent:
      description: No Content
      content: {}
