# ============LICENSE_START=======================================================
# Copyright (c) 2022-2023 TechMahindra Ltd.
# ================================================================================
# 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=========================================================

nodeByDataspaceAndAnchor:
  get:
    description: Get a node with an option to retrieve all the children for a given anchor and dataspace
    tags:
      - cps-data
    summary: Get a node
    operationId: getNodeByDataspaceAndAnchorV2
    parameters:
      - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
      - $ref: 'components.yml#/components/parameters/anchorNameInPath'
      - $ref: 'components.yml#/components/parameters/xpathInQuery'
      - $ref: 'components.yml#/components/parameters/descendantsInQuery'
    responses:
      '200':
        description: OK
        content:
          application/json:
            schema:
              type: object
            examples:
              dataSample:
                $ref: 'components.yml#/components/examples/dataSample'
      '400':
        $ref: 'components.yml#/components/responses/BadRequest'
      '401':
        $ref: 'components.yml#/components/responses/Unauthorized'
      '403':
        $ref: 'components.yml#/components/responses/Forbidden'
      '500':
        $ref: 'components.yml#/components/responses/InternalServerError'
    x-codegen-request-body-name: xpath

deltaByDataspaceAndAnchors:
  get:
    description: Get delta between two anchors within a given dataspace
    tags:
      - cps-data
    summary: Get delta between anchors in the same dataspace
    operationId: getDeltaByDataspaceAndAnchors
    parameters:
      - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
      - $ref: 'components.yml#/components/parameters/anchorNameInPath'
      - $ref: 'components.yml#/components/parameters/targetAnchorNameInQuery'
      - $ref: 'components.yml#/components/parameters/xpathInQuery'
      - $ref: 'components.yml#/components/parameters/descendantsInQuery'
    responses:
      '200':
        description: OK
        content:
          application/json:
            schema:
              type: object
            examples:
              dataSample:
                $ref: 'components.yml#/components/examples/deltaReportSample'
      '400':
        $ref: 'components.yml#/components/responses/BadRequest'
      '401':
        $ref: 'components.yml#/components/responses/Unauthorized'
      '403':
        $ref: 'components.yml#/components/responses/Forbidden'
      '500':
        $ref: 'components.yml#/components/responses/InternalServerError'
    x-codegen-request-body-name: xpath