# ============LICENSE_START=======================================================
# 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=========================================================

components:
  schemas:

    AnchorDetails:
      type: object
      title: Anchor details by anchor Name
      properties:
        name:
          type: string
          example: my_anchor
        dataspaceName:
          type: string
          example: my_dataspace
        schemaSetName:
          type: string
          example: my_schema_set

    ErrorMessage:
      type: object
      title: Error
      properties:
        status:
          type: string
          example: 400
        message:
          type: string
          example: Dataspace not found
        details:
          type: string
          example: Dataspace with name D1 does not exist.

    MultipartFile:
      type: object
      required:
        - file
      properties:
        file:
          type: string
          description: multipartFile
          format: binary
          example: http://example.com/examples/example.yang

    ModuleReferences:
      type: object
      title: Module reference object
      properties:
        name:
          type: string
          example: module_reference_name
        namespace:
          type: string
          example: module_reference_namespace
        revision:
          type: string
          example: module_reference_revision

    SchemaSetDetails:
      type: object
      title: Schema set details by dataspace and schemasetName
      properties:
        dataspaceName:
          type: string
          example: my_dataspace
        moduleReferences:
          type: array
          items:
            $ref: '#/components/schemas/ModuleReferences'
        name:
          type: string
          example: my_schema_set

  parameters:
    dataspaceNameInQuery:
      name: dataspace-name
      in: query
      description: dataspace-name
      required: true
      schema:
        type: string
    dataspaceNameInPath:
      name: dataspace-name
      in: path
      description: dataspace-name
      required: true
      schema:
        type: string
    anchorNameInPath:
      name: anchor-name
      in: path
      description: anchor-name
      required: true
      schema:
        type: string
    schemaSetNameInQuery:
      name: schema-set-name
      in: query
      description: schema-set-name
      required: true
      schema:
        type: string
    schemaSetNameInPath:
      name: schema-set-name
      in: path
      description: schema-set-name
      required: true
      schema:
        type: string
    anchorNameInQuery:
      name: anchor-name
      in: query
      description: anchor-name
      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
    cpsPathInQuery:
      name: cps-path
      in: query
      description: cps-path
      required: false
      schema:
        type: string
        default: /
    includeDescendantsOptionInQuery:
      name: include-descendants
      in: query
      description: include-descendants
      required: false
      schema:
        type: boolean
        default: false
    observedTimestampInQuery:
      name: observed-timestamp
      in: query
      description: observed-timestamp
      required: false
      schema:
        type: string
        example: '2021-03-21T00:10:34.030-0100'

  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'
    Ok:
      description: OK
      content:
        application/json:
          schema:
            type: object
          example: { "key": "value" }
    Created:
      description: Created
      content:
        text/plain:
          schema:
            type: string
    NoContent:
      description: No Content
      content: {}
