diff --git a/big/engine-spec.json b/big/engine-spec.json index 2c4f1db4b..da1129e5b 100644 --- a/big/engine-spec.json +++ b/big/engine-spec.json @@ -1 +1 @@ -{"openapi":"3.0.0","paths":{"/license":{"get":{"operationId":"LicenseController_getLicenseInfo","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LicenseInfo"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"404":{"description":"","content":{"application/json":{"schema":{"default":{"message":"No license","code":"noLicense"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get License Info","tags":["License"]}},"/license/token":{"put":{"operationId":"LicenseController_updateLicenseToken","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LicenseUpdate"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LicenseUpdateResponse"}}}},"400":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License is not valid","code":"newLicenseInvalid"},"type":"#/components/schemas/ErrorResult"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Token is set in env file and cannot be updated","code":"licenseTokenReadonly"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Update License Token","tags":["License"]}},"/health":{"get":{"operationId":"HealthController_ping","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"default":{"message":"pong","version":"2.3.0"}}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Health check","tags":["Health"]}},"/alerts":{"get":{"operationId":"AlertsController_getAll","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ResponseAlert"}}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get all alert rules","tags":["Alert Rules"]},"post":{"operationId":"AlertsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Alert"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseAlert"}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"default":{"message":["property queryId should not exist"]},"type":"#/components/schemas/ValidationError"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Create alert rule","tags":["Alert Rules"]}},"/alerts/{id}":{"put":{"operationId":"AlertsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Alert"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseAlert"}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"default":{"message":["property queryId should not exist"]},"type":"#/components/schemas/ValidationError"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"404":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Alert Rule does not exist","code":"alertRuleNotFound"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Update alert rule","tags":["Alert Rules"]},"delete":{"operationId":"AlertsController_delete","parameters":[{"name":"id","required":true,"in":"path","schema":{}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"boolean"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"404":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Alert Rule does not exist","code":"alertRuleNotFound"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Delete alert rule","tags":["Alert Rules"]},"get":{"operationId":"AlertsController_getById","parameters":[{"name":"id","required":true,"in":"path","schema":{}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ResponseAlert"}}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get alert rule by id","tags":["Alert Rules"]}},"/alerts/{id}/status":{"put":{"operationId":"AlertsController_updateStatus","parameters":[{"name":"id","required":true,"in":"path","schema":{}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertChangeStatus"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseAlert"}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"default":{"message":["property queryId should not exist"]},"type":"#/components/schemas/ValidationError"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"404":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Alert Rule does not exist","code":"alertRuleNotFound"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Update alert rule status","tags":["Alert Rules"]}},"/alerts/{id}/history/last":{"get":{"operationId":"AlertsController_getLastAlertHistory","parameters":[{"name":"id","required":true,"in":"path","schema":{}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseAlertHistory"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"404":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Alert Rule does not exist","code":"alertRuleNotFound"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get last history event for alert rule","tags":["Alert Rules"]}},"/alerts/history":{"get":{"operationId":"AlertsController_getAllHistory","parameters":[{"name":"limit","required":false,"in":"query","schema":{"type":"number"}},{"name":"ids","required":false,"in":"query","schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ResponseAlertHistory"}}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get all history events","tags":["Alert Rules"]}},"/alerts/history/timeline":{"get":{"operationId":"AlertsController_getHistoryTimeline","parameters":[{"name":"limit","required":false,"in":"query","schema":{"type":"number"}},{"name":"ids","required":false,"in":"query","schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ResponseAlertHistory"}}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get history timeline","tags":["Alert Rules"]}},"/grafana/variables/load":{"post":{"operationId":"GrafanaVariablesController_loadDashboardVariables","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDashboardVariables"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardVariableOptionsResponse"}}}},"400":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Dashboard \"[id]\" does not exist.","code":"alertRuleNotFound"},"type":"#/components/schemas/ErrorResult"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get dashboard variables","tags":["Grafana Variables"]}},"/grafana/search":{"get":{"operationId":"GrafanaDataController_searchDashboards","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Search dashboards","tags":["Grafana Proxy"]}},"/grafana/dashboards/uid/{id}":{"get":{"operationId":"GrafanaDataController_getDashboardInfo","parameters":[{"name":"id","required":true,"in":"path","schema":{}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get dashboard by uid","tags":["Grafana Proxy"]}},"/grafana/org/users":{"get":{"operationId":"GrafanaDataController_getUsers","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get all users within the current organization.","tags":["Grafana Proxy"]}},"/environment":{"get":{"operationId":"EnvironmentController_get","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEnvironment"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"summary":"Get Environment Info","tags":["Environment"]}},"/actions":{"get":{"operationId":"ActionsController_getAll","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ResponseAction"}}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get all actions","tags":["Actions"]},"post":{"operationId":"ActionsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Action"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseAction"}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"default":{"message":["property queryId should not exist"]},"type":"#/components/schemas/ValidationError"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Create action","tags":["Actions"]}},"/actions/default":{"get":{"operationId":"ActionsController_getDefault","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseAction"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"404":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Default action does not exist","code":"defaultActionNotFound"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get default action","tags":["Actions"]}},"/actions/{id}":{"put":{"operationId":"ActionsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Action"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseAction"}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"default":{"message":["property queryId should not exist"]},"type":"#/components/schemas/ValidationError"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Update action","tags":["Actions"]},"delete":{"operationId":"ActionsController_delete","parameters":[{"name":"id","required":true,"in":"path","schema":{}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"boolean"}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"default":{"message":["property queryId should not exist"]},"type":"#/components/schemas/ValidationError"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Delete action","tags":["Actions"]},"get":{"operationId":"ActionsController_getById","parameters":[{"name":"id","required":true,"in":"path","schema":{}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseAction"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get action by id","tags":["Actions"]}},"/actions/test":{"post":{"operationId":"ActionsController_test","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Action"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionTestResult"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}},"502":{"description":"","content":{"application/json":{"schema":{"default":{"ok":false,"message":"Error details"}}}}}},"security":[{"Authorization":[]}],"summary":"Test action","tags":["Actions"]}},"/metrics":{"get":{"operationId":"MetricsController_index","parameters":[],"responses":{"200":{"description":"Prometheus metrics","content":{"application/json":{"schema":{"type":"string"}}}}},"summary":"Get prometheus metrics","tags":["Prometheus Metrics"]}}},"info":{"title":"Business Engine API","description":"Business Intelligence for Grafana.","version":"2.3.0","contact":{}},"tags":[],"servers":[],"components":{"securitySchemes":{"Authorization":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"LicenseInfo":{"type":"object","properties":{"limit":{"type":"number"},"used":{"type":"number"},"expiration":{"type":"number","description":"Timestamp ms"},"isCommunity":{"type":"boolean","description":"If Community"}},"required":["limit","used","expiration","isCommunity"]},"LicenseUpdate":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"]},"LicenseUpdateResponse":{"type":"object","properties":{"token":{"type":"string"},"info":{"$ref":"#/components/schemas/LicenseInfo"}},"required":["token","info"]},"AlertEvaluationPattern":{"type":"object","properties":{"field":{"type":"string"},"pattern":{"type":"string"},"type":{"type":"string","enum":["pattern"]}},"required":["field","pattern","type"]},"AlertEvaluationThresholds":{"type":"object","properties":{"type":{"type":"string","enum":["thresholds"]},"colors":{"type":"array","items":{"type":"string"}}},"required":["type","colors"]},"AlertEvaluationAnomaly":{"type":"object","properties":{"type":{"type":"string","enum":["anomaly"]}},"required":["type"]},"AlertVariable":{"type":"object","properties":{"name":{"type":"string"},"multi":{"type":"boolean"},"includeAll":{"type":"boolean"},"value":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}},{"type":"number"},{"type":"array","items":{"type":"number"}},{"type":"null"}]}},"required":["name","multi","value"]},"AlertEvaluationApply":{"type":"object","properties":{"mode":{"type":"string","enum":["all","last","percentage"]},"percentage":{"type":"number"}},"required":["mode","percentage"]},"AlertCondition":{"type":"object","properties":{"id":{"type":"string"},"repeat":{"type":"string","nullable":true},"variables":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/AlertVariable"}},"evaluationType":{"type":"string","enum":["anomaly","pattern","thresholds"]},"evaluation":{"oneOf":[{"$ref":"#/components/schemas/AlertEvaluationPattern"},{"$ref":"#/components/schemas/AlertEvaluationThresholds"},{"$ref":"#/components/schemas/AlertEvaluationAnomaly"}]},"evaluationApply":{"oneOf":[{"$ref":"#/components/schemas/AlertEvaluationApply"}],"allOf":[{"$ref":"#/components/schemas/AlertEvaluationApply"}]}},"required":["id","repeat","evaluationType","evaluation","evaluationApply"]},"AlertConditionOverride":{"type":"object","properties":{"id":{"type":"string"},"evaluation":{"oneOf":[{"$ref":"#/components/schemas/AlertEvaluationPattern"},{"$ref":"#/components/schemas/AlertEvaluationThresholds"},{"$ref":"#/components/schemas/AlertEvaluationAnomaly"}]},"variables":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}},{"type":"number"},{"type":"array","items":{"type":"number"}},{"type":"null"}]}}},"required":["id"]},"AlertTimeRange":{"type":"object","properties":{"from":{"type":"number","description":"Time Offset in seconds"},"to":{"type":"number","description":"Time Offset in seconds"}},"required":["from","to"]},"ResponseAlert":{"type":"object","properties":{"status":{"type":"string","enum":["active","paused"]},"title":{"type":"string"},"dashboardId":{"type":"string"},"panelId":{"type":"number"},"sampleSize":{"type":"number"},"schedule":{"type":"string"},"actionIds":{"type":"array","items":{"type":"string"}},"annotations":{"type":"string","enum":["panel","dashboard","disabled"]},"timeRangeSource":{"type":"string","enum":["dashboard","configured"]},"timeRange":{"$ref":"#/components/schemas/AlertTimeRange"},"condition":{"$ref":"#/components/schemas/AlertCondition"},"conditionOverrides":{"type":"array","items":{"$ref":"#/components/schemas/AlertConditionOverride"}},"id":{"type":"string"},"stateStartDate":{"format":"date-time","type":"string","description":"State Start Date","nullable":true}},"required":["status","title","dashboardId","panelId","sampleSize","schedule","actionIds","annotations","timeRangeSource","condition","conditionOverrides","id","stateStartDate"]},"Alert":{"type":"object","properties":{"status":{"type":"string","enum":["active","paused"]},"title":{"type":"string"},"dashboardId":{"type":"string"},"panelId":{"type":"number"},"sampleSize":{"type":"number"},"schedule":{"type":"string"},"actionIds":{"type":"array","items":{"type":"string"}},"annotations":{"type":"string","enum":["panel","dashboard","disabled"]},"timeRangeSource":{"type":"string","enum":["dashboard","configured"]},"timeRange":{"$ref":"#/components/schemas/AlertTimeRange"},"condition":{"$ref":"#/components/schemas/AlertCondition"},"conditionOverrides":{"type":"array","items":{"$ref":"#/components/schemas/AlertConditionOverride"}}},"required":["status","title","dashboardId","panelId","sampleSize","schedule","actionIds","annotations","timeRangeSource","condition","conditionOverrides"]},"AlertChangeStatus":{"type":"object","properties":{"status":{"type":"string","enum":["active","paused"]}},"required":["status"]},"ResponseAlertHistory":{"type":"object","properties":{"id":{"type":"string"},"alertId":{"type":"string"},"startDate":{"format":"date-time","type":"string"},"endDate":{"format":"date-time","type":"string","nullable":true},"event":{"type":"string"},"prevState":{"type":"string","enum":["scheduled","ok","alerting","error","none"]},"newState":{"type":"string","enum":["scheduled","ok","alerting","error"]},"duration":{"type":"number"},"alertTitle":{"type":"string"}},"required":["id","alertId","startDate","endDate","event","prevState","newState","duration","alertTitle"]},"VariablesTimeRange":{"type":"object","properties":{"from":{"type":"number","description":"Timestamp in ms"},"to":{"type":"number","description":"Timestamp in ms"}},"required":["from","to"]},"GetDashboardVariables":{"type":"object","properties":{"dashboardId":{"type":"string"},"variables":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},"timeRange":{"$ref":"#/components/schemas/VariablesTimeRange"}},"required":["dashboardId","variables"]},"VariableOption":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"]},"DashboardVariableOptionsResponse":{"type":"object","properties":{"options":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/VariableOption"},{"type":"array","items":{"$ref":"#/components/schemas/VariableOption"}}]}}},"required":["options"]},"ResponseEnvironmentMain":{"type":"object","properties":{"serverPort":{"type":"number"},"schedulerPort":{"type":"number"},"nodeId":{"type":"string"},"logLevel":{"type":"string","enum":["log","error","warn","debug","verbose","fatal"]},"apiDocumentation":{"type":"boolean"}},"required":["serverPort","schedulerPort","nodeId","logLevel","apiDocumentation"]},"EnvironmentProcessing":{"type":"object","properties":{"alertBatchSize":{"type":"number"},"alertAnnotationsBatchSize":{"type":"number"}},"required":["alertBatchSize","alertAnnotationsBatchSize"]},"ResponseEnvironmentGrafana":{"type":"object","properties":{"url":{"type":"string","example":"http://localhost:3000"},"healthCheckTimeout":{"type":"number"},"healthCheckRetry":{"type":"number"},"requestTimeout":{"type":"number"}},"required":["url","healthCheckTimeout","healthCheckRetry","requestTimeout"]},"EnvironmentDatabase":{"type":"object","properties":{"host":{"type":"string","example":"localhost"},"port":{"type":"number","example":5432},"username":{"type":"string"},"db":{"type":"string"}},"required":["host","port","username","db"]},"ResponseEnvironment":{"type":"object","properties":{"main":{"$ref":"#/components/schemas/ResponseEnvironmentMain"},"processing":{"$ref":"#/components/schemas/EnvironmentProcessing"},"grafana":{"$ref":"#/components/schemas/ResponseEnvironmentGrafana"},"database":{"$ref":"#/components/schemas/EnvironmentDatabase"}},"required":["main","processing","grafana","database"]},"ActionRequestHeader":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]},"ActionRequestOptions":{"type":"object","properties":{"url":{"type":"string"},"headers":{"type":"array","items":{"$ref":"#/components/schemas/ActionRequestHeader"}}},"required":["url","headers"]},"ActionCustomOptions":{"type":"object","properties":{}},"ResponseAction":{"type":"object","properties":{"title":{"type":"string"},"type":{"type":"string","enum":["request","custom"]},"options":{"oneOf":[{"$ref":"#/components/schemas/ActionRequestOptions"},{"$ref":"#/components/schemas/ActionCustomOptions"}],"allOf":[{"$ref":"#/components/schemas/ActionRequestOptions"}]},"isDefault":{"type":"boolean"},"message":{"type":"string"},"id":{"type":"string"},"useFor":{"type":"array","items":{"type":"string"}},"useForByDefault":{"type":"array","items":{"type":"string"}}},"required":["title","type","options","message","id","useFor"]},"Action":{"type":"object","properties":{"title":{"type":"string"},"type":{"type":"string","enum":["request","custom"]},"options":{"oneOf":[{"$ref":"#/components/schemas/ActionRequestOptions"},{"$ref":"#/components/schemas/ActionCustomOptions"}],"allOf":[{"$ref":"#/components/schemas/ActionRequestOptions"}]},"isDefault":{"type":"boolean"},"message":{"type":"string"}},"required":["title","type","options","message"]},"ActionTestResult":{"type":"object","properties":{"ok":{"type":"boolean"},"message":{"type":"string"}},"required":["ok","message"]}}},"externalDocs":{"description":"Documentation","url":"https://volkovlabs.io/big/"}} \ No newline at end of file +{"openapi":"3.0.0","paths":{"/license":{"get":{"operationId":"LicenseController_getLicenseInfo","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LicenseInfo"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"404":{"description":"","content":{"application/json":{"schema":{"default":{"message":"No license","code":"noLicense"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get License Info","tags":["License"]}},"/license/token":{"put":{"operationId":"LicenseController_updateLicenseToken","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LicenseUpdate"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LicenseUpdateResponse"}}}},"400":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License is not valid","code":"newLicenseInvalid"},"type":"#/components/schemas/ErrorResult"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Token is set in the environment file and cannot be updated","code":"licenseTokenReadonly"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Update License Token","tags":["License"]}},"/clustering":{"get":{"operationId":"ClusteringController_getNodeConfiguration","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NodeConfiguration"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get node configuration","tags":["Clustering"]}},"/health":{"get":{"operationId":"HealthController_ping","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"default":{"message":"pong","version":"2.4.0"}}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Health check","tags":["Health"]}},"/alerts":{"get":{"operationId":"AlertsController_getAll","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ResponseAlert"}}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get all alert rules","tags":["Alert Rules"]},"post":{"operationId":"AlertsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Alert"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseAlert"}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"default":{"message":["property queryId should not exist"]},"type":"#/components/schemas/ValidationError"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Create alert rule","tags":["Alert Rules"]}},"/alerts/{id}":{"put":{"operationId":"AlertsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Alert"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseAlert"}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"default":{"message":["property queryId should not exist"]},"type":"#/components/schemas/ValidationError"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"404":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Alert Rule does not exist","code":"alertRuleNotFound"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Update alert rule","tags":["Alert Rules"]},"delete":{"operationId":"AlertsController_delete","parameters":[{"name":"id","required":true,"in":"path","schema":{}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"boolean"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"404":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Alert Rule does not exist","code":"alertRuleNotFound"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Delete alert rule","tags":["Alert Rules"]},"get":{"operationId":"AlertsController_getById","parameters":[{"name":"id","required":true,"in":"path","schema":{}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ResponseAlert"}}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get alert rule by id","tags":["Alert Rules"]}},"/alerts/{id}/status":{"put":{"operationId":"AlertsController_updateStatus","parameters":[{"name":"id","required":true,"in":"path","schema":{}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertChangeStatus"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseAlert"}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"default":{"message":["property queryId should not exist"]},"type":"#/components/schemas/ValidationError"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"404":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Alert Rule does not exist","code":"alertRuleNotFound"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Update alert rule status","tags":["Alert Rules"]}},"/alerts/{id}/history/last":{"get":{"operationId":"AlertsController_getLastAlertHistory","parameters":[{"name":"id","required":true,"in":"path","schema":{}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseAlertHistory"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"404":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Alert Rule does not exist","code":"alertRuleNotFound"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get last history event for alert rule","tags":["Alert Rules"]}},"/alerts/history":{"get":{"operationId":"AlertsController_getAllHistory","parameters":[{"name":"limit","required":false,"in":"query","schema":{"type":"number"}},{"name":"ids","required":false,"in":"query","schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ResponseAlertHistory"}}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get all history events","tags":["Alert Rules"]}},"/alerts/history/timeline":{"get":{"operationId":"AlertsController_getHistoryTimeline","parameters":[{"name":"limit","required":false,"in":"query","schema":{"type":"number"}},{"name":"ids","required":false,"in":"query","schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ResponseAlertHistory"}}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get history timeline","tags":["Alert Rules"]}},"/alerts/history/{eventId}":{"get":{"operationId":"AlertsController_getAlertHistoryEvent","parameters":[{"name":"eventId","required":true,"in":"path","schema":{}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseAlertHistory"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"404":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Alert Rule event does not exist","code":"alertRuleEventNotFound"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get history event for alert rule by id","tags":["Alert Rules"]}},"/alerts/{id}/data-preview":{"get":{"operationId":"AlertsController_getDataPreview","parameters":[{"name":"id","required":true,"in":"path","schema":{}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConditionPreview"}}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get alert rule data preview","tags":["Alert Rules"]}},"/grafana/check-panel-support":{"post":{"operationId":"GrafanaController_checkPanelSupport","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrafanaPanelTarget"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"boolean"}}}},"400":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Panel target is not supported","code":"panelTargetUnsupported"},"type":"#/components/schemas/ErrorResult"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"404":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Panel not found","code":"panelNotFound"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Check Panel Support","tags":["Grafana"]}},"/grafana/variables/load":{"post":{"operationId":"GrafanaVariablesController_loadDashboardVariables","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDashboardVariables"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardVariableOptionsResponse"}}}},"400":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Dashboard \"[id]\" does not exist.","code":"alertRuleNotFound"},"type":"#/components/schemas/ErrorResult"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get dashboard variables","tags":["Grafana Variables"]}},"/grafana-data/search":{"get":{"operationId":"GrafanaDataController_searchDashboards","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Search dashboards","tags":["Grafana Proxy"]}},"/grafana-data/dashboards/uid/{id}":{"get":{"operationId":"GrafanaDataController_getDashboardInfo","parameters":[{"name":"id","required":true,"in":"path","schema":{}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get dashboard by uid","tags":["Grafana Proxy"]}},"/grafana-data/org/users":{"get":{"operationId":"GrafanaDataController_getUsers","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get all users within the current organization.","tags":["Grafana Proxy"]}},"/environment-management":{"get":{"operationId":"EnvironmentManagementController_get","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEnvironment"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get Environment Info","tags":["Environment Management"]}},"/environment-management/grafana":{"put":{"operationId":"EnvironmentManagementController_updateGrafana","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvironmentGrafanaToUpdate"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseEnvironment"}}}},"400":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Grafana is not reachable","code":"grafanaUnreachable"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Update Grafana Environment","tags":["Environment Management"]}},"/actions":{"get":{"operationId":"ActionsController_getAll","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ResponseAction"}}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get all actions","tags":["Actions"]},"post":{"operationId":"ActionsController_create","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Action"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseAction"}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"default":{"message":["property queryId should not exist"]},"type":"#/components/schemas/ValidationError"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Create action","tags":["Actions"]}},"/actions/default":{"get":{"operationId":"ActionsController_getDefault","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseAction"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"404":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Default action does not exist","code":"defaultActionNotFound"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get default action","tags":["Actions"]}},"/actions/{id}":{"put":{"operationId":"ActionsController_update","parameters":[{"name":"id","required":true,"in":"path","schema":{}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Action"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseAction"}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"default":{"message":["property queryId should not exist"]},"type":"#/components/schemas/ValidationError"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Update action","tags":["Actions"]},"delete":{"operationId":"ActionsController_delete","parameters":[{"name":"id","required":true,"in":"path","schema":{}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"boolean"}}}},"400":{"description":"Validation error","content":{"application/json":{"schema":{"default":{"message":["property queryId should not exist"]},"type":"#/components/schemas/ValidationError"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Delete action","tags":["Actions"]},"get":{"operationId":"ActionsController_getById","parameters":[{"name":"id","required":true,"in":"path","schema":{}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResponseAction"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}}},"security":[{"Authorization":[]}],"summary":"Get action by id","tags":["Actions"]}},"/actions/test":{"post":{"operationId":"ActionsController_test","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Action"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActionTestResult"}}}},"403":{"description":"","content":{"application/json":{"schema":{"default":{"message":"License verification failed","code":"licenseVerificationFailed"},"type":"#/components/schemas/ErrorResult"}}}},"500":{"description":"","content":{"application/json":{"schema":{"default":{"message":"Internal Server Error","code":"unknown"},"type":"#/components/schemas/ErrorResult"}}}},"502":{"description":"","content":{"application/json":{"schema":{"default":{"ok":false,"message":"Error details"}}}}}},"security":[{"Authorization":[]}],"summary":"Test action","tags":["Actions"]}},"/metrics":{"get":{"operationId":"MetricsController_index","parameters":[],"responses":{"200":{"description":"Prometheus metrics","content":{"application/json":{"schema":{"type":"string"}}}}},"summary":"Get prometheus metrics","tags":["Prometheus Metrics"]}}},"info":{"title":"Business Engine API","description":"Business Intelligence for Grafana.","version":"2.4.0","contact":{}},"tags":[],"servers":[],"components":{"securitySchemes":{"Authorization":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"LicenseInfo":{"type":"object","properties":{"limit":{"type":"number"},"used":{"type":"number"},"expiration":{"type":"number","description":"Timestamp ms"},"isCommunity":{"type":"boolean","description":"If Community"}},"required":["limit","used","expiration","isCommunity"]},"LicenseUpdate":{"type":"object","properties":{"token":{"type":"string"}},"required":["token"]},"LicenseUpdateResponse":{"type":"object","properties":{"token":{"type":"string"},"info":{"$ref":"#/components/schemas/LicenseInfo"}},"required":["token","info"]},"NodeConfiguration":{"type":"object","properties":{"isScaled":{"type":"boolean","example":false}},"required":["isScaled"]},"AlertEvaluationPattern":{"type":"object","properties":{"field":{"type":"string"},"pattern":{"type":"string"},"type":{"type":"string","enum":["pattern"]}},"required":["field","pattern","type"]},"AlertEvaluationThresholds":{"type":"object","properties":{"type":{"type":"string","enum":["thresholds"]},"colors":{"type":"array","items":{"type":"string"}}},"required":["type","colors"]},"AlertEvaluationAnomaly":{"type":"object","properties":{"type":{"type":"string","enum":["anomaly"]}},"required":["type"]},"AlertVariable":{"type":"object","properties":{"name":{"type":"string"},"multi":{"type":"boolean"},"includeAll":{"type":"boolean"},"value":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}},{"type":"number"},{"type":"array","items":{"type":"number"}},{"type":"null"}]}},"required":["name","multi","value"]},"AlertEvaluationApply":{"type":"object","properties":{"mode":{"type":"string","enum":["all","last","percentage"]},"percentage":{"type":"number"}},"required":["mode","percentage"]},"AlertCondition":{"type":"object","properties":{"id":{"type":"string"},"repeat":{"type":"string","nullable":true},"variables":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/AlertVariable"}},"evaluationType":{"type":"string","enum":["anomaly","pattern","thresholds"]},"evaluation":{"oneOf":[{"$ref":"#/components/schemas/AlertEvaluationPattern"},{"$ref":"#/components/schemas/AlertEvaluationThresholds"},{"$ref":"#/components/schemas/AlertEvaluationAnomaly"}]},"evaluationApply":{"oneOf":[{"$ref":"#/components/schemas/AlertEvaluationApply"}],"allOf":[{"$ref":"#/components/schemas/AlertEvaluationApply"}]}},"required":["id","repeat","evaluationType","evaluation","evaluationApply"]},"AlertConditionOverride":{"type":"object","properties":{"id":{"type":"string"},"evaluation":{"oneOf":[{"$ref":"#/components/schemas/AlertEvaluationPattern"},{"$ref":"#/components/schemas/AlertEvaluationThresholds"},{"$ref":"#/components/schemas/AlertEvaluationAnomaly"}]},"variables":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}},{"type":"number"},{"type":"array","items":{"type":"number"}},{"type":"null"}]}}},"required":["id"]},"AlertTimeRange":{"type":"object","properties":{"from":{"type":"number","description":"Time Offset in seconds"},"to":{"type":"number","description":"Time Offset in seconds"}},"required":["from","to"]},"ResponseAlert":{"type":"object","properties":{"status":{"type":"string","enum":["active","paused"]},"title":{"type":"string"},"dashboardId":{"type":"string"},"panelId":{"type":"number"},"sampleSize":{"type":"number"},"schedule":{"type":"string"},"actionIds":{"type":"array","items":{"type":"string"}},"annotations":{"type":"string","enum":["panel","dashboard","disabled"]},"timeRangeSource":{"type":"string","enum":["dashboard","configured"]},"timeRange":{"$ref":"#/components/schemas/AlertTimeRange"},"condition":{"$ref":"#/components/schemas/AlertCondition"},"conditionOverrides":{"type":"array","items":{"$ref":"#/components/schemas/AlertConditionOverride"}},"id":{"type":"string"},"stateStartDate":{"format":"date-time","type":"string","description":"State Start Date","nullable":true}},"required":["status","title","dashboardId","panelId","sampleSize","schedule","actionIds","annotations","timeRangeSource","condition","conditionOverrides","id","stateStartDate"]},"Alert":{"type":"object","properties":{"status":{"type":"string","enum":["active","paused"]},"title":{"type":"string"},"dashboardId":{"type":"string"},"panelId":{"type":"number"},"sampleSize":{"type":"number"},"schedule":{"type":"string"},"actionIds":{"type":"array","items":{"type":"string"}},"annotations":{"type":"string","enum":["panel","dashboard","disabled"]},"timeRangeSource":{"type":"string","enum":["dashboard","configured"]},"timeRange":{"$ref":"#/components/schemas/AlertTimeRange"},"condition":{"$ref":"#/components/schemas/AlertCondition"},"conditionOverrides":{"type":"array","items":{"$ref":"#/components/schemas/AlertConditionOverride"}}},"required":["status","title","dashboardId","panelId","sampleSize","schedule","actionIds","annotations","timeRangeSource","condition","conditionOverrides"]},"AlertChangeStatus":{"type":"object","properties":{"status":{"type":"string","enum":["active","paused"]}},"required":["status"]},"ResponseAlertHistory":{"type":"object","properties":{"id":{"type":"string"},"alertId":{"type":"string"},"startDate":{"format":"date-time","type":"string"},"endDate":{"format":"date-time","type":"string","nullable":true},"event":{"type":"string"},"prevState":{"type":"string","enum":["scheduled","ok","alerting","error","none"]},"newState":{"type":"string","enum":["scheduled","ok","alerting","error"]},"duration":{"type":"number"},"alertTitle":{"type":"string"}},"required":["id","alertId","startDate","endDate","event","prevState","newState","duration","alertTitle"]},"UnknownObjectModel":{"type":"object","properties":{}},"ConditionPreviewQuery":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"queries":{"type":"array","items":{"$ref":"#/components/schemas/UnknownObjectModel"}}},"required":["from","to","queries"]},"ConditionPreview":{"type":"object","properties":{"query":{"$ref":"#/components/schemas/ConditionPreviewQuery"},"repeat":{"oneOf":[{"type":"string"},{"type":"null"}]},"error":{"type":"boolean"},"errorDetails":{"type":"object","properties":{}},"variables":{"description":"Scoped Variables","type":"array","items":{"$ref":"#/components/schemas/UnknownObjectModel"}},"series":{"description":"Grafana Data Frames","type":"array","items":{"$ref":"#/components/schemas/UnknownObjectModel"}}},"required":["query","repeat","error","variables","series"]},"GrafanaPanelTarget":{"type":"object","properties":{"dashboardId":{"type":"string","description":"Dashboard Id"},"panelId":{"type":"number","description":"Panel Id"}},"required":["dashboardId","panelId"]},"VariablesTimeRange":{"type":"object","properties":{"from":{"type":"number","description":"Timestamp in ms"},"to":{"type":"number","description":"Timestamp in ms"}},"required":["from","to"]},"GetDashboardVariables":{"type":"object","properties":{"dashboardId":{"type":"string"},"variables":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}},"timeRange":{"$ref":"#/components/schemas/VariablesTimeRange"}},"required":["dashboardId","variables"]},"VariableOption":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"]},"DashboardVariableOptionsResponse":{"type":"object","properties":{"options":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/components/schemas/VariableOption"},{"type":"array","items":{"$ref":"#/components/schemas/VariableOption"}}]}}},"required":["options"]},"ResponseEnvironmentMain":{"type":"object","properties":{"serverPort":{"type":"number"},"schedulerPort":{"type":"number"},"nodeId":{"type":"string"},"logLevel":{"type":"string","enum":["log","error","warn","debug","verbose","fatal"]},"apiDocumentation":{"type":"boolean"}},"required":["serverPort","schedulerPort","nodeId","logLevel","apiDocumentation"]},"EnvironmentProcessing":{"type":"object","properties":{"alertBatchSize":{"type":"number"},"alertAnnotationsBatchSize":{"type":"number"}},"required":["alertBatchSize","alertAnnotationsBatchSize"]},"ResponseEnvironmentGrafana":{"type":"object","properties":{"url":{"type":"string","example":"http://localhost:3000"},"healthCheckTimeout":{"type":"number"},"healthCheckRetry":{"type":"number"},"requestTimeout":{"type":"number"}},"required":["url","healthCheckTimeout","healthCheckRetry","requestTimeout"]},"EnvironmentDatabase":{"type":"object","properties":{"host":{"type":"string","example":"localhost"},"port":{"type":"number","example":5432},"username":{"type":"string"},"db":{"type":"string"}},"required":["host","port","username","db"]},"ResponseEnvironment":{"type":"object","properties":{"main":{"$ref":"#/components/schemas/ResponseEnvironmentMain"},"processing":{"$ref":"#/components/schemas/EnvironmentProcessing"},"grafana":{"$ref":"#/components/schemas/ResponseEnvironmentGrafana"},"database":{"$ref":"#/components/schemas/EnvironmentDatabase"}},"required":["main","processing","grafana","database"]},"EnvironmentGrafanaToUpdate":{"type":"object","properties":{"url":{"type":"string","example":"http://localhost:3000"},"healthCheckTimeout":{"type":"number"},"healthCheckRetry":{"type":"number"},"requestTimeout":{"type":"number"},"token":{"type":"string","description":"Grafana service account token"}},"required":["url","healthCheckTimeout","healthCheckRetry","requestTimeout","token"]},"ActionRequestHeader":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"]},"ActionRequestOptions":{"type":"object","properties":{"url":{"type":"string"},"headers":{"type":"array","items":{"$ref":"#/components/schemas/ActionRequestHeader"}}},"required":["url","headers"]},"ActionCustomOptions":{"type":"object","properties":{}},"ResponseAction":{"type":"object","properties":{"title":{"type":"string"},"type":{"type":"string","enum":["request","custom"]},"options":{"oneOf":[{"$ref":"#/components/schemas/ActionRequestOptions"},{"$ref":"#/components/schemas/ActionCustomOptions"}],"allOf":[{"$ref":"#/components/schemas/ActionRequestOptions"}]},"isDefault":{"type":"boolean"},"message":{"type":"string"},"id":{"type":"string"},"useFor":{"type":"array","items":{"type":"string"}},"useForByDefault":{"type":"array","items":{"type":"string"}}},"required":["title","type","options","message","id","useFor"]},"Action":{"type":"object","properties":{"title":{"type":"string"},"type":{"type":"string","enum":["request","custom"]},"options":{"oneOf":[{"$ref":"#/components/schemas/ActionRequestOptions"},{"$ref":"#/components/schemas/ActionCustomOptions"}],"allOf":[{"$ref":"#/components/schemas/ActionRequestOptions"}]},"isDefault":{"type":"boolean"},"message":{"type":"string"}},"required":["title","type","options","message"]},"ActionTestResult":{"type":"object","properties":{"ok":{"type":"boolean"},"message":{"type":"string"}},"required":["ok","message"]}}},"externalDocs":{"description":"Documentation","url":"https://volkovlabs.io/big/"}} \ No newline at end of file diff --git a/big/getting-started/index.mdx b/big/getting-started/index.mdx index 3de7037c3..4fc1ca5f4 100644 --- a/big/getting-started/index.mdx +++ b/big/getting-started/index.mdx @@ -99,6 +99,12 @@ and login as 'admin' with 'admin' password. 5. Update `GRAFANA_TOKEN` in the `docker-compose.yml` file +:::note Version 2.4.0 + +Grafana token and URL can be set using Business Studio to avoid changing environment variables. + +::: + + ### Downloads from GitHub :::info Security risks diff --git a/blog/big/2025-02-05-big-2.4.0/index.mdx b/blog/big/2025-02-05-big-2.4.0/index.mdx new file mode 100644 index 000000000..7812179c6 --- /dev/null +++ b/blog/big/2025-02-05-big-2.4.0/index.mdx @@ -0,0 +1,198 @@ +--- +authors: [daria] +slug: business-intelligence-2.4.0/ +tags: [Business Intelligence] +image: /img/blog/2025-02-05-big-2.4.0/banner.png +keywords: [Business Intelligence, Alerting, Grafana] +--- + +import Code from "@theme/Code"; +import Feedback from "@site/big/_feedback.mdx"; +import Image from "@theme/Image"; +import Shorts from "@theme/Shorts"; +import Youtube from "@theme/Youtube"; + +# Streamlined connection to Grafana, improved alert details, simplified scheduler, and more in Business Intelligence 2.4.0 + +We are excited to announce the public preview release of the Business Intelligence 2.4.0. It includes the following updates: + +- Possibility to connect a Business Engine to Grafana instance via Business Studio. +- Improved the alert event details for better troubleshooting. +- Added high availability (HA) state in the Business Engine overview. +- Simplified schedule entry for creating alert rules. +- Added Grafana data frames review in the Business Studio. +- Enhanced user prompts to improve configuration clarity. +- Updated Business Engine API documentation. + +## Connect a Business Engine to Grafana instance via Business Studio + +Previously, the connection between the Business Engine and the Grafana instance had to be made manually, updating the `GRAFANA_TOKEN` environment variable in the configuration file. + +Starting from this release, the Business Studio allows you to establish that connection in the comfort of a user-friendly interface. + +To accomplish that, follow the steps: + +1. Open Business Engine -> **Environment** tab. +2. Scroll to the **Grafana** section. +3. Click the **Edit** button. +4. Provide Grafana instance URL. +5. Provide Service account token. + + + +With this user action, the `grafana_token` column of the `environments` table is updated. That means if multiple business engines are connected to the same Grafana instance (HA scenario), then with updating the settings only for one business engine, all others are automatically updated since they all point to the same database field. + +:::info High Availability + +If multiple Business Engines are connected to the same Grafana instance, then updating ONLY one Business Engine is required. The rest of the connected business engines will be updated automatically. + +::: + +## Improved the alert event details + +:::info terminology +An alert event is an alternative term for an [alert record](/big/alerting/#alert-components). Technically, it is a record in a database about the alert event. +::: + +### All alert rules + +1. Open a Business Engine of your interest. +2. Open the **Overview** tab. +3. Review the **Alert history** of all alert records generated for the selected Business Engine. + + + +### One alert rule + +1. Open a Business Engine of your interest. +2. Open the **Alert rules** tab. +3. Click on the alert rule of interest. +4. Review the **Alert history** of the selected alert rule. + + + +You can click on any alert record to review details. If the latest alert state (**New state**) is **Alerting**, the **Alert evaluations** section shows the values that triggered the alert action. + +You can always review the payload by clicking on the **View as code** button. + + + +In the case of any other alert state (**New state**), the alert rule payload is displayed right away. + + + +## High availability (HA) state in the Business Engine overview + +High availability can be: + +- **Disabled**. If a Business Engine is the only one in the cluster. +- **Enabled**. If there are multiple (more than one) Business Engines in the cluster. + + + +## Simplified schedule entry for creating alert rules + +In addition to a Cron expression, for simplicity, you can choose one of the easy-to-use templates and then adjust if needed. + + + +## Review Grafana data frames in the Business Studio + +To make the interaction between the Business Engine and Grafana more transparent, the Business Studio displays the Grafana data frames participating in the alert rule evaluation. + +To review the Grafana data frame in the Business Studio: + +1. Open the alert rule of interest. +2. Optionally, on the **Alert settings** tab confirm the alert rule is assigned to the dashboard(2.1) and panel(2.2) of interest. +3. Open the **Data preview** tab. +4. Optionally, verify the dashboard variable (data frame filter) is set up to the necessary value. +5. Review the Grafana data frame in the Business Studio. +6. Optionally, review the same data frame in Grafana. Open the panel in the Edit mode and switch to the **Table view**. + +- Verify the dashboard variable (data frame filter) is set up to the necessary value. +- Review the data frame in Grafana. + + + +A Grafana data frame can be reviewed as a code by clicking on the **View as code** button. + +## Enchanced user prompts to improve configuration clarity. + +This is done throughout the Business Studio UI to eliminate ambiguity and uncertainty about the parameters' meaning. + +## Updated Business Engine API documentation. + +We maintain the ease of the 3rd party Business Engine integration by timely updating the [OpenAPI specification](/big/api/). + +## Business Studio Downloads + +:::info Security risks + +MacOS and Windows installers are signed and notarized with encryption. End to end build process are fully automated using GitHub workflows to avoid any security risks. + +::: + +- MacOS: + - [Apple Disk Image for arm64 (Apple Mx processor)](https://github.com/VolkovLabs/business-intelligence/releases/download/v2.4.0/Business.Studio-2.4.0-arm64.dmg) + - [Apple Disk Image for x86 (Intel)](https://github.com/VolkovLabs/business-intelligence/releases/download/v2.4.0/Business.Studio-2.4.0-x64.dmg) + - [ZIP file for arm64 (Apple Mx processor)](https://github.com/VolkovLabs/business-intelligence/releases/download/v2.4.0/Business.Studio-darwin-arm64-2.4.0.zip) + - [ZIP file for x86 (Intel)](https://github.com/VolkovLabs/business-intelligence/releases/download/v2.4.0/Business.Studio-darwin-x64-2.4.0.zip) +- Linux: + - [RPM for arm64](https://github.com/VolkovLabs/business-intelligence/releases/download/v2.4.0/business-studio-2.4.0-1.arm64.rpm) + - [RPM for x64](https://github.com/VolkovLabs/business-intelligence/releases/download/v2.4.0/business-studio-2.4.0-1.x86_64.rpm) + - [Debian for arm64](https://github.com/VolkovLabs/business-intelligence/releases/download/v2.4.0/business-studio_2.4.0_arm64.deb) + - [Debian for x86](https://github.com/VolkovLabs/business-intelligence/releases/download/v2.4.0/business-studio_2.4.0_amd64.deb) +- Windows + - [Executable](https://github.com/VolkovLabs/business-intelligence/releases/download/v2.4.0/Business.Studio-2.4.0.Setup.exe) + +## Release Notes + +:::warning Breaking Changes in Engine API + +Updated data routes from /grafana to /grafana-data. + +::: + +### Business Studio 2.4.0 + +- Added Engine environment management to update Grafana connection details. +- Added alert event details to review conditions and view as a code to troubleshoot issues. +- Added verification process for backend query operations in panels. +- Added high availability state in engines overview. +- Added enhanced scheduler for alerts to streamline the setting of alert rules. +- Added alert data preview for reviewing data frames in Grafana. +- Updated user interface messages and forms to include more context and specifics. + +### Business Engine 2.4.0 + +- Added API to update Grafana configuration in real-time. +- Added API to get alert event details. +- Added API to get high availability state. +- Added API to get alert data preview. +- Updated alert event structure for consistency. + + diff --git a/static/img/blog/2025-02-05-big-2.4.0/alerting-state.png b/static/img/blog/2025-02-05-big-2.4.0/alerting-state.png new file mode 100644 index 000000000..33f987987 Binary files /dev/null and b/static/img/blog/2025-02-05-big-2.4.0/alerting-state.png differ diff --git a/static/img/blog/2025-02-05-big-2.4.0/all-alerts.png b/static/img/blog/2025-02-05-big-2.4.0/all-alerts.png new file mode 100644 index 000000000..3cbdf0ef8 Binary files /dev/null and b/static/img/blog/2025-02-05-big-2.4.0/all-alerts.png differ diff --git a/static/img/blog/2025-02-05-big-2.4.0/banner.png b/static/img/blog/2025-02-05-big-2.4.0/banner.png new file mode 100644 index 000000000..1c57bdce9 Binary files /dev/null and b/static/img/blog/2025-02-05-big-2.4.0/banner.png differ diff --git a/static/img/blog/2025-02-05-big-2.4.0/cron.png b/static/img/blog/2025-02-05-big-2.4.0/cron.png new file mode 100644 index 000000000..93d550aca Binary files /dev/null and b/static/img/blog/2025-02-05-big-2.4.0/cron.png differ diff --git a/static/img/blog/2025-02-05-big-2.4.0/data-preview.png b/static/img/blog/2025-02-05-big-2.4.0/data-preview.png new file mode 100644 index 000000000..50160cbc6 Binary files /dev/null and b/static/img/blog/2025-02-05-big-2.4.0/data-preview.png differ diff --git a/static/img/blog/2025-02-05-big-2.4.0/enabled-disabled.png b/static/img/blog/2025-02-05-big-2.4.0/enabled-disabled.png new file mode 100644 index 000000000..ad8eda3b1 Binary files /dev/null and b/static/img/blog/2025-02-05-big-2.4.0/enabled-disabled.png differ diff --git a/static/img/blog/2025-02-05-big-2.4.0/one-alert.png b/static/img/blog/2025-02-05-big-2.4.0/one-alert.png new file mode 100644 index 000000000..3494d74f3 Binary files /dev/null and b/static/img/blog/2025-02-05-big-2.4.0/one-alert.png differ diff --git a/static/img/blog/2025-02-05-big-2.4.0/other-states.png b/static/img/blog/2025-02-05-big-2.4.0/other-states.png new file mode 100644 index 000000000..b4906cb73 Binary files /dev/null and b/static/img/blog/2025-02-05-big-2.4.0/other-states.png differ diff --git a/static/img/blog/2025-02-05-big-2.4.0/token.png b/static/img/blog/2025-02-05-big-2.4.0/token.png new file mode 100644 index 000000000..d67bceaa8 Binary files /dev/null and b/static/img/blog/2025-02-05-big-2.4.0/token.png differ