Cyclops 4 HPC is the purpose built stack to support large HPC centers with resource accounting and billing of cluster as well as cloud resources.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
cyclops-4-hpc/services/plan-manager/swagger.yaml

962 lines
25 KiB

---
swagger: "2.0"
host: "localhost:8000"
basePath: "/api/v1.0"
info:
description: An API which supports creation, deletion, listing etc of Plan Manager
version: "1.0.0"
title: Plan Manager Management API
contact:
email: sean@cyclops-labs.io
license:
name: Apache 2.0
url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
tags:
- name: statusManagement
description: Actions relating to the reporting of the state of the service
- name: triggerManagement
description: Actions relating to the periodics actions to be triggered in the system
- name: bundleManagement
description: Actions relating to management of sku bundles
- name: cycleManagement
description: Actions relating to management of life cycles
- name: planManagement
description: Actions relating to management of plans
- name: priceManagement
description: Actions relating to management of sku prices
- name: skuManagement
description: Actions relating to management of skus and prices
securityDefinitions:
APIKeyHeader:
type: apiKey
in: header
name: X-API-KEY
APIKeyParam:
type: apiKey
in: query
name: api_key
Keycloak:
type: oauth2
flow: accessCode
authorizationUrl: 'http://localhost:8080/auth/realms/Dev/protocol/openid-connect/auth'
tokenUrl: 'http://localhost:8080/auth/realms/Dev/protocol/openid-connect/token'
scopes:
admin: Admin scope
user: User scope
schemes:
- http
- https
security:
- Keycloak: [user,admin]
- APIKeyHeader: []
- APIKeyParam: []
paths:
/status:
get:
tags:
- statusManagement
produces:
- application/json
summary: Basic status of the system
security:
- Keycloak: [user]
- APIKeyHeader: []
- APIKeyParam: []
operationId: showStatus
responses:
'200':
description: Status information of the system
schema:
$ref: "#/definitions/Status"
/status/{id}:
get:
tags:
- statusManagement
produces:
- application/json
summary: Basic status of the system
security:
- Keycloak: [user]
- APIKeyHeader: []
- APIKeyParam: []
operationId: getStatus
responses:
'200':
description: Status information of the system
schema:
$ref: "#/definitions/Status"
'404':
description: The endpoint provided doesn't exist
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- name: id
in: path
type: string
enum:
- kafka-receiver
- kafka-sender
- status
- trigger
- bundle
- cycle
- plan
- price
- sku
required: true
description: Id of the endpoint to be checked
/trigger/sample:
get:
tags:
- triggerManagement
produces:
- application/json
summary: Sample task trigger
security:
- Keycloak: [user]
- APIKeyHeader: []
- APIKeyParam: []
operationId: execSample
responses:
'200':
description: Sample task executed successfully
'500':
description: Something unexpected happend, error raised
schema:
$ref: "#/definitions/ErrorResponse"
/cycle:
get:
tags:
- cycleManagement
summary: List all cycles
operationId: listCycles
description: lists all cycles
responses:
'200':
description: list of cycles returned
schema:
type: array
items:
$ref: "#/definitions/Cycle"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- description: state to filter
in: query
name: state
type: string
- description: resource type to filter
in: query
name: type
type: string
post:
tags:
- cycleManagement
consumes:
- application/json
produces:
- application/json
summary: Create a plan
operationId: createCycle
description: Creates a new cycle
responses:
'201':
description: item created
schema:
$ref: "#/definitions/ItemCreatedResponse"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
'400':
description: 'invalid input, object invalid'
'409':
description: an existing item already exists
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- description: Cycle to be added
in: body
name: cycle
schema:
$ref: '#/definitions/Cycle'
/cycle/{id}:
get:
tags:
- cycleManagement
consumes:
- application/json
produces:
- application/json
summary: Get specific cycle
operationId: getCycle
description: get cycle with given id
responses:
'200':
description: cycle returned
schema:
$ref: "#/definitions/Cycle"
'404':
description: cycle with id not found
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- description: Id of cycle to be obtained
in: path
name: id
required: true
type: string
put:
tags:
- cycleManagement
consumes:
- application/json
produces:
- application/json
summary: Update specific cycle
operationId: updateCycle
description: Update cycle with given id
responses:
'200':
description: updated cycle
schema:
$ref: "#/definitions/Cycle"
'404':
description: cycle with id not found
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- description: Id of cycle to be updated
in: path
name: id
required: true
type: string
- description: updated cycle containing all parameters except id
in: body
name: cycle
required: true
schema:
$ref: "#/definitions/Cycle"
/plan:
get:
tags:
- planManagement
summary: List all plans
operationId: listPlans
description: lists all plans (tbd - pagination?)
responses:
'200':
description: list of plans returned
schema:
type: array
items:
$ref: "#/definitions/Plan"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
post:
tags:
- planManagement
consumes:
- application/json
produces:
- application/json
summary: Create a plan
operationId: createPlan
description: Creates a new plan
responses:
'201':
description: item created
schema:
$ref: "#/definitions/ItemCreatedResponse"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
'400':
description: 'invalid input, object invalid'
'409':
description: an existing item already exists
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- description: Plan to be added
in: body
name: plan
schema:
$ref: '#/definitions/Plan'
/plan/{id}:
get:
tags:
- planManagement
consumes:
- application/json
produces:
- application/json
summary: Get specific plan
operationId: getPlan
description: get plan with given planid
responses:
'200':
description: plan returned
schema:
$ref: "#/definitions/Plan"
'404':
description: plan with planid not found
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- description: Id of plan to be obtained
in: path
name: id
required: true
type: string
put:
tags:
- planManagement
consumes:
- application/json
produces:
- application/json
summary: Update specific plan
operationId: updatePlan
description: Update plan with given planId
responses:
'200':
description: updated plan
schema:
$ref: "#/definitions/Plan"
'404':
description: plan with planid not found
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- description: Id of plan to be obtained
in: path
name: id
required: true
type: string
- description: updated plan containing all parameters except id
in: body
name: plan
required: true
schema:
$ref: "#/definitions/Plan"
/plan/complete:
get:
tags:
- planManagement
consumes:
- application/json
produces:
- application/json
summary: Get full information relating to known plans
operationId: listCompletePlans
description: Obtains full information on all known plans
responses:
'200':
description: Set of known plans returned in full
schema:
type: array
items:
$ref: "#/definitions/Plan"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
/plan/complete/{id}:
get:
tags:
- planManagement
consumes:
- application/json
produces:
- application/json
summary: Get complete plan
operationId: getCompletePlan
description: gets complete plan with planid
responses:
'200':
description: plan returned
schema:
$ref: "#/definitions/Plan"
'404':
description: complete plan with planid not found
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- description: Id of plan to be obtained
in: path
name: id
required: true
type: string
/sku:
get:
tags:
- skuManagement
summary: list SKUs
operationId: listSkus
description: lists all skus
responses:
'200':
description: list of skus returned
schema:
type: array
items:
$ref: "#/definitions/Sku"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
post:
tags:
- skuManagement
consumes:
- application/json
produces:
- application/json
summary: create SKU
operationId: createSku
description: Creates a new sku
responses:
'201':
description: item created
schema:
$ref: "#/definitions/ItemCreatedResponse"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
'400':
description: invalid input, object invalid
'409':
description: an existing item already exists
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- description: SKU to be added
in: body
name: sku
schema:
$ref: '#/definitions/Sku'
/sku/{id}:
get:
tags:
- skuManagement
consumes:
- application/json
produces:
- application/json
summary: Get specific sku
operationId: getSku
description: get sku with given skuid
responses:
'200':
description: sku returned
schema:
$ref: "#/definitions/Sku"
'404':
description: sku with skuid not found
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- description: Id of sku to be obtained
in: path
name: id
required: true
type: string
put:
tags:
- skuManagement
consumes:
- application/json
produces:
- application/json
summary: Update specific sku
operationId: updateSku
description: Update sku with given skuid
responses:
'200':
description: updated sku
schema:
$ref: "#/definitions/Sku"
'404':
description: sku with skuid not found
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- description: Id of sku to be obtained
in: path
name: id
required: true
type: string
- description: updated sku containing all parameters except id
in: body
name: sku
required: true
schema:
$ref: "#/definitions/Sku"
/sku/bundle:
get:
tags:
- bundleManagement
summary: list SKU Bundles
operationId: listSkuBundles
description: lists all sku bundles
responses:
'200':
description: list of skus bundles returned
schema:
type: array
items:
$ref: "#/definitions/SkuBundle"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
post:
tags:
- bundleManagement
consumes:
- application/json
produces:
- application/json
summary: create SKU bundle
operationId: createSkuBundle
description: Creates a new sku bundle
responses:
'201':
description: item created
schema:
$ref: "#/definitions/ItemCreatedResponse"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
'400':
description: invalid input, object invalid
'409':
description: an existing item already exists
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- description: SKU bundle to be added
in: body
name: bundle
schema:
$ref: '#/definitions/SkuBundle'
/sku/bundle/{id}:
get:
tags:
- bundleManagement
consumes:
- application/json
produces:
- application/json
summary: Get specific sku bundle
operationId: getSkuBundle
description: get sku bundle with given id
responses:
'200':
description: sku bundle returned
schema:
$ref: "#/definitions/SkuBundle"
'404':
description: sku bundle with id not found
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- description: Id of sku bundle to be obtained
in: path
name: id
required: true
type: string
put:
tags:
- bundleManagement
consumes:
- application/json
produces:
- application/json
summary: Update specific sku bundle
operationId: updateSkuBundle
description: Update sku bundle with given id
responses:
'200':
description: updated sku bundle
schema:
$ref: "#/definitions/SkuBundle"
'404':
description: sku bundle with id not found
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- description: Id of sku bundle to be obtained
in: path
name: id
required: true
type: string
- description: updated sku bundle containing all parameters except id
in: body
name: bundle
required: true
schema:
$ref: "#/definitions/SkuBundle"
/sku/bundle/name/{name}:
get:
tags:
- bundleManagement
consumes:
- application/json
produces:
- application/json
summary: Get specific sku bundle
operationId: getSkuBundleByName
description: get sku bundle with given name
responses:
'200':
description: sku bundle returned
schema:
$ref: "#/definitions/SkuBundle"
'404':
description: sku bundle with name not found
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- description: Id of sku bundle to be obtained
in: path
name: name
required: true
type: string
/sku/price:
get:
tags:
- priceManagement
summary: list SKU Prices
operationId: listSkuPrices
description: lists all sku prices
responses:
'200':
description: list of skus prices returned
schema:
type: array
items:
$ref: "#/definitions/SkuPrice"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
post:
tags:
- priceManagement
consumes:
- application/json
produces:
- application/json
summary: create SKU price
operationId: createSkuPrice
description: Creates a new sku price
responses:
'201':
description: item created
schema:
$ref: "#/definitions/ItemCreatedResponse"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
'400':
description: invalid input, object invalid
'409':
description: an existing item already exists
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- description: SKU price to be added
in: body
name: price
schema:
$ref: '#/definitions/SkuPrice'
/sku/price/{id}:
get:
tags:
- priceManagement
consumes:
- application/json
produces:
- application/json
summary: Get specific sku price
operationId: getSkuPrice
description: get sku price with given skupriceid
responses:
'200':
description: sku price returned
schema:
$ref: "#/definitions/SkuPrice"
'404':
description: sku price with skupriceid not found
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- description: Id of sku price to be obtained
in: path
name: id
required: true
type: string
put:
tags:
- priceManagement
consumes:
- application/json
produces:
- application/json
summary: Update specific sku price
operationId: updateSkuPrice
description: Update sku price with given skupriceid
responses:
'200':
description: updated sku price
schema:
$ref: "#/definitions/SkuPrice"
'404':
description: sku price with skupriceid not found
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: unexpected error
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- description: Id of sku price to be obtained
in: path
name: id
required: true
type: string
- description: updated sku containing all parameters except id
in: body
name: price
required: true
schema:
$ref: "#/definitions/SkuPrice"
definitions:
ErrorResponse:
type: object
required:
- errorString
properties:
errorString:
type: string
ItemCreatedResponse:
properties:
Link:
type: string
ID:
type: string
Message:
type: string
Status:
type: object
required:
- SystemState
properties:
AverageResponseTime:
type: number
format: double
DBState:
type: string
LastRequest:
type: string
RequestsBoT:
type: integer
RequestsLastHour:
type: integer
RequestsToday:
type: integer
SystemState:
type: string
Metadata:
type: object
x-go-type:
import:
package: "gitlab.com/cyclops-enterprise/datamodels"
type: JSONdb
Cycle:
type: object
required:
- State
- ResourceType
- SkuList
properties:
ID:
type: string
x-go-custom-tag: gorm:"primary_key;unique;default:md5(random()::text || clock_timestamp()::text)::uuid"
State:
type: string
ResourceType:
type: string
SkuList:
x-go-custom-tag: gorm:"type:jsonb"
$ref: '#/definitions/Metadata'
Plan:
type: object
required:
- Name
- OfferedEndDate
- OfferedStartDate
properties:
Discount:
type: number
format: double
default: 0.0
x-go-custom-tag: gorm:"type:numeric(23,13);default:0.0"
ID:
type: string
x-go-custom-tag: gorm:"primary_key;unique;default:md5(random()::text || clock_timestamp()::text)::uuid"
Name:
type: string
example: 'Standard 3 year plan starting 1/1/2019'
OfferedEndDate:
type: string
format: date
example: '2016-08-29'
x-go-custom-tag: gorm:"type:date"
OfferedStartDate:
type: string
format: date
example: '2016-08-29'
x-go-custom-tag: gorm:"type:date"
SkuPrices:
type: array
items:
$ref: "#/definitions/SkuPrice"
x-go-custom-tag: gorm:"-"
Sku:
type: object
required:
- Name
properties:
ID:
type: string
x-go-custom-tag: gorm:"primary_key;unique;default:md5(random()::text || clock_timestamp()::text)::uuid"
Name:
type: string
example: 'Standard 3 year plan starting 1/1/2019'
Unit:
type: string
SkuBundle:
type: object
required:
- Name
properties:
ID:
type: string
x-go-custom-tag: gorm:"primary_key;unique;default:md5(random()::text || clock_timestamp()::text)::uuid"
Name:
type: string
SkuPrices:
x-go-custom-tag: gorm:"type:jsonb"
$ref: '#/definitions/Metadata'
SkuPrice:
type: object
required:
- PlanID
- SkuID
- Unit
- UnitPrice
properties:
ID:
type: string
x-go-custom-tag: gorm:"primary_key;unique;default:md5(random()::text || clock_timestamp()::text)::uuid"
PlanID:
type: string
Discount:
type: number
format: double
default: 0.0
x-go-custom-tag: gorm:"type:numeric(23,13);default:0.0"
SkuID:
type: string
SkuName:
type: string
Unit:
type: string
UnitPrice:
type: number
format: double
x-go-custom-tag: gorm:"type:numeric(23,13)"
UnitCreditPrice:
type: number
format: double
x-go-custom-tag: gorm:"type:numeric(23,13)"
AccountingMode:
type: string
x-go-custom-tag: gorm:"index;default:CREDIT"
default: CREDIT
enum:
- CREDIT
- CASH
- BOTH
- NONE