# ================================================================================
# Copyright (c) 2017-2018 AT&T Intellectual Property. All rights reserved.
# ================================================================================
# 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.
# ============LICENSE_END=========================================================
#
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
---

swagger: '2.0'

info:
  version: "4.2.0"
  title: "deployment-handler API"
  license:
    name: "Apache 2.0"
    url: "http://www.apache.org/licenses/LICENSE-2.0.html"
  description: |
    High-level API for deploying/undeploying composed DCAE services using Cloudify Manager.

tags:
  - name: "info"
    description: "version and links"
  - name: "dcae-deployments"
    description: "operations on dcae-deployments"
  - name: "policy"
    description: "policy update API consumed by policy-handler and debug API to find policies on components"

paths:
  /:
    get:
      tags:
        - "info"
      description: Returns version information and links to API operations
      produces:
        - "application/json"
      responses:

        200:
          description: Success
          schema:
            title: DispatcherInfo
            type: object
            properties:
              apiVersion:
                type: string
                description: |
                  version of API supported by this server
              serverVersion:
                type: string
                description: |
                  version of software running on this server
              links:
                type: object
                description: |
                  Links to API resources
                properties:
                  info:
                    type: string
                    description: |
                      path for the server information endpoint
                  events:
                    type: string
                    description: |
                      path for the events endpoint

  /dcae-deployments:
    get:
      tags:
        - "dcae-deployments"
      description: |
        List service deployments known to the orchestrator, optionally restricted to a single service type

      parameters:
        - name: serviceTypeId
          description: |
            Service type identifier for the type whose deployments are to be listed
          type: string
          in: query
          required: false

      responses:

        200:
          description: |
            Success. (Note that if no matching deployments are found, the request is still a success; the
            deployments array is empty in that case.)
          schema:
            $ref: "#/definitions/DCAEDeploymentsListResponse"

        500:
          description: |
            Problem on the server side.  See the message
            in the response for more details.
          schema:
            $ref: "#/definitions/DCAEErrorResponse"
        502:
          description: |
            Error reported to the dispatcher by a downstream system.  See the message
            in the response for more details.
          schema:
            $ref: "#/definitions/DCAEErrorResponse"

        504:
          description: |
            Error communicating with a downstream system.  See the message
            in the response for more details.
          schema:
            $ref: "#/definitions/DCAEErrorResponse"

  /dcae-deployments/{deploymentId}:
    put:
      tags:
        - "dcae-deployments"
      description: |
        Request deployment of a DCAE service

      consumes:
        - application/json
      produces:
        - application/json

      parameters:
        - name: deploymentId
          description: |
            Unique deployment identifier assigned by the API client.
          in: path
          type: string
          required: true

        - name: body
          in: body
          schema:
            $ref: "#/definitions/DCAEDeploymentRequest"
          required: true

      responses:

        202:
          description: |
            Success:  The content that was posted is valid, the dispatcher has
              found the needed blueprint, created an instance of the topology in the orchestrator,
              and started an installation workflow.
          schema:
            $ref: "#/definitions/DCAEDeploymentResponse"

        400:
          description: |
            Bad request: See the message in the response for details.
          schema:
            $ref: "#/definitions/DCAEErrorResponse"

        409:
          description: |
            A service with the specified deployment Id already exists.  Using PUT to update the service is not a supported operation.
          schema:
            $ref: "#/definitions/DCAEErrorResponse"

        415:
          description: |
            Bad request: The Content-Type header does not indicate that the content is
            'application/json'
          schema:
            $ref: "#/definitions/DCAEErrorResponse"

        500:
          description: |
            Problem on the server side.  See the message
            in the response for more details.
          schema:
            $ref: "#/definitions/DCAEErrorResponse"

        502:
          description: |
            Error reported to the dispatcher by a downstream system.  See the message
            in the response for more details.
          schema:
            $ref: "#/definitions/DCAEErrorResponse"

        504:
          description: |
            Error communicating with a downstream system.  See the message
            in the response for more details.
          schema:
            $ref: "#/definitions/DCAEErrorResponse"

    delete:
      tags:
        - "dcae-deployments"
      description: |
        Uninstall the DCAE service and remove all associated data from the orchestrator.

      parameters:
        - name: deploymentId
          description: |
            Deployment identifier for the service to be uninstalled.
          in: path
          type: string
          required: true

      responses:

        202:
          description: |
            Success:  The dispatcher has initiated the uninstall operation.
          schema:
            $ref: "#/definitions/DCAEDeploymentResponse"

        400:
          description: |
            Bad request: See the message in the response for details.
          schema:
            $ref: "#/definitions/DCAEErrorResponse"

        500:
          description: |
            Problem on the server side.  See the message
            in the response for more details.
          schema:
            $ref: "#/definitions/DCAEErrorResponse"

        502:
          description: |
            Error reported to the dispatcher by a downstream system.  See the message
            in the response for more details.
          schema:
            $ref: "#/definitions/DCAEErrorResponse"

        504:
          description: |
            Error communicating with a downstream system.  See the message
            in the response for more details.
          schema:
            $ref: "#/definitions/DCAEErrorResponse"

  /dcae-deployments/{deploymentId}/operation/{operationId}:
    get:
      tags:
        - "dcae-deployments"
      description: |
        Get status of a deployment operation
      parameters:
        - name: deploymentId
          in: path
          type: string
          required: true
        - name: operationId
          in: path
          type: string
          required: true

      responses:

        200:
          description: Status information retrieved successfully
          schema:
            $ref: "#/definitions/DCAEOperationStatusResponse"

        404:
          description: The operation information does not exist (possibly because the service has been uninstalled and deleted).
          schema:
            $ref: "#/definitions/DCAEErrorResponse"

        500:
          description: |
            Problem on the server side.  See the message
            in the response for more details.
          schema:
            $ref: "#/definitions/DCAEErrorResponse"

        502:
          description: |
            Error reported to the dispatcher by a downstream system.  See the message
            in the response for more details.
          schema:
            $ref: "#/definitions/DCAEErrorResponse"

        504:
          description: |
            Error communicating with a downstream system.  See the message
            in the response for more details.
          schema:
            $ref: "#/definitions/DCAEErrorResponse"

  /policy:
    post:
      tags:
        - "policy"
      description: policy update API consumed by policy-handler

      consumes:
        - application/json
      produces:
        - application/json

      parameters:
        - name: body
          in: body
          schema:
            $ref: "#/definitions/DCAEPolicyRequest"
          required: true

      responses:
        200:
          description: deployment-handler always responds with ok to /policy before processing the request

  /policy/components:
    get:
      tags:
        - "policy"
      description: debug API to find policies on components
      produces:
        - application/json

      responses:
        200:
          description: deployment-handler found components with or without policies in cloudify


