Enhance OpenAPI documentation for configuration endpoints with detailed success messages and add Bird configuration endpoints

This commit is contained in:
Jeppe Bundgaard
2026-02-27 01:58:03 +01:00
parent 78587485df
commit 6c2b2b7d96
+719 -35
View File
@@ -6494,13 +6494,23 @@ paths:
summary: Get e-conomic config
operationId: getEconomicConfig
responses:
'200': {description: Success}
'200':
description: e-conomic configuration retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/EconomicConfigListResponse'
post:
tags: [Config]
summary: Update e-conomic config
operationId: updateEconomicConfig
responses:
'200': {description: Success}
'200':
description: e-conomic configuration updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ModuleConfigUpdateResponse'
/reCAPTCHA/config:
get:
@@ -6508,13 +6518,23 @@ paths:
summary: Get reCAPTCHA config
operationId: getRecaptchaConfig
responses:
'200': {description: Success}
'200':
description: reCAPTCHA configuration retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/RecaptchaConfigListResponse'
post:
tags: [Config]
summary: Update reCAPTCHA config
operationId: updateRecaptchaConfig
responses:
'200': {description: Success}
'200':
description: reCAPTCHA configuration updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ModuleConfigUpdateResponse'
/email/config:
get:
@@ -6522,13 +6542,23 @@ paths:
summary: Get email config
operationId: getEmailConfig
responses:
'200': {description: Success}
'200':
description: Email configuration retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/EmailConfigListResponse'
post:
tags: [Config]
summary: Update email config
operationId: updateEmailConfig
responses:
'200': {description: Success}
'200':
description: Email configuration updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ModuleConfigUpdateResponse'
/email/config/test:
post:
@@ -6536,7 +6566,12 @@ paths:
summary: Test email config
operationId: testEmailConfig
responses:
'200': {description: Success}
'200':
description: Email configuration test completed
content:
application/json:
schema:
$ref: '#/components/schemas/ModuleConfigTestResponse'
/backups/config:
get:
@@ -6544,13 +6579,47 @@ paths:
summary: Get backups config
operationId: getBackupsConfig
responses:
'200': {description: Success}
'200':
description: Backups configuration retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/BackupsConfigListResponse'
post:
tags: [Config]
summary: Update backups config
operationId: updateBackupsConfig
responses:
'200': {description: Success}
'200':
description: Backups configuration updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ModuleConfigUpdateResponse'
/bird/config:
get:
tags: [Config]
summary: Get Bird config
operationId: getBirdConfig
responses:
'200':
description: Bird configuration retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/BirdConfigListResponse'
post:
tags: [Config]
summary: Update Bird config
operationId: updateBirdConfig
responses:
'200':
description: Bird configuration updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ModuleConfigUpdateResponse'
/motorapi/config:
get:
@@ -6558,13 +6627,23 @@ paths:
summary: Get MotorAPI config
operationId: getMotorApiConfig
responses:
'200': {description: Success}
'200':
description: MotorAPI configuration retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/MotorApiConfigListResponse'
post:
tags: [Config]
summary: Update MotorAPI config
operationId: updateMotorApiConfig
responses:
'200': {description: Success}
'200':
description: MotorAPI configuration updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ModuleConfigUpdateResponse'
/stripe/config:
get:
@@ -6572,13 +6651,23 @@ paths:
summary: Get Stripe config
operationId: getStripeConfig
responses:
'200': {description: Success}
'200':
description: Stripe configuration retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/StripeConfigListResponse'
post:
tags: [Config]
summary: Update Stripe config
operationId: updateStripeConfig
responses:
'200': {description: Success}
'200':
description: Stripe configuration updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ModuleConfigUpdateResponse'
/fxratesapi/config:
get:
@@ -6586,13 +6675,23 @@ paths:
summary: Get FXRatesAPI config
operationId: getFxRatesApiConfig
responses:
'200': {description: Success}
'200':
description: FXRatesAPI configuration retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/FxRatesApiConfigListResponse'
post:
tags: [Config]
summary: Update FXRatesAPI config
operationId: updateFxRatesApiConfig
responses:
'200': {description: Success}
'200':
description: FXRatesAPI configuration updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ModuleConfigUpdateResponse'
/gatewayapi/config:
get:
@@ -6600,13 +6699,23 @@ paths:
summary: Get GatewayAPI config
operationId: getGatewayApiConfig
responses:
'200': {description: Success}
'200':
description: GatewayAPI configuration retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/GatewayApiConfigListResponse'
post:
tags: [Config]
summary: Update GatewayAPI config
operationId: updateGatewayApiConfig
responses:
'200': {description: Success}
'200':
description: GatewayAPI configuration updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ModuleConfigUpdateResponse'
/xlvask/config:
get:
@@ -6614,13 +6723,23 @@ paths:
summary: Get XLVask config
operationId: getXlvaskConfig
responses:
'200': {description: Success}
'200':
description: XLVask configuration retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/XlvaskConfigListResponse'
post:
tags: [Config]
summary: Update XLVask config
operationId: updateXlvaskConfig
responses:
'200': {description: Success}
'200':
description: XLVask configuration updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ModuleConfigUpdateResponse'
/entra/config:
get:
@@ -6628,13 +6747,23 @@ paths:
summary: Get Entra config
operationId: getEntraConfig
responses:
'200': {description: Success}
'200':
description: Entra configuration retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/EntraConfigListResponse'
post:
tags: [Config]
summary: Update Entra config
operationId: updateEntraConfig
responses:
'200': {description: Success}
'200':
description: Entra configuration updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ModuleConfigUpdateResponse'
/limble/config:
get:
@@ -6642,13 +6771,23 @@ paths:
summary: Get Limble config
operationId: getLimbleConfig
responses:
'200': {description: Success}
'200':
description: Limble configuration retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/LimbleConfigListResponse'
post:
tags: [Config]
summary: Update Limble config
operationId: updateLimbleConfig
responses:
'200': {description: Success}
'200':
description: Limble configuration updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ModuleConfigUpdateResponse'
/ocrspace/config:
get:
@@ -6656,13 +6795,23 @@ paths:
summary: Get OcrSpace config
operationId: getOcrSpaceConfig
responses:
'200': {description: Success}
'200':
description: OcrSpace configuration retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/OcrSpaceConfigListResponse'
post:
tags: [Config]
summary: Update OcrSpace config
operationId: updateOcrSpaceConfig
responses:
'200': {description: Success}
'200':
description: OcrSpace configuration updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ModuleConfigUpdateResponse'
/openai/config:
get:
@@ -6670,13 +6819,23 @@ paths:
summary: Get OpenAI config
operationId: getOpenAiConfig
responses:
'200': {description: Success}
'200':
description: OpenAI configuration retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/OpenAiConfigListResponse'
post:
tags: [Config]
summary: Update OpenAI config
operationId: updateOpenAiConfig
responses:
'200': {description: Success}
'200':
description: OpenAI configuration updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ModuleConfigUpdateResponse'
/licenseplaterecognizer/config:
get:
@@ -6684,13 +6843,23 @@ paths:
summary: Get LicensePlateRecognizer config
operationId: getLicensePlateRecognizerConfig
responses:
'200': {description: Success}
'200':
description: LicensePlateRecognizer configuration retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/LicensePlateRecognizerConfigListResponse'
post:
tags: [Config]
summary: Update LicensePlateRecognizer config
operationId: updateLicensePlateRecognizerConfig
responses:
'200': {description: Success}
'200':
description: LicensePlateRecognizer configuration updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ModuleConfigUpdateResponse'
/virkdata/config:
get:
@@ -6698,13 +6867,23 @@ paths:
summary: Get Virkdata config
operationId: getVirkdataConfig
responses:
'200': {description: Success}
'200':
description: Virkdata configuration retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/VirkdataConfigListResponse'
post:
tags: [Config]
summary: Update Virkdata config
operationId: updateVirkdataConfig
responses:
'200': {description: Success}
'200':
description: Virkdata configuration updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ModuleConfigUpdateResponse'
/shelly/config:
get:
@@ -6712,13 +6891,23 @@ paths:
summary: Get Shelly config
operationId: getShellyConfig
responses:
'200': {description: Success}
'200':
description: Shelly configuration retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ShellyConfigListResponse'
post:
tags: [Config]
summary: Update Shelly config
operationId: updateShellyConfig
responses:
'200': {description: Success}
'200':
description: Shelly configuration updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ModuleConfigUpdateResponse'
/selfserve/config:
get:
@@ -6731,7 +6920,7 @@ paths:
content:
application/json:
schema:
$ref: '#/components/schemas/SelfServeConfig'
$ref: '#/components/schemas/SelfServeConfigListResponse'
post:
tags: [Config]
summary: Update Self-Serve config
@@ -6748,7 +6937,7 @@ paths:
content:
application/json:
schema:
$ref: '#/components/schemas/SelfServeConfig'
$ref: '#/components/schemas/ModuleConfigUpdateResponse'
/branding:
get:
@@ -7346,6 +7535,501 @@ components:
type: integer
description: HTTP status code
ModuleConfigValue:
oneOf:
- type: string
- type: integer
- type: number
- type: boolean
- type: array
items: {}
- type: object
additionalProperties: true
nullable: true
ModuleConfigEnvelopeBase:
type: object
properties:
success:
type: boolean
meta:
oneOf:
- type: array
items: {}
- type: object
additionalProperties: true
includes:
oneOf:
- type: array
items: {}
- type: object
additionalProperties: true
required:
- success
- meta
- includes
EconomicConfigEntry:
type: object
properties:
module: { type: string, enum: [economic] }
variable: { type: string, enum: [adminFeeMonthly, adminFeeOrder, feeProductId, invoiceLayoutNumber, paymentTermsNumber] }
type: { type: string, enum: [string, int] }
value:
oneOf:
- type: string
- type: integer
required: [module, variable, type, value]
RecaptchaConfigEntry:
type: object
properties:
module: { type: string, enum: [reCAPTCHA] }
variable: { type: string, enum: [enabled, secret_key_v2, site_key_v2] }
type: { type: string, enum: [bool, string] }
value:
oneOf:
- type: boolean
- type: string
required: [module, variable, type, value]
EmailConfigEntry:
type: object
properties:
module: { type: string, enum: [Email] }
variable:
type: string
enum: [enabled, mailersend_api_key, mailersend_enabled, smtp_encryption, smtp_from, smtp_from_name, smtp_host, smtp_password, smtp_port, smtp_reply_to, smtp_reply_to_name, smtp_username]
type: { type: string, enum: [bool, string, int] }
value:
oneOf:
- type: boolean
- type: string
- type: integer
required: [module, variable, type, value]
BackupsConfigEntry:
type: object
properties:
module: { type: string, enum: [Backups] }
variable: { type: string, enum: [enabled] }
type: { type: string, enum: [bool] }
value: { type: boolean }
required: [module, variable, type, value]
BirdConfigEntry:
type: object
properties:
module: { type: string, enum: [bird] }
variable: { type: string, enum: [api_key, enabled, server_url] }
type: { type: string, enum: [string, bool] }
value:
oneOf:
- type: string
- type: boolean
required: [module, variable, type, value]
MotorApiConfigEntry:
type: object
properties:
module: { type: string, enum: [motorapi] }
variable: { type: string, enum: [daily_limit, enabled, secret_key] }
type: { type: string, enum: [int, bool, string] }
value:
oneOf:
- type: integer
- type: boolean
- type: string
required: [module, variable, type, value]
StripeConfigEntry:
type: object
properties:
module: { type: string, enum: [Stripe] }
variable: { type: string, enum: [economic_customer_number, enabled, publishable_key, secret_key] }
type: { type: string, enum: [int, bool, string] }
value:
oneOf:
- type: integer
- type: boolean
- type: string
required: [module, variable, type, value]
FxRatesApiConfigEntry:
type: object
properties:
module: { type: string, enum: [fxratesapi] }
variable: { type: string, enum: [daily_limit, enabled, secret_key] }
type: { type: string, enum: [int, bool, string] }
value:
oneOf:
- type: integer
- type: boolean
- type: string
required: [module, variable, type, value]
GatewayApiConfigEntry:
type: object
properties:
module: { type: string, enum: [GatewayAPI] }
variable: { type: string, enum: [api_key, api_secret, api_token, enabled, sender] }
type: { type: string, enum: [string, bool] }
value:
oneOf:
- type: string
- type: boolean
required: [module, variable, type, value]
XlvaskConfigEntry:
type: object
properties:
module: { type: string, enum: [xlvask] }
variable: { type: string, enum: [enabled, password, synchronization_enabled, username] }
type: { type: string, enum: [bool, string] }
value:
oneOf:
- type: boolean
- type: string
required: [module, variable, type, value]
EntraConfigEntry:
type: object
properties:
module: { type: string, enum: [Entra] }
variable: { type: string, enum: [enabled, entra_client_id, entra_client_secret, entra_tenant_id] }
type: { type: string, enum: [bool, string] }
value:
oneOf:
- type: boolean
- type: string
required: [module, variable, type, value]
LimbleConfigEntry:
type: object
properties:
module: { type: string, enum: [limble] }
variable: { type: string, enum: [client_id, client_secret, enabled, webhooks_enabled] }
type: { type: string, enum: [string, bool] }
value:
oneOf:
- type: string
- type: boolean
required: [module, variable, type, value]
OcrSpaceConfigEntry:
type: object
properties:
module: { type: string, enum: [ocrSpace] }
variable: { type: string, enum: [api_key, enabled] }
type: { type: string, enum: [string, bool] }
value:
oneOf:
- type: string
- type: boolean
required: [module, variable, type, value]
OpenAiConfigEntry:
type: object
properties:
module: { type: string, enum: [openAI] }
variable: { type: string, enum: [api_key, enabled] }
type: { type: string, enum: [string, bool] }
value:
oneOf:
- type: string
- type: boolean
required: [module, variable, type, value]
LicensePlateRecognizerConfigEntry:
type: object
properties:
module: { type: string, enum: [licenseplaterecognizer] }
variable: { type: string, enum: [api_key, enabled] }
type: { type: string, enum: [string, bool] }
value:
oneOf:
- type: string
- type: boolean
required: [module, variable, type, value]
VirkdataConfigEntry:
type: object
properties:
module: { type: string, enum: [virkdata] }
variable: { type: string, enum: [enabled, monthly_limit, secret_key] }
type: { type: string, enum: [bool, int, string] }
value:
oneOf:
- type: boolean
- type: integer
- type: string
required: [module, variable, type, value]
ShellyConfigEntry:
type: object
properties:
module: { type: string, enum: [shelly] }
variable: { type: string, enum: [enabled, secret_key, server_url] }
type: { type: string, enum: [bool, string] }
value:
oneOf:
- type: boolean
- type: string
required: [module, variable, type, value]
SelfServeConfigEntry:
type: object
properties:
module: { type: string, enum: [selfserve] }
variable: { type: string, enum: [enabled, minute_product] }
type: { type: string, enum: [bool, int] }
value:
oneOf:
- type: boolean
- type: integer
required: [module, variable, type, value]
EconomicConfigListResponse:
allOf:
- $ref: '#/components/schemas/ModuleConfigEnvelopeBase'
- type: object
properties:
data: { type: array, items: { $ref: '#/components/schemas/EconomicConfigEntry' } }
required: [data]
RecaptchaConfigListResponse:
allOf:
- $ref: '#/components/schemas/ModuleConfigEnvelopeBase'
- type: object
properties:
data: { type: array, items: { $ref: '#/components/schemas/RecaptchaConfigEntry' } }
required: [data]
EmailConfigListResponse:
allOf:
- $ref: '#/components/schemas/ModuleConfigEnvelopeBase'
- type: object
properties:
data: { type: array, items: { $ref: '#/components/schemas/EmailConfigEntry' } }
required: [data]
BackupsConfigListResponse:
allOf:
- $ref: '#/components/schemas/ModuleConfigEnvelopeBase'
- type: object
properties:
data: { type: array, items: { $ref: '#/components/schemas/BackupsConfigEntry' } }
required: [data]
BirdConfigListResponse:
allOf:
- $ref: '#/components/schemas/ModuleConfigEnvelopeBase'
- type: object
properties:
data: { type: array, items: { $ref: '#/components/schemas/BirdConfigEntry' } }
required: [data]
MotorApiConfigListResponse:
allOf:
- $ref: '#/components/schemas/ModuleConfigEnvelopeBase'
- type: object
properties:
data: { type: array, items: { $ref: '#/components/schemas/MotorApiConfigEntry' } }
required: [data]
StripeConfigListResponse:
allOf:
- $ref: '#/components/schemas/ModuleConfigEnvelopeBase'
- type: object
properties:
data: { type: array, items: { $ref: '#/components/schemas/StripeConfigEntry' } }
required: [data]
FxRatesApiConfigListResponse:
allOf:
- $ref: '#/components/schemas/ModuleConfigEnvelopeBase'
- type: object
properties:
data: { type: array, items: { $ref: '#/components/schemas/FxRatesApiConfigEntry' } }
required: [data]
GatewayApiConfigListResponse:
allOf:
- $ref: '#/components/schemas/ModuleConfigEnvelopeBase'
- type: object
properties:
data: { type: array, items: { $ref: '#/components/schemas/GatewayApiConfigEntry' } }
required: [data]
XlvaskConfigListResponse:
allOf:
- $ref: '#/components/schemas/ModuleConfigEnvelopeBase'
- type: object
properties:
data: { type: array, items: { $ref: '#/components/schemas/XlvaskConfigEntry' } }
required: [data]
EntraConfigListResponse:
allOf:
- $ref: '#/components/schemas/ModuleConfigEnvelopeBase'
- type: object
properties:
data: { type: array, items: { $ref: '#/components/schemas/EntraConfigEntry' } }
required: [data]
LimbleConfigListResponse:
allOf:
- $ref: '#/components/schemas/ModuleConfigEnvelopeBase'
- type: object
properties:
data: { type: array, items: { $ref: '#/components/schemas/LimbleConfigEntry' } }
required: [data]
OcrSpaceConfigListResponse:
allOf:
- $ref: '#/components/schemas/ModuleConfigEnvelopeBase'
- type: object
properties:
data: { type: array, items: { $ref: '#/components/schemas/OcrSpaceConfigEntry' } }
required: [data]
OpenAiConfigListResponse:
allOf:
- $ref: '#/components/schemas/ModuleConfigEnvelopeBase'
- type: object
properties:
data: { type: array, items: { $ref: '#/components/schemas/OpenAiConfigEntry' } }
required: [data]
LicensePlateRecognizerConfigListResponse:
allOf:
- $ref: '#/components/schemas/ModuleConfigEnvelopeBase'
- type: object
properties:
data: { type: array, items: { $ref: '#/components/schemas/LicensePlateRecognizerConfigEntry' } }
required: [data]
VirkdataConfigListResponse:
allOf:
- $ref: '#/components/schemas/ModuleConfigEnvelopeBase'
- type: object
properties:
data: { type: array, items: { $ref: '#/components/schemas/VirkdataConfigEntry' } }
required: [data]
ShellyConfigListResponse:
allOf:
- $ref: '#/components/schemas/ModuleConfigEnvelopeBase'
- type: object
properties:
data: { type: array, items: { $ref: '#/components/schemas/ShellyConfigEntry' } }
required: [data]
SelfServeConfigListResponse:
allOf:
- $ref: '#/components/schemas/ModuleConfigEnvelopeBase'
- type: object
properties:
data: { type: array, items: { $ref: '#/components/schemas/SelfServeConfigEntry' } }
required: [data]
ModuleConfigEntry:
type: object
properties:
module:
type: string
description: Module name
variable:
type: string
description: Configuration variable key
type:
type: string
description: Stored value type in module_config
value:
$ref: '#/components/schemas/ModuleConfigValue'
required:
- module
- variable
- type
- value
ModuleConfigListResponse:
type: object
properties:
success:
type: boolean
data:
type: array
items:
$ref: '#/components/schemas/ModuleConfigEntry'
meta:
oneOf:
- type: array
items: {}
- type: object
additionalProperties: true
includes:
oneOf:
- type: array
items: {}
- type: object
additionalProperties: true
required:
- success
- data
- meta
- includes
ModuleConfigUpdateResponse:
type: object
properties:
success:
type: boolean
data:
type: boolean
meta:
oneOf:
- type: array
items: {}
- type: object
additionalProperties: true
includes:
oneOf:
- type: array
items: {}
- type: object
additionalProperties: true
required:
- success
- data
- meta
- includes
ModuleConfigTestResponse:
type: object
properties:
success:
type: boolean
data:
type: string
meta:
oneOf:
- type: array
items: {}
- type: object
additionalProperties: true
includes:
oneOf:
- type: array
items: {}
- type: object
additionalProperties: true
required:
- success
- data
- meta
- includes
User:
type: object
properties: