# Copyright 2020 Intel Corporation.
# 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.

openapi: 3.0.1
info:
  title: ONAP4K8S Orchestrator Controller Register API
  description: 'This is the Orchestrator Controller gRPC Register API. Find out more about the Orchestrator at: https://wiki.onap.org/display/DW/Multi+Cluster+Application+Scheduler'
  contact:
    name: Marcus Williams
    email: marcus.williams@intel.com
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  version: 0.0.1
externalDocs:
  description: ONAP4K8S Orchestrator Controller Register API
  url: 'https://wiki.onap.org/display/DW/V2+API+Specification#V2APISpecification-OrchestratorControllerRegistrationAPI'
servers:
- url: http://127.0.0.1:9015
tags:
- name: controllers

paths:
  /v2/controllers:
    post:
      tags:
      - controllers
      summary: Add a new controller to the orchestrator
      operationId: addController
      requestBody:
        description: Describe new controller to add to the orchestrator
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Controller'
        required: true
      responses:
        405:
          description: Invalid input
          content: {}
      security:
        - OAuth2: []
        - OpenId: []
        - BasicHTTP: []
      x-codegen-request-body-name: body
    put:
      tags:
      - controllers
      summary: Add a new controller to the orchestrator
      operationId: putController
      requestBody:
        description: Describe new controller to add to the orchestrator
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Controller'
        required: true
      responses:
        405:
          description: Validation exception
          content: {}
      security:
        - OAuth2: []
        - OpenId: []
        - BasicHTTP: []
      x-codegen-request-body-name: body
  /v2/controllers/{controller-name}:
    get:
      tags:
      - controllers
      summary: Find controller by  name
      description: Returns a controller
      operationId: getController
      parameters:
      - name: controller-name
        in: path
        description: Name of controller
        required: true
        schema:
          type: string
      responses:
        200:
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Controller'
        400:
          description: Invalid controller-name supplied
          content: {}
        404:
          description: Controller not found
          content: {}
      security:
        - OAuth2: []
        - OpenId: []
        - BasicHTTP: []
    delete:
      tags:
      - controllers
      summary: Deletes a controller
      operationId: deleteController
      parameters:
      - name: controller-name
        in: path
        description: service name
        required: true
        schema:
          type: string
      responses:
        400:
          description: Invalid controller name supplied
          content: {}
        404:
          description: Controller not found
          content: {}
      security:
        - OAuth2: []
        - OpenId: []
        - BasicHTTP: []
components:
  schemas:
    Controller:
      type: object
      required:
        - name
        - host
        - port
      properties:
        name:
          type: string
        host:
          type: string
        port:
          type: integer
          format: int64
      example:
        name: HPA-Placement-Controller
        host: 10.7.100.4
        port: 8800
  securitySchemes:
    OAuth2:
      type: oauth2
      flows: 
        authorizationCode:
          authorizationUrl: /oauth/authorize
          tokenUrl: /oauth/token    
    OpenId:
      type: openIdConnect
      openIdConnectUrl: https://example.com/.well-known/openid-configuration
    BasicHTTP:
      type: http
      scheme: basic