definitions:

  DCAEDeploymentRequest:
    description: |
      Request for deploying a DCAE service.
    type:
      object
    required: [serviceTypeId]

    properties:

      serviceTypeId:
        description: |
          The service type identifier (a unique ID assigned by DCAE inventory) for the service to be deployed.
        type: string

      inputs:
        description: |
          Object containing inputs needed by the service blueprint to create an instance of the service.
          Content of the object depends on the service being deployed.
        type: object

  DCAEDeploymentResponse:
    description: |
      Response body for a PUT or DELETE to /dcae-deployments/{deploymentId}
    type: object

    required: [requestId, links]

    properties:
      requestId:
        type: string
        description: |
          Unique identifier for the request
      links:
        description: |
          Links that the API client can access.
        type: object
        properties:
          self:
            type: string
            description: |
              Link used to retrieve information about the service being deployed
          status:
            type: string
            description:
              Link used to retrieve information about the status of the installation workflow

  DCAEOperationStatusResponse:
    description: |
      Response body for a request for status of an installation or uninstallation operation.
    type: object

    required: [requestId, operationType, status]

    properties:
      requestId:
        type: string
        description: |
          A unique identifier assigned to the request.  Useful for tracing a request through logs.
      operationType:
        description: |
          Type of operation being reported on. ("install" or "uninstall")
        type: string
      status:
        description: |
          Status of the installation or uninstallation operation.  Possible values are "processing",
          "succeeded", and "failed"
        type: string
      error:
        description: |
          If status is "failed", this field will be present and contain additional information about the reason the operation failed.
        type: string
      links:
        description: |
         If the operation succeeded, links that the client can follow to take further action.  Note that a successful "uninstall" operation removes the DCAE service instance completely, so there are no possible further actions, and no links.
        type: object
        properties:
          self:
            type: string
            description: |
              Link used to retrieve information about the service.
          uninstall:
            type: string
            description:
              Link used to trigger an "uninstall" operation for the service.  (Use the DELETE method.)

  DCAEErrorResponse:
    description: |
      Object reporting an error.
    type:
      object
    required: [status]

    properties:
      status:
        description: HTTP status code for the response
        type: integer

      message:
        description: Human-readable description of the reason for the error
        type: string

  DCAEDeploymentsListResponse:
    description: |
      Object providing a list of deployments
    type: object
    required: [requestId, deployments]

    properties:
      requestId:
        type: string
        description: |
          Unique identifier for the request
      deployments:
        type: array
        items:
          type: object
          properties:
            href:
              type: string
              description: |
                  URL for the service deployment

  DCAEPolicyBody:
    description: policy_body - the whole object received from policy-engine
    type: object
    required:
      - policyName
      - policyVersion
      - config
    properties:
      policyName:
        description: unique policy name that contains the version and extension
        type: string
      policyVersion:
        description: stringified int that is autoincremented by policy-engine
        type: string
      config:
        description: the policy-config - the config data provided by policy owner
        type: object

  DCAEPolicy:
    description: policy object
    type: object
    required:
      - policy_id
      - policy_body
    properties:
      policy_id:
        description: unique identifier of policy regardless of its version
        type: string
      policy_body:
        $ref: "#/definitions/DCAEPolicyBody"

  DCAEPolicyRequest:
    description: request to update policies on DCAE components.
    type: object
    required:
      - catch_up
      - latest_policies
      - removed_policies

    properties:
      catch_up:
        description: flag to indicate whether the request contains all the policies in PDP or not
        type: boolean
        default: false

      latest_policies:
        description: |
          dictionary of (policy_id -> DCAEPolicy object).
          In example: replace additionalProp1,2,3 with policy_id1,2,3 values
        type: object
        default: {}
        additionalProperties:
          $ref: "#/definitions/DCAEPolicy"

      removed_policies:
        description: |
          whether policy was removed from policy-engine.
          dictionary of (policy_id -> true).
          In example: replace additionalProp1,2,3 with policy_id1,2,3 values
        type: object
        default: {}
        additionalProperties:
          type: boolean

      errored_policies:
        description: |
          whether policy-engine returned an error on the policy.
          dictionary of (policy_id -> true).
          In example: replace additionalProp1,2,3 with policy_id1,2,3 values
        type: object
        default: {}
        additionalProperties:
          type: boolean

      errored_scopes:
        description: >
          on cartchup - list of policy scope_prefix values on wchich
          the policy-engine experienced an error other than not-found data.
        type: array
        items:
          type: string

      scope_prefixes:
        description: >
          on catchup - list of all scope_prefixes used by the policy-handler
          to retrieve the policies from policy-engine.
        type: array
        items:
          type: string
