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.
cyclops-4-hpc/services/customerdb/swagger.yaml

1538 lines
31 KiB

---
swagger: "2.0"
host: "localhost:8000"
basePath: "/api/v1.0"
info:
description: An API which supports creation, deletion, listing etc of customers and products
version: "1.0.0"
title: Customer Database 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: resellerManagement
description: Actions relating to the management of Resellers
- name: customerManagement
description: Actions relating to the management of Customers
- name: productManagement
description: Actions relating to the management of Products
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
- customer
- product
- reseller
required: true
description: Id of the product to be retrieved
/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"
/customer:
get:
tags:
- customerManagement
produces:
- application/json
summary: List all the customers in the system
security:
- Keycloak: [user]
- APIKeyHeader: []
- APIKeyParam: []
operationId: listCustomers
responses:
'200':
description: List of customers in the system returned
schema:
type: array
items:
$ref: "#/definitions/Customer"
'500':
description: Something unexpected happend, error raised
schema:
$ref: "#/definitions/ErrorResponse"
post:
tags:
- customerManagement
consumes:
- application/json
produces:
- application/json
summary: Insert a new customer in the system.
security:
- Keycloak: [admin]
- APIKeyHeader: []
- APIKeyParam: []
operationId: addCustomer
responses:
'201':
description: New customer was added successfully
schema:
$ref: "#/definitions/ItemCreatedResponse"
'202':
description: The new customer was added but there might have been some fails when adding part of the data
schema:
$ref: "#/definitions/ItemCreatedResponse"
'400':
description: Invalid input, object invalid
'409':
description: The given item already exists
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: Something unexpected happend, error raised
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- name: customer
in: body
description: Customer to be added
required: true
schema:
$ref: "#/definitions/Customer"
/customer/{id}:
get:
tags:
- customerManagement
produces:
- application/json
summary: Return the information about the customer with the given id
security:
- Keycloak: [user]
- APIKeyHeader: []
- APIKeyParam: []
operationId: getCustomer
responses:
'200':
description: Customer with the id given in the system returned
schema:
$ref: "#/definitions/Customer"
'404':
description: The customer with the given id wasn't found
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 customer to be retrieved
put:
tags:
- customerManagement
consumes:
- application/json
produces:
- application/json
summary: Updates the information of the customer with the given id
security:
- Keycloak: [admin]
- APIKeyHeader: []
- APIKeyParam: []
operationId: updateCustomer
responses:
'200':
description: Customer with the given id was updated
schema:
$ref: "#/definitions/ItemCreatedResponse"
'202':
description: The customer was updated but there might have been some fails when adding part of the data
schema:
$ref: "#/definitions/ItemCreatedResponse"
'404':
description: The customer with the given id wasn't found
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 customer to be updated
- name: customer
in: body
description: Customer to be updated
required: true
schema:
$ref: "#/definitions/Customer"
/product:
get:
tags:
- productManagement
produces:
- application/json
summary: List all the products in the system
security:
- Keycloak: [user]
- APIKeyHeader: []
- APIKeyParam: []
operationId: listProducts
responses:
'200':
description: List of products in the system returned
schema:
type: array
items:
$ref: "#/definitions/Product"
'500':
description: Something unexpected happend, error raised
schema:
$ref: "#/definitions/ErrorResponse"
post:
tags:
- productManagement
consumes:
- application/json
produces:
- application/json
summary: Insert a new product in the system.
security:
- Keycloak: [admin]
- APIKeyHeader: []
- APIKeyParam: []
operationId: addProduct
responses:
'201':
description: New product was added successfully
schema:
$ref: "#/definitions/ItemCreatedResponse"
'400':
description: Invalid input, object invalid
'409':
description: The given item already exists
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: Something unexpected happend, error raised
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- name: product
in: body
description: Product to be added
required: true
schema:
$ref: "#/definitions/Product"
/product/{id}:
get:
tags:
- productManagement
produces:
- application/json
summary: Return the information about the product with the given id
security:
- Keycloak: [user]
- APIKeyHeader: []
- APIKeyParam: []
operationId: getProduct
responses:
'200':
description: Product with the id given in the system returned
schema:
$ref: "#/definitions/Product"
'404':
description: The product with the given id wasn't found
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 product to be retrieved
put:
tags:
- productManagement
consumes:
- application/json
produces:
- application/json
summary: Updates the information of the product with the given id
security:
- Keycloak: [admin]
- APIKeyHeader: []
- APIKeyParam: []
operationId: updateProduct
responses:
'200':
description: Product with the given id was updated
schema:
$ref: "#/definitions/ItemCreatedResponse"
'404':
description: The product with the given id wasn't found
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 product to be updated
- name: product
in: body
description: Product to be updated
required: true
schema:
$ref: "#/definitions/Product"
/reseller:
get:
tags:
- resellerManagement
produces:
- application/json
summary: List all the resellers in the system
security:
- Keycloak: [user]
- APIKeyHeader: []
- APIKeyParam: []
operationId: listResellers
responses:
'200':
description: List of resellers in the system returned
schema:
type: array
items:
$ref: "#/definitions/Reseller"
'500':
description: Something unexpected happend, error raised
schema:
$ref: "#/definitions/ErrorResponse"
post:
tags:
- resellerManagement
consumes:
- application/json
produces:
- application/json
summary: Insert a new reseller in the system.
security:
- Keycloak: [admin]
- APIKeyHeader: []
- APIKeyParam: []
operationId: addReseller
responses:
'201':
description: New reseller was added successfully
schema:
$ref: "#/definitions/ItemCreatedResponse"
'202':
description: The new reseller was added but there might have been some fails when adding part of the data
schema:
$ref: "#/definitions/ItemCreatedResponse"
'400':
description: Invalid input, object invalid
'409':
description: The given item already exists
schema:
$ref: "#/definitions/ErrorResponse"
'500':
description: Something unexpected happend, error raised
schema:
$ref: "#/definitions/ErrorResponse"
parameters:
- name: reseller
in: body
description: Reseller to be added
required: true
schema:
$ref: "#/definitions/Reseller"
/reseller/{id}:
get:
tags:
- resellerManagement
produces:
- application/json
summary: Return the information about the reseller with the given id
security:
- Keycloak: [user]
- APIKeyHeader: []
- APIKeyParam: []
operationId: getReseller
responses:
'200':
description: Reseller with the id given in the system returned
schema:
$ref: "#/definitions/Reseller"
'404':
description: The reseller with the given id wasn't found
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 reseller to be retrieved
put:
tags:
- resellerManagement
consumes:
- application/json
produces:
- application/json
summary: Updates the information of the reseller with the given id
security:
- Keycloak: [admin]
- APIKeyHeader: []
- APIKeyParam: []
operationId: updateReseller
responses:
'200':
description: Reseller with the given id was updated
schema:
$ref: "#/definitions/ItemCreatedResponse"
'202':
description: The reseller was updated but there might have been some fails when adding part of the data
schema:
$ref: "#/definitions/ItemCreatedResponse"
'404':
description: The reseller with the given id wasn't found
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 reseller to be updated
- name: reseller
in: body
description: Reseller to be updated
required: true
schema:
$ref: "#/definitions/Reseller"
definitions:
ErrorResponse:
type: object
required:
- errorString
properties:
errorString:
type: string
ItemCreatedResponse:
properties:
Message:
type: string
ApiLink:
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
Customer:
type: object
properties:
AbacusCode:
type: string
x-go-custom-tag: gorm:"default:''"
Address:
type: string
ApiLink:
type: string
x-go-custom-tag: gorm:"-"
Billable:
type: boolean
x-go-custom-tag: gorm:"default:true"
default: true
BillContact:
type: string
x-go-custom-tag: gorm:"default:''"
BillCurrency:
type: string
x-go-custom-tag: gorm:"default:CHF"
description: ISO-4217 currency code
default: CHF
enum:
- AED
- AFN
- ALL
- AMD
- ANG
- AOA
- ARS
- AUD
- AWG
- AZN
- BAM
- BBD
- BDT
- BGN
- BHD
- BIF
- BMD
- BND
- BOB
- BOV
- BRL
- BSD
- BTN
- BWP
- BYN
- BZD
- CAD
- CDF
- CHE
- CHF
- CHW
- CLF
- CLP
- CNY
- COP
- COU
- CRC
- CUC
- CUP
- CVE
- CZK
- DJF
- DKK
- DOP
- DZD
- EGP
- ERN
- ETB
- EUR
- FJD
- FKP
- GBP
- GEL
- GHS
- GIP
- GMD
- GNF
- GTQ
- GYD
- HKD
- HNL
- HRK
- HTG
- HUF
- IDR
- ILS
- INR
- IQD
- IRR
- ISK
- JMD
- JOD
- JPY
- KES
- KGS
- KHR
- KMF
- KPW
- KRW
- KWD
- KYD
- KZT
- LAK
- LBP
- LKR
- LRD
- LSL
- LYD
- MAD
- MDL
- MGA
- MKD
- MMK
- MNT
- MOP
- MRU
- MUR
- MVR
- MWK
- MXN
- MXV
- MYR
- MZN
- NAD
- NGN
- NIO
- NOK
- NPR
- NZD
- OMR
- PAB
- PEN
- PGK
- PHP
- PKR
- PLN
- PYG
- QAR
- RON
- RSD
- RUB
- RWF
- SAR
- SBD
- SCR
- SDG
- SEK
- SGD
- SHP
- SLL
- SOS
- SRD
- SSP
- STN
- SVC
- SYP
- SZL
- THB
- TJS
- TMT
- TND
- TOP
- TRY
- TTD
- TWD
- TZS
- UAH
- UGX
- USD
- USN
- UYI
- UYU
- UYW
- UZS
- VES
- VND
- VUV
- WST
- XAF
- XAG
- XAU
- XBA
- XBB
- XBC
- XBD
- XCD
- XDR
- XOF
- XPD
- XPF
- XPT
- XSU
- XTS
- XUA
- XXX
- YER
- ZAR
- ZMW
- ZWL
BillingCode:
type: string
x-go-custom-tag: gorm:"default:''"
BillPeriod:
type: string
x-go-custom-tag: gorm:"default:monthly"
default: monthly
enum:
- daily
- weekly
- bi-weekly
- monthly
- bi-monthly
- quarterly
- semi-annually
- annually
CancelDate:
type: string
x-go-custom-tag: gorm:"type:date;default:2100-12-31"
format: date
ContractEnd:
type: string
x-go-custom-tag: gorm:"type:date;default:2030-12-31"
format: date
ContractStart:
type: string
x-go-custom-tag: gorm:"type:date;default:2019-01-01"
format: date
CustomerId:
type: string
x-go-custom-tag: gorm:"primary_key;unique;default:md5(random()::text || clock_timestamp()::text)::uuid"
DeletedAt:
type: string
x-go-custom-tag: gorm:"type:timestamptz"
x-nullable: true
format: datetime
Discount:
type: number
x-go-custom-tag: gorm:"type:numeric(23,13);default:0.0"
format: double
default: 0.0
EmailBcc:
type: string
x-go-custom-tag: gorm:"default:''"
format: email
EmailCc:
type: string
x-go-custom-tag: gorm:"default:''"
format: email
EmailTo:
type: string
x-go-custom-tag: gorm:"default:''"
format: email
InvoiceMode:
type: string
x-go-custom-tag: gorm:"default:email"
default: email
enum:
- email
- post
IsActive:
type: boolean
x-go-custom-tag: gorm:"default:true"
default: true
Language:
type: string
x-go-custom-tag: gorm:"default:DE"
description: ISO-369-1 alpha-2 language codes
default: DE
enum:
- AA
- AB
- AE
- AF
- AK
- AM
- AN
- AR
- AS
- AV
- AY
- AZ
- BA
- BE
- BG
- BH
- BI
- BM
- BN
- BO
- BR
- BS
- CA
- CE
- CH
- CO
- CR
- CS
- CU
- CV
- CY
- DA
- DE
- DV
- DZ
- EE
- EL
- EN
- EO
- ES
- ET
- EU
- FA
- FF
- FI
- FJ
- FO
- FR
- FY
- GA
- GD
- GL
- GN
- GU
- GV
- HA
- HE
- HI
- HO
- HR
- HT
- HU
- HY
- HZ
- IA
- ID
- IE
- IG
- II
- IK
- IO
- IS
- IT
- IU
- JA
- JV
- KA
- KG
- KI
- KJ
- KK
- KL
- KM
- KN
- KO
- KR
- KS
- KU
- KV
- KW
- KY
- LA
- LB
- LG
- LI
- LN
- LO
- LT
- LU
- LV
- MG
- MH
- MI
- MK
- ML
- MN
- MR
- MS
- MT
- MY
- NA
- NB
- ND
- NE
- NG
- NL
- NN
- "NO"
- NR
- NV
- NY
- OC
- OJ
- OM
- OR
- OS
- PA
- PI
- PL
- PS
- PT
- QU
- RM
- RN
- RO
- RU
- RW
- SA
- SC
- SD
- SE
- SG
- SI
- SK
- SL
- SM
- SN
- SO
- SQ
- SR
- SS
- ST
- SU
- SV
- SW
- TA
- TE
- TG
- TH
- TI
- TK
- TL
- TN
- TO
- TR
- TS
- TT
- TW
- TY
- UG
- UK
- UR
- UZ
- VE
- VI
- VO
- WA
- WO
- XH
- YI
- YO
- ZA
- ZH
- ZU
Name:
type: string
ParentCustomerId:
type: string
PlanId:
type: string
x-go-custom-tag: gorm:"default:'DEFAULT'"
Products:
type: array
x-go-custom-tag: gorm:"-"
items:
$ref: "#/definitions/Product"
ResellerId:
type: string
Product:
type: object
properties:
ApiLink:
type: string
x-go-custom-tag: gorm:"-"
CancelDate:
type: string
x-go-custom-tag: gorm:"type:date;default:2100-12-31"
format: date
default: 2100-12-31
CustomerId:
type: string
DeletedAt:
type: string
x-go-custom-tag: gorm:"type:timestamptz"
x-nullable: true
format: datetime
Discount:
type: number
x-go-custom-tag: gorm:"type:numeric(23,13);default:0.0"
format: double
default: 0.0
Name:
type: string
PlanId:
type: string
x-go-custom-tag: gorm:"default:'DEFAULT'"
ProductId:
type: string
x-go-custom-tag: gorm:"primary_key;unique;default:md5(random()::text || clock_timestamp()::text)::uuid"
Type:
type: string
Reseller:
type: object
properties:
AbacusCode:
type: string
x-go-custom-tag: gorm:"default:''"
Address:
type: string
ApiLink:
type: string
x-go-custom-tag: gorm:"-"
Billable:
type: boolean
x-go-custom-tag: gorm:"default:true"
default: true
BillContact:
type: string
x-go-custom-tag: gorm:"default:''"
BillCurrency:
type: string
x-go-custom-tag: gorm:"default:CHF"
description: ISO-4217 currency code
default: CHF
enum:
- AED
- AFN
- ALL
- AMD
- ANG
- AOA
- ARS
- AUD
- AWG
- AZN
- BAM
- BBD
- BDT
- BGN
- BHD
- BIF
- BMD
- BND
- BOB
- BOV
- BRL
- BSD
- BTN
- BWP
- BYN
- BZD
- CAD
- CDF
- CHE
- CHF
- CHW
- CLF
- CLP
- CNY
- COP
- COU
- CRC
- CUC
- CUP
- CVE
- CZK
- DJF
- DKK
- DOP
- DZD
- EGP
- ERN
- ETB
- EUR
- FJD
- FKP
- GBP
- GEL
- GHS
- GIP
- GMD
- GNF
- GTQ
- GYD
- HKD
- HNL
- HRK
- HTG
- HUF
- IDR
- ILS
- INR
- IQD
- IRR
- ISK
- JMD
- JOD
- JPY
- KES
- KGS
- KHR
- KMF
- KPW
- KRW
- KWD
- KYD
- KZT
- LAK
- LBP
- LKR
- LRD
- LSL
- LYD
- MAD
- MDL
- MGA
- MKD
- MMK
- MNT
- MOP
- MRU
- MUR
- MVR
- MWK
- MXN
- MXV
- MYR
- MZN
- NAD
- NGN
- NIO
- NOK
- NPR
- NZD
- OMR
- PAB
- PEN
- PGK
- PHP
- PKR
- PLN
- PYG
- QAR
- RON
- RSD
- RUB
- RWF
- SAR
- SBD
- SCR
- SDG
- SEK
- SGD
- SHP
- SLL
- SOS
- SRD
- SSP
- STN
- SVC
- SYP
- SZL
- THB
- TJS
- TMT
- TND
- TOP
- TRY
- TTD
- TWD
- TZS
- UAH
- UGX
- USD
- USN
- UYI
- UYU
- UYW
- UZS
- VES
- VND
- VUV
- WST
- XAF
- XAG
- XAU
- XBA
- XBB
- XBC
- XBD
- XCD
- XDR
- XOF
- XPD
- XPF
- XPT
- XSU
- XTS
- XUA
- XXX
- YER
- ZAR
- ZMW
- ZWL
BillingCode:
type: string
x-go-custom-tag: gorm:"default:''"
BillPeriod:
type: string
x-go-custom-tag: gorm:"default:monthly"
default: monthly
enum:
- daily
- weekly
- bi-weekly
- monthly
- bi-monthly
- quarterly
- semi-annually
- annually
CancelDate:
type: string
x-go-custom-tag: gorm:"type:date;default:2100-12-31"
format: date
ContractEnd:
type: string
x-go-custom-tag: gorm:"type:date;default:2030-12-31"
format: date
ContractStart:
type: string
x-go-custom-tag: gorm:"type:date;default:2019-01-01"
format: date
Customers:
type: array
x-go-custom-tag: gorm:"-"
items:
$ref: "#/definitions/Customer"
DeletedAt:
type: string
x-go-custom-tag: gorm:"type:timestamptz"
x-nullable: true
format: datetime
EmailBcc:
type: string
x-go-custom-tag: gorm:"default:''"
format: email
EmailCc:
type: string
x-go-custom-tag: gorm:"default:''"
format: email
EmailTo:
type: string
x-go-custom-tag: gorm:"default:''"
format: email
Discount:
type: number
x-go-custom-tag: gorm:"type:numeric(23,13);default:0.0"
format: double
default: 0.0
InvoiceMode:
type: string
x-go-custom-tag: gorm:"default:email"
default: email
enum:
- email
- post
IsActive:
type: boolean
x-go-custom-tag: gorm:"default:true"
default: true
Language:
type: string
x-go-custom-tag: gorm:"default:DE"
description: ISO-369-1 alpha-2 language codes
default: DE
enum:
- AA
- AB
- AE
- AF
- AK
- AM
- AN
- AR
- AS
- AV
- AY
- AZ
- BA
- BE
- BG
- BH
- BI
- BM
- BN
- BO
- BR
- BS
- CA
- CE
- CH
- CO
- CR
- CS
- CU
- CV
- CY
- DA
- DE
- DV
- DZ
- EE
- EL
- EN
- EO
- ES
- ET
- EU
- FA
- FF
- FI
- FJ
- FO
- FR
- FY
- GA
- GD
- GL
- GN
- GU
- GV
- HA
- HE
- HI
- HO
- HR
- HT
- HU
- HY
- HZ
- IA
- ID
- IE
- IG
- II
- IK
- IO
- IS
- IT
- IU
- JA
- JV
- KA
- KG
- KI
- KJ
- KK
- KL
- KM
- KN
- KO
- KR
- KS
- KU
- KV
- KW
- KY
- LA
- LB
- LG
- LI
- LN
- LO
- LT
- LU
- LV
- MG
- MH
- MI
- MK
- ML
- MN
- MR
- MS
- MT
- MY
- NA
- NB
- ND
- NE
- NG
- NL
- NN
- "NO"
- NR
- NV
- NY
- OC
- OJ
- OM
- OR
- OS
- PA
- PI
- PL
- PS
- PT
- QU
- RM
- RN
- RO
- RU
- RW
- SA
- SC
- SD
- SE
- SG
- SI
- SK
- SL
- SM
- SN
- SO
- SQ
- SR
- SS
- ST
- SU
- SV
- SW
- TA
- TE
- TG
- TH
- TI
- TK
- TL
- TN
- TO
- TR
- TS
- TT
- TW
- TY
- UG
- UK
- UR
- UZ
- VE
- VI
- VO
- WA
- WO
- XH
- YI
- YO
- ZA
- ZH
- ZU
Name:
type: string
ParentResellerId:
type: string
x-go-custom-tag: gorm:"default:''"
PlanId:
type: string
x-go-custom-tag: gorm:"default:'DEFAULT'"
ResellerId:
type: string
x-go-custom-tag: gorm:"primary_key;unique;default:md5(random()::text || clock_timestamp()::text)::uuid"