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/credit-system/swagger.yaml

642 lines
17 KiB

---
swagger: "2.0"
host: "localhost:8000"
basePath: "/api/v1.0"
info:
description: An API which supports creation, deletion, listing etc of Credit Manager
version: "1.0.0"
title: Credit Manager Management API
contact:
email: diego@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: creditManagement
description: Actions relating to the control of the credits per account
- name: accountManagement
description: Actions relating to the account management in the service
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
- account
- credit
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"
/account/create/{id}:
get:
tags:
- accountManagement
produces:
- application/json
summary: Creates a new account in the system
security:
- Keycloak: [admin]
- APIKeyHeader: []
- APIKeyParam: []
operationId: createAccount
responses:
'201':
description: Account created, provided information of the new item created
schema:
$ref: "#/definitions/AccountStatus"
'409':
description: The account with the id provided already exist
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: Something unexpected happend, error raised
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- name: id
in: path
type: string
required: true
description: Id of the account to be created
/account/disable/{id}:
post:
tags:
- accountManagement
consumes:
- application/json
produces:
- application/json
summary: Disables the account with the id provided in the system
security:
- Keycloak: [admin]
- APIKeyHeader: []
- APIKeyParam: []
operationId: disableAccount
responses:
'200':
description: Status information of the account with provided id in the system after the operation succeded
schema:
$ref: "#/definitions/AccountStatus"
'404':
description: The account with the id provided doesn't exist
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: Something unexpected happend, error raised
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- name: id
in: path
type: string
required: true
description: Id of the account to be disabled
/account/enable/{id}:
post:
tags:
- accountManagement
consumes:
- application/json
produces:
- application/json
summary: Enables the account with the id provided in the system
security:
- Keycloak: [admin]
- APIKeyHeader: []
- APIKeyParam: []
operationId: enableAccount
responses:
'200':
description: Status information of the account with provided id in the system after the operation succeded
schema:
$ref: "#/definitions/AccountStatus"
'404':
description: The account with the id provided doesn't exist
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: Something unexpected happend, error raised
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- name: id
in: path
type: string
required: true
description: Id of the account to be enabled
/account/list:
get:
tags:
- accountManagement
produces:
- application/json
summary: List of the accounts in the system
security:
- Keycloak: [user]
- APIKeyHeader: []
- APIKeyParam: []
operationId: listAccounts
responses:
'200':
description: List of accounts in the system
schema:
type: array
items:
$ref: "#/definitions/AccountStatus"
'500':
description: Something unexpected happend, error raised
schema:
$ref: "#/definitions/ErrorResponse"
/account/status/{id}:
get:
tags:
- accountManagement
produces:
- application/json
summary: Basic status of the account with the id provided in the system
security:
- Keycloak: [user]
- APIKeyHeader: []
- APIKeyParam: []
operationId: getAccountStatus
responses:
'200':
description: Status information of the account with provided id in the system
schema:
$ref: "#/definitions/AccountStatus"
'404':
description: The account with the id provided doesn't exist
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: Something unexpected happend, error raised
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- name: id
in: path
type: string
required: true
description: Id of the account to be checked
/account/available/{id}:
get:
tags:
- creditManagement
produces:
- application/json
summary: Credit status of the account with the provided id
security:
- Keycloak: [user]
- APIKeyHeader: []
- APIKeyParam: []
operationId: getCredit
responses:
'200':
description: Credit status of the account with the provided id
schema:
$ref: "#/definitions/CreditStatus"
'404':
description: The account with the provided id doesn't exist
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: Something unexpected happend, error raised
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- name: id
in: path
type: string
required: true
description: Id of the account to be checked
/{medium}/available/decrease/{id}:
post:
tags:
- creditManagement
consumes:
- application/json
produces:
- application/json
summary: Insert a new reseller in the system.
security:
- Keycloak: [admin]
- APIKeyHeader: []
- APIKeyParam: []
operationId: decreaseCredit
responses:
'200':
description: Credit status of the account with the provided id
schema:
$ref: "#/definitions/CreditStatus"
'404':
description: The account with the id provided doesn't exist
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: Something unexpected happend, error raised
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- name: id
in: path
type: string
required: true
description: Id of the account to be checked
- name: amount
in: query
description: Amount to be decreased
required: true
type: number
format: double
- name: medium
in: path
description: Medium (cash/credit) to be used in the accounting
required: true
type: string
enum:
- credit
- cash
/{medium}/available/increase/{id}:
post:
tags:
- creditManagement
consumes:
- application/json
produces:
- application/json
summary: Insert a new reseller in the system.
security:
- Keycloak: [admin]
- APIKeyHeader: []
- APIKeyParam: []
operationId: increaseCredit
responses:
'200':
description: Credit status of the account with the provided id
schema:
$ref: "#/definitions/CreditStatus"
'404':
description: The account with the id provided doesn't exist
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: Something unexpected happend, error raised
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- name: id
in: path
type: string
required: true
description: Id of the account to be checked
- name: amount
in: query
description: Amount to be inccreased
required: true
type: number
format: double
- name: medium
in: path
description: Medium (cash/credit) to be used in the accounting
required: true
type: string
enum:
- credit
- cash
/{medium}/consume/{id}:
post:
tags:
- creditManagement
consumes:
- application/json
produces:
- application/json
summary: Adds a consumption to the system
security:
- Keycloak: [user]
- APIKeyHeader: []
- APIKeyParam: []
operationId: addConsumption
responses:
'200':
description: Credit status of the account with the provided id
schema:
$ref: "#/definitions/CreditStatus"
'404':
description: The account with the id provided doesn't exist
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: Something unexpected happend, error raised
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- name: id
in: path
type: string
required: true
description: Id of the account to be checked
- name: amount
in: query
description: Amount to be decreased
required: true
type: number
format: double
- name: medium
in: path
description: Medium (cash/credit) to be used in the accounting
required: true
type: string
enum:
- credit
- cash
/history/{id}:
get:
tags:
- creditManagement
produces:
- application/json
summary: Credit history of the customer with id
security:
- Keycloak: [user]
- APIKeyHeader: []
- APIKeyParam: []
operationId: getHistory
responses:
'200':
description: Credit status history of the account with the provided id
schema:
$ref: "#/definitions/CreditHistory"
'404':
description: The endpoint provided doesn't exist
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: Something unexpected happend, error raised
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- name: id
in: path
type: string
required: true
description: Id of the account to get the history
- name: filterSystem
in: query
type: boolean
description: Boolean variable to control if the system consumptions have to be listed or not
- name: medium
in: query
description: Medium (cash/credit) to be used as filter
type: string
enum:
- credit
- cash
definitions:
ErrorResponse:
type: object
required:
- errorString
properties:
errorString:
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
AccountStatus:
type: object
required:
- Enabled
properties:
AccountID:
type: string
x-go-custom-tag: gorm:"primary_key"
CreatedAt:
type: string
format: datetime
x-go-custom-tag: gorm:"type:timestamptz"
Enabled:
type: boolean
x-go-custom-tag: gorm:"default:true"
default: true
CreditEvents:
type: object
properties:
AccountId:
type: string
x-go-custom-tag: gorm:"index"
AuthorizedBy:
type: string
Delta:
type: number
format: double
x-go-custom-tag: gorm:"type:numeric(23,13);default:0.0"
EventType:
type: string
x-go-custom-tag: gorm:"index;default:Consumption"
default: Consumption
enum:
- AuthorizedIncrease
- AuthorizedDecrease
- Consumption
- AutomaticCreditExpiry
- Refund
ID:
type: integer
x-go-custom-tag: gorm:"primary_key"
Timestamp:
type: string
format: datetime
x-go-custom-tag: gorm:"type:timestamptz"
Medium:
type: string
x-go-custom-tag: gorm:"index;default:CREDIT"
default: CREDIT
enum:
- CREDIT
- CASH
CreditHistory:
type: object
properties:
AccountID:
type: string
x-go-custom-tag: gorm:"primary_key"
Events:
type: array
items:
$ref: '#/definitions/Event'
CreditStatus:
type: object
properties:
AccountID:
type: string
x-go-custom-tag: gorm:"primary_key"
AvailableCredit:
type: number
format: double
x-go-custom-tag: gorm:"type:numeric(23,13);default:0.0"
AvailableCash:
type: number
format: double
x-go-custom-tag: gorm:"type:numeric(23,13);default:0.0"
LastUpdate:
type: string
format: datetime
x-go-custom-tag: gorm:"type:timestamptz"
Event:
type: object
properties:
AuthorizedBy:
type: string
Delta:
type: number
format: double
x-go-custom-tag: gorm:"type:numeric(23,13);default:0.0"
EventType:
type: string
x-go-custom-tag: gorm:"index;default:Consumption"
default: Consumption
enum:
- AuthorizedIncrease
- AuthorizedDecrease
- Consumption
- AutomaticCreditExpiry
- Refund
Timestamp:
type: string
format: datetime
x-go-custom-tag: gorm:"type:timestamptz"
Medium:
type: string
x-go-custom-tag: gorm:"index;default:CREDIT"
default: CREDIT
enum:
- CREDIT
- CASH