# ============LICENSE_START=======================================================
# Copyright (c) 2021 Bell Canada.
# Modifications Copyright (C) 2021-2022 Nordix Foundation
# Modifications Copyright (C) 2022 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=========================================================

dataspaces:
  delete:
    description: Delete a dataspace
    tags:
      - cps-admin
    summary: Delete a dataspace
    operationId: deleteDataspace
    parameters:
      - $ref: 'components.yml#/components/parameters/apiVersionInPath'
      - $ref: 'components.yml#/components/parameters/dataspaceNameInQuery'
    responses:
      '204':
        $ref: 'components.yml#/components/responses/NoContent'
      '400':
        $ref: 'components.yml#/components/responses/BadRequest'
      '403':
        $ref: 'components.yml#/components/responses/Forbidden'
      '409':
        $ref: 'components.yml#/components/responses/Conflict'
      '500':
        $ref: 'components.yml#/components/responses/InternalServerError'

schemaSet:
  get:
    description: Read all schema sets, given a dataspace
    tags:
      - cps-admin
    summary: Get schema sets
    operationId: getSchemaSets
    parameters:
      - $ref: 'components.yml#/components/parameters/apiVersionInPath'
      - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
    responses:
      '200':
        description: OK
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: 'components.yml#/components/schemas/SchemaSetDetails'
      '400':
        $ref: 'components.yml#/components/responses/BadRequest'
      '403':
        $ref: 'components.yml#/components/responses/Forbidden'
      '500':
        $ref: 'components.yml#/components/responses/InternalServerError'

schemaSetBySchemaSetName:
  get:
    description: Read a schema set given a schema set name and a dataspace
    tags:
      - cps-admin
    summary: Get a schema set
    operationId: getSchemaSet
    parameters:
      - $ref: 'components.yml#/components/parameters/apiVersionInPath'
      - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
      - $ref: 'components.yml#/components/parameters/schemaSetNameInPath'
    responses:
      '200':
        description: OK
        content:
          application/json:
            schema:
              $ref: 'components.yml#/components/schemas/SchemaSetDetails'
      '400':
        $ref: 'components.yml#/components/responses/BadRequest'
      '403':
        $ref: 'components.yml#/components/responses/Forbidden'
      '500':
        $ref: 'components.yml#/components/responses/InternalServerError'
  delete:
    description: Delete a schema set given a schema set name and a dataspace
    tags:
      - cps-admin
    summary: Delete a schema set
    operationId: deleteSchemaSet
    parameters:
      - $ref: 'components.yml#/components/parameters/apiVersionInPath'
      - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
      - $ref: 'components.yml#/components/parameters/schemaSetNameInPath'
    responses:
      '204':
        $ref: 'components.yml#/components/responses/NoContent'
      '400':
        $ref: 'components.yml#/components/responses/BadRequest'
      '403':
        $ref: 'components.yml#/components/responses/Forbidden'
      '409':
        $ref: 'components.yml#/components/responses/Conflict'
      '500':
        $ref: 'components.yml#/components/responses/InternalServerError'

anchorsByDataspace:
  get:
    description: Read all anchors, given a dataspace
    tags:
      - cps-admin
    summary: Get anchors
    operationId: getAnchors
    parameters:
      - $ref: 'components.yml#/components/parameters/apiVersionInPath'
      - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
    responses:
      '200':
        description: OK
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: 'components.yml#/components/schemas/AnchorDetails'
      '400':
        $ref: 'components.yml#/components/responses/BadRequest'
      '403':
        $ref: 'components.yml#/components/responses/Forbidden'
      '500':
        $ref: 'components.yml#/components/responses/InternalServerError'

anchorByDataspaceAndAnchorName:
  get:
    description: Read an anchor given an anchor name and a dataspace
    tags:
      - cps-admin
    summary: Get an anchor
    operationId: getAnchor
    parameters:
      - $ref: 'components.yml#/components/parameters/apiVersionInPath'
      - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
      - $ref: 'components.yml#/components/parameters/anchorNameInPath'
    responses:
      '200':
        description: OK
        content:
          application/json:
            schema:
              $ref: 'components.yml#/components/schemas/AnchorDetails'
      '400':
        $ref: 'components.yml#/components/responses/BadRequest'
      '403':
        $ref: 'components.yml#/components/responses/Forbidden'
      '500':
        $ref: 'components.yml#/components/responses/InternalServerError'
  delete:
    description: Delete an anchor given an anchor name and a dataspace
    tags:
      - cps-admin
    summary: Delete an anchor
    operationId: deleteAnchor
    parameters:
      - $ref: 'components.yml#/components/parameters/apiVersionInPath'
      - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
      - $ref: 'components.yml#/components/parameters/anchorNameInPath'
    responses:
      '204':
        $ref: 'components.yml#/components/responses/NoContent'
      '400':
        $ref: 'components.yml#/components/responses/BadRequest'
      '403':
        $ref: 'components.yml#/components/responses/Forbidden'
      '500':
        $ref: 'components.yml#/components/responses/InternalServerError'

adminDataspaces:
 get:
   description: Read all dataspaces
   tags:
     - cps-admin
   summary: Get all dataspaces
   operationId: getAllDataspaces
   parameters:
      - $ref: 'components.yml#/components/parameters/apiVersionInPath'
   responses:
     '200':
       description: OK
       content:
         application/json:
           schema:
             type: array
             items:
               $ref: 'components.yml#/components/schemas/DataspaceDetails'
     '400':
       $ref: 'components.yml#/components/responses/BadRequest'
     '403':
       $ref: 'components.yml#/components/responses/Forbidden'
     '500':
       $ref: 'components.yml#/components/responses/InternalServerError'

adminDataspace:
 get:
   description: Read a dataspace given a dataspace name
   tags:
     - cps-admin
   summary: Get a dataspace
   operationId: getDataspace
   parameters:
      - $ref: 'components.yml#/components/parameters/apiVersionInPath'
      - $ref: 'components.yml#/components/parameters/dataspaceNameInPath'
   responses:
     '200':
       description: OK
       content:
         application/json:
           schema:
             $ref: 'components.yml#/components/schemas/DataspaceDetails'
     '400':
       $ref: 'components.yml#/components/responses/BadRequest'
     '403':
       $ref: 'components.yml#/components/responses/Forbidden'
     '500':
       $ref: 'components.yml#/components/responses/InternalServerError'