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/billing/restapi/embedded_spec.go

2624 lines
63 KiB

// Code generated by go-swagger; DO NOT EDIT.
package restapi
// This file was generated by the swagger tool.
// Editing this file might prove futile when you re-run the swagger generate command
import (
"encoding/json"
)
var (
// SwaggerJSON embedded version of the swagger document used at generation time
SwaggerJSON json.RawMessage
// FlatSwaggerJSON embedded flattened version of the swagger document used at generation time
FlatSwaggerJSON json.RawMessage
)
func init() {
SwaggerJSON = json.RawMessage([]byte(`{
"schemes": [
"http",
"https"
],
"swagger": "2.0",
"info": {
"description": "An API which supports creation, deletion, listing etc of Billing",
"title": "Billing Management API",
"contact": {
"email": "diego@cyclops-labs.io"
},
"license": {
"name": "Apache 2.0",
"url": "http://www.apache.org/licenses/LICENSE-2.0.html"
},
"version": "1.0.0"
},
"host": "localhost:8000",
"basePath": "/api/v1.0",
"paths": {
"/billrun": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"bulkManagement"
],
"summary": "Show the status report of the billruns present in the system",
"operationId": "ListBillRuns",
"parameters": [
{
"type": "integer",
"description": "Amount of months to have in the report",
"name": "months",
"in": "query"
}
],
"responses": {
"200": {
"description": "Description of a successfully operation",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/BillRunList"
}
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
},
"put": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"bulkManagement"
],
"summary": "Try to re-run the failed invoices in all the billruns.",
"operationId": "ReRunAllBillRuns",
"parameters": [
{
"type": "integer",
"description": "Amount of months to check for failed invoices.",
"name": "months",
"in": "query"
}
],
"responses": {
"202": {
"description": "The request for processing had been added to the queue",
"schema": {
"$ref": "#/definitions/ItemCreatedResponse"
}
},
"404": {
"description": "The invoice id provided doesn't exist",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
}
},
"/billrun/organization/{id}": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"bulkManagement"
],
"summary": "Show the status report of the billruns present in the system",
"operationId": "ListBillRunsByOrganization",
"parameters": [
{
"type": "string",
"description": "Id of the billrun to be re-run.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "Amount of months to have in the report",
"name": "months",
"in": "query"
}
],
"responses": {
"200": {
"description": "Description of a successfully operation",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/BillRunList"
}
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
}
},
"/billrun/{id}": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"bulkManagement"
],
"summary": "Get the status report of the billrun requested",
"operationId": "GetBillRun",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Id of the invoice to be checked",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "Description of a successfully operation",
"schema": {
"$ref": "#/definitions/BillRunReport"
}
},
"404": {
"description": "The invoice id provided doesn't exist",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
},
"put": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"bulkManagement"
],
"summary": "Try to re-run the failed invoices in the billrun.",
"operationId": "ReRunBillRun",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Id of the billrun to be re-run.",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"202": {
"description": "The request for processing had been added to the queue",
"schema": {
"$ref": "#/definitions/ItemCreatedResponse"
}
},
"404": {
"description": "The invoice id provided doesn't exist",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
}
},
"/invoice": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"invoiceManagement"
],
"summary": "Summary for this endpoint",
"operationId": "ListInvoices",
"parameters": [
{
"description": "Invoice model partially filled to use for the filtering of the invoices",
"name": "model",
"in": "body",
"schema": {
"$ref": "#/definitions/Invoice"
}
}
],
"responses": {
"200": {
"description": "Description of a successfully operation",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/Invoice"
}
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
}
},
"/invoice/customer": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"invoiceManagement"
],
"summary": "Retrieve customers' invoices",
"operationId": "ListCustomerInvoices",
"responses": {
"200": {
"description": "Description of a successfully operation",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/Invoice"
}
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
}
},
"/invoice/customer/{id}": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"invoiceManagement"
],
"summary": "Retrieve invoices by customer id",
"operationId": "GetInvoicesByCustomer",
"parameters": [
{
"type": "string",
"description": "Id of the account to be checked",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "Amount of months to have in the report",
"name": "months",
"in": "query"
}
],
"responses": {
"200": {
"description": "Description of a successfully operation",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/Invoice"
}
}
},
"404": {
"description": "The invoice id provided doesn't exist",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
},
"post": {
"security": [
{
"Keycloak": [
"admin"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"invoiceManagement"
],
"summary": "Generate invoice for the provided customer for the provided time window or last period",
"operationId": "GenerateInvoiceForCustomer",
"parameters": [
{
"type": "string",
"description": "Id of the account to be checked",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"format": "datetime",
"description": "Datetime from which to generate the invoice",
"name": "from",
"in": "query"
},
{
"type": "string",
"format": "datetime",
"description": "Datetime until which to generate the invoice",
"name": "to",
"in": "query"
}
],
"responses": {
"202": {
"description": "The request for processing had been added to the queue",
"schema": {
"$ref": "#/definitions/ItemCreatedResponse"
}
},
"400": {
"description": "Invalid input, object invalid",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
}
},
"/invoice/reseller": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"invoiceManagement"
],
"summary": "Retrieve resellers' invoices",
"operationId": "ListResellerInvoices",
"responses": {
"200": {
"description": "Description of a successfully operation",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/Invoice"
}
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
}
},
"/invoice/reseller/{id}": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"invoiceManagement"
],
"summary": "Retrieve invoices by reseller id",
"operationId": "GetInvoicesByReseller",
"parameters": [
{
"type": "string",
"description": "Id of the account to be checked",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "Amount of months to have in the report",
"name": "months",
"in": "query"
}
],
"responses": {
"200": {
"description": "Description of a successfully operation",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/Invoice"
}
}
},
"404": {
"description": "The invoice id provided doesn't exist",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
},
"post": {
"security": [
{
"Keycloak": [
"admin"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"invoiceManagement"
],
"summary": "Generate invoice for the provided reseller for the provided time window or last period",
"operationId": "GenerateInvoiceForReseller",
"parameters": [
{
"type": "string",
"description": "Id of the account to be checked",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"format": "datetime",
"description": "Datetime from which to generate the invoice",
"name": "from",
"in": "query"
},
{
"type": "string",
"format": "datetime",
"description": "Datetime until which to generate the invoice",
"name": "to",
"in": "query"
}
],
"responses": {
"202": {
"description": "The request for processing had been added to the queue",
"schema": {
"$ref": "#/definitions/ItemCreatedResponse"
}
},
"400": {
"description": "Invalid input, object invalid",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
}
},
"/invoice/{id}": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"invoiceManagement"
],
"summary": "Summary for this endpoint",
"operationId": "GetInvoice",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Id of the invoice to be checked",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "Description of a successfully operation",
"schema": {
"$ref": "#/definitions/Invoice"
}
},
"404": {
"description": "The invoice id provided doesn't exist",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
}
},
"/status": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"statusManagement"
],
"summary": "Basic status of the system",
"operationId": "showStatus",
"responses": {
"200": {
"description": "Status information of the system",
"schema": {
"$ref": "#/definitions/Status"
}
}
}
}
},
"/status/{id}": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"statusManagement"
],
"summary": "Basic status of the system",
"operationId": "getStatus",
"parameters": [
{
"enum": [
"kafka-receiver",
"kafka-sender",
"status",
"trigger",
"bulk",
"invoice"
],
"type": "string",
"description": "Id of the endpoint to be checked",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "Status information of the system",
"schema": {
"$ref": "#/definitions/Status"
}
},
"404": {
"description": "The endpoint provided doesn't exist",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
}
},
"/trigger/periodicrun": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"triggerManagement"
],
"summary": "Periodic run of the bulk generation of invoices",
"operationId": "periodicRun",
"parameters": [
{
"type": "string",
"format": "datetime",
"description": "Datetime to override the time.now() to simulate other days",
"name": "today",
"in": "query"
}
],
"responses": {
"202": {
"description": "The request for processing the periodic run had been added to the queue",
"schema": {
"$ref": "#/definitions/ItemCreatedResponse"
}
}
}
}
}
},
"definitions": {
"BillRun": {
"type": "object",
"properties": {
"AmountInvoiced": {
"type": "number",
"format": "double",
"default": 0,
"x-go-custom-tag": "gorm:\"type:numeric(23,13)\""
},
"CreationTimestamp": {
"type": "string",
"format": "date-time",
"x-go-custom-tag": "gorm:\"type:timestamptz\""
},
"ExecutionType": {
"type": "string"
},
"ID": {
"type": "string",
"format": "uuid",
"x-go-custom-tag": "gorm:\"type:uuid;primary_key;unique;default:md5(random()::text || clock_timestamp()::text)::uuid\""
},
"InvoicesCount": {
"type": "integer"
},
"InvoicesErrorCount": {
"type": "integer"
},
"InvoicesErrorList": {
"x-go-custom-tag": "gorm:\"type:text[]\"",
"$ref": "#/definitions/StringArray"
},
"InvoicesList": {
"type": "array",
"items": {
"$ref": "#/definitions/InvoiceMetadata"
},
"x-go-custom-tag": "gorm:\"-\""
},
"InvoicesProcessedCount": {
"type": "integer"
},
"OrganizationsInvolved": {
"x-go-custom-tag": "gorm:\"type:text[]\"",
"$ref": "#/definitions/StringArray"
},
"Status": {
"type": "string",
"default": "QUEUED",
"enum": [
"ERROR",
"FINISHED",
"PROCESSING",
"QUEUED"
],
"x-go-custom-tag": "gorm:\"default:QUEUED\""
}
}
},
"BillRunList": {
"type": "object",
"properties": {
"AmountInvoiced": {
"type": "number",
"format": "double",
"default": 0
},
"CreationTimestamp": {
"type": "string",
"format": "date-time"
},
"ID": {
"type": "string",
"format": "uuid"
},
"InvoicesCount": {
"type": "integer"
},
"InvoicesErrorCount": {
"type": "integer"
},
"InvoicesErrorList": {
"x-go-custom-tag": "gorm:\"type:text[]\"",
"$ref": "#/definitions/StringArray"
},
"InvoicesProcessedCount": {
"type": "integer"
},
"OrganizationsInvolved": {
"x-go-custom-tag": "gorm:\"type:text[]\"",
"$ref": "#/definitions/StringArray"
},
"Status": {
"type": "string",
"default": "QUEUED",
"enum": [
"ERROR",
"FINISHED",
"PROCESSING",
"QUEUED"
]
}
}
},
"BillRunReport": {
"type": "object",
"properties": {
"AmountInvoiced": {
"type": "number",
"format": "double",
"default": 0
},
"CreationTimestamp": {
"type": "string",
"format": "date-time"
},
"ID": {
"type": "string",
"format": "uuid"
},
"InvoicesCount": {
"type": "integer"
},
"InvoicesErrorCount": {
"type": "integer"
},
"InvoicesErrorList": {
"x-go-custom-tag": "gorm:\"type:text[]\"",
"$ref": "#/definitions/StringArray"
},
"InvoicesList": {
"type": "array",
"items": {
"$ref": "#/definitions/InvoiceMetadata"
},
"x-go-custom-tag": "gorm:\"-\""
},
"InvoicesProcessedCount": {
"type": "integer"
},
"Status": {
"type": "string",
"default": "QUEUED",
"enum": [
"ERROR",
"FINISHED",
"PROCESSING",
"QUEUED"
]
}
}
},
"ErrorResponse": {
"type": "object",
"required": [
"errorString"
],
"properties": {
"errorString": {
"type": "string"
}
}
},
"Invoice": {
"type": "object",
"properties": {
"AmountInvoiced": {
"type": "number",
"format": "double",
"default": 0,
"x-go-custom-tag": "gorm:\"type:numeric(23,13)\""
},
"BillRunID": {
"type": "string",
"format": "uuid"
},
"BillingContact": {
"type": "string"
},
"Currency": {
"type": "string",
"default": "CHF",
"enum": [
"CHF",
"EUR",
"USD"
]
},
"GenerationTimestamp": {
"type": "string",
"format": "date-time",
"x-go-custom-tag": "gorm:\"type:timestamptz\""
},
"ID": {
"type": "string",
"format": "uuid",
"x-go-custom-tag": "gorm:\"type:uuid;primary_key;unique;default:md5(random()::text || clock_timestamp()::text)::uuid\""
},
"Items": {
"x-go-custom-tag": "gorm:\"type:jsonb\"",
"$ref": "#/definitions/Metadata"
},
"OrganizationID": {
"type": "string"
},
"OrganizationName": {
"type": "string"
},
"OrganizationType": {
"type": "string"
},
"PaymentDeadline": {
"type": "string",
"format": "date",
"x-go-custom-tag": "gorm:\"type:date\""
},
"PaymentStatus": {
"type": "string",
"default": "UNPAID",
"enum": [
"CANCELLED",
"PAID",
"UNPAID"
]
},
"PeriodEndDate": {
"type": "string",
"format": "date",
"x-go-custom-tag": "gorm:\"type:date\""
},
"PeriodStartDate": {
"type": "string",
"format": "date",
"x-go-custom-tag": "gorm:\"type:date\""
},
"Status": {
"type": "string",
"default": "NOT_PROCESSED",
"enum": [
"ERROR",
"FINISHED",
"NOT_PROCESSED",
"PROCESSING"
],
"x-go-custom-tag": "gorm:\"default:NOT_PROCESSED\""
}
}
},
"InvoiceMetadata": {
"type": "object",
"properties": {
"AmountInvoiced": {
"type": "number",
"format": "double",
"default": 0
},
"Currency": {
"type": "string",
"default": "CHF",
"enum": [
"CHF",
"EUR",
"USD"
]
},
"ID": {
"type": "string",
"format": "uuid"
},
"OrganizationID": {
"type": "string"
},
"OrganizationName": {
"type": "string"
},
"PaymentDeadline": {
"type": "string",
"format": "date"
},
"PaymentStatus": {
"type": "string",
"default": "UNPAID",
"enum": [
"CANCELLED",
"PAID",
"UNPAID"
]
},
"PeriodEndDate": {
"type": "string",
"format": "date"
},
"PeriodStartDate": {
"type": "string",
"format": "date"
},
"Status": {
"type": "string",
"default": "NOT_PROCESSED",
"enum": [
"ERROR",
"FINISHED",
"NOT_PROCESSED",
"PROCESSING"
]
}
}
},
"ItemCreatedResponse": {
"properties": {
"ApiLink": {
"type": "string"
},
"Message": {
"type": "string"
}
}
},
"Metadata": {
"type": "object",
"x-go-type": {
"import": {
"package": "gitlab.com/cyclops-utilities/datamodels"
},
"type": "JSONdb"
}
},
"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"
}
}
},
"StringArray": {
"x-go-type": {
"import": {
"package": "github.com/lib/pq"
},
"type": "StringArray"
}
}
},
"securityDefinitions": {
"APIKeyHeader": {
"type": "apiKey",
"name": "X-API-KEY",
"in": "header"
},
"APIKeyParam": {
"type": "apiKey",
"name": "api_key",
"in": "query"
},
"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"
}
}
},
"security": [
{
"Keycloak": [
"user",
"admin"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"tags": [
{
"description": "Actions relating to the reporting of the state of the service",
"name": "statusManagement"
},
{
"description": "Actions relating to the periodics actions to be triggered in the system",
"name": "triggerManagement"
},
{
"description": "Actions relating to the bulk generations/retrieval of invoices.",
"name": "bulkManagement"
},
{
"description": "Actions relating to the generation and retrieval of invoices.",
"name": "invoiceManagement"
}
]
}`))
FlatSwaggerJSON = json.RawMessage([]byte(`{
"schemes": [
"http",
"https"
],
"swagger": "2.0",
"info": {
"description": "An API which supports creation, deletion, listing etc of Billing",
"title": "Billing Management API",
"contact": {
"email": "diego@cyclops-labs.io"
},
"license": {
"name": "Apache 2.0",
"url": "http://www.apache.org/licenses/LICENSE-2.0.html"
},
"version": "1.0.0"
},
"host": "localhost:8000",
"basePath": "/api/v1.0",
"paths": {
"/billrun": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"bulkManagement"
],
"summary": "Show the status report of the billruns present in the system",
"operationId": "ListBillRuns",
"parameters": [
{
"type": "integer",
"description": "Amount of months to have in the report",
"name": "months",
"in": "query"
}
],
"responses": {
"200": {
"description": "Description of a successfully operation",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/BillRunList"
}
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
},
"put": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"bulkManagement"
],
"summary": "Try to re-run the failed invoices in all the billruns.",
"operationId": "ReRunAllBillRuns",
"parameters": [
{
"type": "integer",
"description": "Amount of months to check for failed invoices.",
"name": "months",
"in": "query"
}
],
"responses": {
"202": {
"description": "The request for processing had been added to the queue",
"schema": {
"$ref": "#/definitions/ItemCreatedResponse"
}
},
"404": {
"description": "The invoice id provided doesn't exist",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
}
},
"/billrun/organization/{id}": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"bulkManagement"
],
"summary": "Show the status report of the billruns present in the system",
"operationId": "ListBillRunsByOrganization",
"parameters": [
{
"type": "string",
"description": "Id of the billrun to be re-run.",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "Amount of months to have in the report",
"name": "months",
"in": "query"
}
],
"responses": {
"200": {
"description": "Description of a successfully operation",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/BillRunList"
}
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
}
},
"/billrun/{id}": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"bulkManagement"
],
"summary": "Get the status report of the billrun requested",
"operationId": "GetBillRun",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Id of the invoice to be checked",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "Description of a successfully operation",
"schema": {
"$ref": "#/definitions/BillRunReport"
}
},
"404": {
"description": "The invoice id provided doesn't exist",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
},
"put": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"bulkManagement"
],
"summary": "Try to re-run the failed invoices in the billrun.",
"operationId": "ReRunBillRun",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Id of the billrun to be re-run.",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"202": {
"description": "The request for processing had been added to the queue",
"schema": {
"$ref": "#/definitions/ItemCreatedResponse"
}
},
"404": {
"description": "The invoice id provided doesn't exist",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
}
},
"/invoice": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"invoiceManagement"
],
"summary": "Summary for this endpoint",
"operationId": "ListInvoices",
"parameters": [
{
"description": "Invoice model partially filled to use for the filtering of the invoices",
"name": "model",
"in": "body",
"schema": {
"$ref": "#/definitions/Invoice"
}
}
],
"responses": {
"200": {
"description": "Description of a successfully operation",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/Invoice"
}
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
}
},
"/invoice/customer": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"invoiceManagement"
],
"summary": "Retrieve customers' invoices",
"operationId": "ListCustomerInvoices",
"responses": {
"200": {
"description": "Description of a successfully operation",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/Invoice"
}
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
}
},
"/invoice/customer/{id}": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"invoiceManagement"
],
"summary": "Retrieve invoices by customer id",
"operationId": "GetInvoicesByCustomer",
"parameters": [
{
"type": "string",
"description": "Id of the account to be checked",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "Amount of months to have in the report",
"name": "months",
"in": "query"
}
],
"responses": {
"200": {
"description": "Description of a successfully operation",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/Invoice"
}
}
},
"404": {
"description": "The invoice id provided doesn't exist",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
},
"post": {
"security": [
{
"Keycloak": [
"admin"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"invoiceManagement"
],
"summary": "Generate invoice for the provided customer for the provided time window or last period",
"operationId": "GenerateInvoiceForCustomer",
"parameters": [
{
"type": "string",
"description": "Id of the account to be checked",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"format": "datetime",
"description": "Datetime from which to generate the invoice",
"name": "from",
"in": "query"
},
{
"type": "string",
"format": "datetime",
"description": "Datetime until which to generate the invoice",
"name": "to",
"in": "query"
}
],
"responses": {
"202": {
"description": "The request for processing had been added to the queue",
"schema": {
"$ref": "#/definitions/ItemCreatedResponse"
}
},
"400": {
"description": "Invalid input, object invalid",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
}
},
"/invoice/reseller": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"invoiceManagement"
],
"summary": "Retrieve resellers' invoices",
"operationId": "ListResellerInvoices",
"responses": {
"200": {
"description": "Description of a successfully operation",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/Invoice"
}
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
}
},
"/invoice/reseller/{id}": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"invoiceManagement"
],
"summary": "Retrieve invoices by reseller id",
"operationId": "GetInvoicesByReseller",
"parameters": [
{
"type": "string",
"description": "Id of the account to be checked",
"name": "id",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "Amount of months to have in the report",
"name": "months",
"in": "query"
}
],
"responses": {
"200": {
"description": "Description of a successfully operation",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/Invoice"
}
}
},
"404": {
"description": "The invoice id provided doesn't exist",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
},
"post": {
"security": [
{
"Keycloak": [
"admin"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"invoiceManagement"
],
"summary": "Generate invoice for the provided reseller for the provided time window or last period",
"operationId": "GenerateInvoiceForReseller",
"parameters": [
{
"type": "string",
"description": "Id of the account to be checked",
"name": "id",
"in": "path",
"required": true
},
{
"type": "string",
"format": "datetime",
"description": "Datetime from which to generate the invoice",
"name": "from",
"in": "query"
},
{
"type": "string",
"format": "datetime",
"description": "Datetime until which to generate the invoice",
"name": "to",
"in": "query"
}
],
"responses": {
"202": {
"description": "The request for processing had been added to the queue",
"schema": {
"$ref": "#/definitions/ItemCreatedResponse"
}
},
"400": {
"description": "Invalid input, object invalid",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
}
},
"/invoice/{id}": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"invoiceManagement"
],
"summary": "Summary for this endpoint",
"operationId": "GetInvoice",
"parameters": [
{
"type": "string",
"format": "uuid",
"description": "Id of the invoice to be checked",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "Description of a successfully operation",
"schema": {
"$ref": "#/definitions/Invoice"
}
},
"404": {
"description": "The invoice id provided doesn't exist",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
},
"500": {
"description": "Something unexpected happend, error raised",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
}
},
"/status": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"statusManagement"
],
"summary": "Basic status of the system",
"operationId": "showStatus",
"responses": {
"200": {
"description": "Status information of the system",
"schema": {
"$ref": "#/definitions/Status"
}
}
}
}
},
"/status/{id}": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"statusManagement"
],
"summary": "Basic status of the system",
"operationId": "getStatus",
"parameters": [
{
"enum": [
"kafka-receiver",
"kafka-sender",
"status",
"trigger",
"bulk",
"invoice"
],
"type": "string",
"description": "Id of the endpoint to be checked",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "Status information of the system",
"schema": {
"$ref": "#/definitions/Status"
}
},
"404": {
"description": "The endpoint provided doesn't exist",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}
}
}
},
"/trigger/periodicrun": {
"get": {
"security": [
{
"Keycloak": [
"user"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"produces": [
"application/json"
],
"tags": [
"triggerManagement"
],
"summary": "Periodic run of the bulk generation of invoices",
"operationId": "periodicRun",
"parameters": [
{
"type": "string",
"format": "datetime",
"description": "Datetime to override the time.now() to simulate other days",
"name": "today",
"in": "query"
}
],
"responses": {
"202": {
"description": "The request for processing the periodic run had been added to the queue",
"schema": {
"$ref": "#/definitions/ItemCreatedResponse"
}
}
}
}
}
},
"definitions": {
"BillRun": {
"type": "object",
"properties": {
"AmountInvoiced": {
"type": "number",
"format": "double",
"default": 0,
"x-go-custom-tag": "gorm:\"type:numeric(23,13)\""
},
"CreationTimestamp": {
"type": "string",
"format": "date-time",
"x-go-custom-tag": "gorm:\"type:timestamptz\""
},
"ExecutionType": {
"type": "string"
},
"ID": {
"type": "string",
"format": "uuid",
"x-go-custom-tag": "gorm:\"type:uuid;primary_key;unique;default:md5(random()::text || clock_timestamp()::text)::uuid\""
},
"InvoicesCount": {
"type": "integer"
},
"InvoicesErrorCount": {
"type": "integer"
},
"InvoicesErrorList": {
"x-go-custom-tag": "gorm:\"type:text[]\"",
"$ref": "#/definitions/StringArray"
},
"InvoicesList": {
"type": "array",
"items": {
"$ref": "#/definitions/InvoiceMetadata"
},
"x-go-custom-tag": "gorm:\"-\""
},
"InvoicesProcessedCount": {
"type": "integer"
},
"OrganizationsInvolved": {
"x-go-custom-tag": "gorm:\"type:text[]\"",
"$ref": "#/definitions/StringArray"
},
"Status": {
"type": "string",
"default": "QUEUED",
"enum": [
"ERROR",
"FINISHED",
"PROCESSING",
"QUEUED"
],
"x-go-custom-tag": "gorm:\"default:QUEUED\""
}
}
},
"BillRunList": {
"type": "object",
"properties": {
"AmountInvoiced": {
"type": "number",
"format": "double",
"default": 0
},
"CreationTimestamp": {
"type": "string",
"format": "date-time"
},
"ID": {
"type": "string",
"format": "uuid"
},
"InvoicesCount": {
"type": "integer"
},
"InvoicesErrorCount": {
"type": "integer"
},
"InvoicesErrorList": {
"x-go-custom-tag": "gorm:\"type:text[]\"",
"$ref": "#/definitions/StringArray"
},
"InvoicesProcessedCount": {
"type": "integer"
},
"OrganizationsInvolved": {
"x-go-custom-tag": "gorm:\"type:text[]\"",
"$ref": "#/definitions/StringArray"
},
"Status": {
"type": "string",
"default": "QUEUED",
"enum": [
"ERROR",
"FINISHED",
"PROCESSING",
"QUEUED"
]
}
}
},
"BillRunReport": {
"type": "object",
"properties": {
"AmountInvoiced": {
"type": "number",
"format": "double",
"default": 0
},
"CreationTimestamp": {
"type": "string",
"format": "date-time"
},
"ID": {
"type": "string",
"format": "uuid"
},
"InvoicesCount": {
"type": "integer"
},
"InvoicesErrorCount": {
"type": "integer"
},
"InvoicesErrorList": {
"x-go-custom-tag": "gorm:\"type:text[]\"",
"$ref": "#/definitions/StringArray"
},
"InvoicesList": {
"type": "array",
"items": {
"$ref": "#/definitions/InvoiceMetadata"
},
"x-go-custom-tag": "gorm:\"-\""
},
"InvoicesProcessedCount": {
"type": "integer"
},
"Status": {
"type": "string",
"default": "QUEUED",
"enum": [
"ERROR",
"FINISHED",
"PROCESSING",
"QUEUED"
]
}
}
},
"ErrorResponse": {
"type": "object",
"required": [
"errorString"
],
"properties": {
"errorString": {
"type": "string"
}
}
},
"Invoice": {
"type": "object",
"properties": {
"AmountInvoiced": {
"type": "number",
"format": "double",
"default": 0,
"x-go-custom-tag": "gorm:\"type:numeric(23,13)\""
},
"BillRunID": {
"type": "string",
"format": "uuid"
},
"BillingContact": {
"type": "string"
},
"Currency": {
"type": "string",
"default": "CHF",
"enum": [
"CHF",
"EUR",
"USD"
]
},
"GenerationTimestamp": {
"type": "string",
"format": "date-time",
"x-go-custom-tag": "gorm:\"type:timestamptz\""
},
"ID": {
"type": "string",
"format": "uuid",
"x-go-custom-tag": "gorm:\"type:uuid;primary_key;unique;default:md5(random()::text || clock_timestamp()::text)::uuid\""
},
"Items": {
"x-go-custom-tag": "gorm:\"type:jsonb\"",
"$ref": "#/definitions/Metadata"
},
"OrganizationID": {
"type": "string"
},
"OrganizationName": {
"type": "string"
},
"OrganizationType": {
"type": "string"
},
"PaymentDeadline": {
"type": "string",
"format": "date",
"x-go-custom-tag": "gorm:\"type:date\""
},
"PaymentStatus": {
"type": "string",
"default": "UNPAID",
"enum": [
"CANCELLED",
"PAID",
"UNPAID"
]
},
"PeriodEndDate": {
"type": "string",
"format": "date",
"x-go-custom-tag": "gorm:\"type:date\""
},
"PeriodStartDate": {
"type": "string",
"format": "date",
"x-go-custom-tag": "gorm:\"type:date\""
},
"Status": {
"type": "string",
"default": "NOT_PROCESSED",
"enum": [
"ERROR",
"FINISHED",
"NOT_PROCESSED",
"PROCESSING"
],
"x-go-custom-tag": "gorm:\"default:NOT_PROCESSED\""
}
}
},
"InvoiceMetadata": {
"type": "object",
"properties": {
"AmountInvoiced": {
"type": "number",
"format": "double",
"default": 0
},
"Currency": {
"type": "string",
"default": "CHF",
"enum": [
"CHF",
"EUR",
"USD"
]
},
"ID": {
"type": "string",
"format": "uuid"
},
"OrganizationID": {
"type": "string"
},
"OrganizationName": {
"type": "string"
},
"PaymentDeadline": {
"type": "string",
"format": "date"
},
"PaymentStatus": {
"type": "string",
"default": "UNPAID",
"enum": [
"CANCELLED",
"PAID",
"UNPAID"
]
},
"PeriodEndDate": {
"type": "string",
"format": "date"
},
"PeriodStartDate": {
"type": "string",
"format": "date"
},
"Status": {
"type": "string",
"default": "NOT_PROCESSED",
"enum": [
"ERROR",
"FINISHED",
"NOT_PROCESSED",
"PROCESSING"
]
}
}
},
"ItemCreatedResponse": {
"properties": {
"ApiLink": {
"type": "string"
},
"Message": {
"type": "string"
}
}
},
"Metadata": {
"type": "object",
"x-go-type": {
"import": {
"package": "gitlab.com/cyclops-utilities/datamodels"
},
"type": "JSONdb"
}
},
"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"
}
}
},
"StringArray": {
"x-go-type": {
"import": {
"package": "github.com/lib/pq"
},
"type": "StringArray"
}
}
},
"securityDefinitions": {
"APIKeyHeader": {
"type": "apiKey",
"name": "X-API-KEY",
"in": "header"
},
"APIKeyParam": {
"type": "apiKey",
"name": "api_key",
"in": "query"
},
"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"
}
}
},
"security": [
{
"Keycloak": [
"user",
"admin"
]
},
{
"APIKeyHeader": []
},
{
"APIKeyParam": []
}
],
"tags": [
{
"description": "Actions relating to the reporting of the state of the service",
"name": "statusManagement"
},
{
"description": "Actions relating to the periodics actions to be triggered in the system",
"name": "triggerManagement"
},
{
"description": "Actions relating to the bulk generations/retrieval of invoices.",
"name": "bulkManagement"
},
{
"description": "Actions relating to the generation and retrieval of invoices.",
"name": "invoiceManagement"
}
]
}`))
}