# Copyright 2017 Google Inc.
#
# 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.

swagger: '2.0'
info:
  version: 0.0.1
  title: Edge X Apid Gateway Deploy
  contact:
    name: Apigee, Inc.
    url: http://www.apigee.com/
    email: sales@apigee.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
basePath: /deployments
schemes:
  - http
consumes:
  - application/json
produces:
  - application/json
paths:
  /:
    get:
      description: Retrieve current deployment system and bundles to install.
      parameters:
        - name: If-None-Match
          in: header
          type: string
          description: "If request If-None-Match header matches the ETag of deployment, the server returns a 304 Not Modified response indicating that the client already has the most recent bundle list."
        - name: block
          in: query
          type: integer
          description: 'If block > 0 AND if there is no new bundle list available, then block for up to the specified number of seconds until a new bundle list becomes available. If no new deployment becomes available, then return 304 Not Modified if If-None-Match is specified.'
      responses:
        '200':
          headers:
            ETag:
              description: "Client should reuse ETag value in If-None-Match header of the next GET request."
              type: string
          description: The deployment system and bundles to install.
          examples:
            application/json: [
  {
    "id":  "1234567890",
    "displayName": "abc123",
    "created":"1481917061",
    "updated":"1481917061",
    "createdBy":"mdobs",
    "updatedBy":"mdobs",
    "scopeId": "ABCDEF",
    "uri": "file:///tmp/F1ERRO/0c9853d1ad9b7ec9f7d16ed16ada1be4/archive/369a01f320f926cd8ffac5dfda83b1d8a2129ab3.zip",
    "configurationJson": {
      "PropA": "scope1bundle1propA",
      "PropSCOPE_LEVEL": "aaa",
      "PropCLUSTER_LEVEL": "xxx"
    }
  },
  {
    "id":  "1234567891",
    "displayName": "abc123_2",
    "created":"1481917061",
    "updated":"1481917061",
    "createdBy":"mdobs",
    "updatedBy":"mdobs",
    "scopeId": "ABCDEF",
    "uri": "file:///tmp/F1ERRO/0c9853d1ad9b7ec9f7d16ed16ada1be4/archive/369a01f320f926cd8ffac5dfda83b1d8a2129ab3.zip",
    "configurationJson": {
      "PropA": "scope1bundle2propA",
      "PropSCOPE_LEVEL": "aaa",
      "PropCLUSTER_LEVEL": "xxx"
    }
  },
  {
    "id":  "1234567892",
    "displayName": "abc1234",
    "created":"1481917061",
    "updated":"1481917061",
    "createdBy":"mdobs",
    "updatedBy":"mdobs",
    "scopeId": "ABCDEF",
    "uri": "file:///tmp/F1ERRO/0c9853d1ad9b7ec9f7d16ed16ada1be4/archive/369a01f320f926cd8ffac5dfda83b1d8a2129ab3.zip",
    "configurationJson": {
      "PropA": "scope1bundlepropA",
      "PropSCOPE_LEVEL": "aaa",
      "PropCLUSTER_LEVEL": "xxx"
    }
  },
  {
    "id":  "1234567893",
    "displayName": "abc123",
    "created":"1481917061",
    "updated":"1481917061",
    "createdBy":"mdobs",
    "updatedBy":"mdobs",
    "scopeId": "EFGHIJK",
    "uri": "file:///tmp/F1ERRO/0c9853d1ad9b7ec9f7d16ed16ada1be4/archive/369a01f320f926cd8ffac5dfda83b1d8a2129ab3.zip",
    "configurationJson": {
      "PropA": "scope2bundle1propA",
      "PropSCOPE_LEVEL": "bbb",
      "PropCLUSTER_LEVEL": "xxx"
    }
  },
  {
    "id":  "1234567894",
    "displayName": "abc123_2",
    "created":"1481917061",
    "updated":"1481917061",
    "createdBy":"fierrom",
    "updatedBy":"fierrom",
    "scopeId": "EFGHIJK",
    "uri": "file:///tmp/F1ERRO/0c9853d1ad9b7ec9f7d16ed16ada1be4/archive/369a01f320f926cd8ffac5dfda83b1d8a2129ab3.zip",
    "configurationJson": {
      "PropA": "scope2bundle2propA",
      "PropSCOPE_LEVEL": "bbb",
      "PropCLUSTER_LEVEL": "xxx"
    }
  }
]
          schema:
            $ref: '#/definitions/DeploymentResponse'
        '304':
          description: Deployment not modified.
    put:
      description: Save results of deployment
      parameters:
        - name: _
          in: body
          required: true
          description: Success or failure response
          schema:
            $ref: '#/definitions/DeploymentResult'
      responses:
        '200':
          description: OK
        default:
          description: Error response
          schema:
            $ref: '#/definitions/ErrorResponse'

definitions:

  ErrorResponse:
    required:
      - errorCode
      - reason
    properties:
      errorCode:
        type: number
      reason:
        type: string
    example: {
      "errorCode": 601,
      "reason": "Something's wrong"
    }

  DeploymentResponse:
    type: array
    items:
      $ref: '#/definitions/DeploymentBundle'

  DeploymentBundle:
    type: object
    required:
      - id
      - scopeId
      - createdBy
      - created
      - updatedBy
      - updated
      - displayName
      - uri
      - configurationJson
    properties:
      id:
        type: string
      scopeId:
        type: string
      createdBy:
        type: string
      created:
        type: number
      updatedBy:
        type: string
      updated:
        type: number
      displayName:
        type: string
      uri:
        type: string
      configurationJson:
        type: object

  DeploymentResult:
    type: array
    items:
      $ref: '#/definitions/DeploymentBundleResult'
    example: [
      {
        "id": "1234567890",
        "status": "SUCCESS"
      },
      {
        "id":  "1234567890",
        "status": "SUCCESS"
      },
      {
        "id":  "1234567890",
        "status": "SUCCESS"
      }
    ]

  DeploymentBundleResult:
    type: object
    required:
      - id
      - status
    properties:
      id:
        type: string
      message:
        type: string
      errorCode:
        type: number
      status:
        type: string
        enum:
          - "SUCCESS"
          - "FAIL"
    description: Status of SUCCESS or FAIL plus error
    example: {
      "id": 1234567890,
      "status": "SUCCESS"
    }