curl --request POST \
--url 'https://api.flashcat.cloud/monit/dashboard/update?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"dashboard_id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2101",
"schema_version": "dashboard.v1",
"expected_revision": 7,
"definition": {
"title": "Checkout service overview",
"description": "Traffic, errors and dependencies for the checkout service.",
"default_time_range": {
"from": "now-1h",
"to": "now"
},
"refresh_interval": "1m",
"variables": [
{
"kind": "custom",
"name": "env",
"label": "Environment",
"selection": {
"mode": "single",
"include_all": false
},
"options": [
{
"text": "Production",
"value": "prod"
},
{
"text": "Staging",
"value": "staging"
}
],
"default": {
"kind": "values",
"values": [
"prod"
]
}
}
],
"tabs": [
{
"id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2202",
"title": "Overview",
"description": "Golden signals.",
"top_panels": [],
"sections": [
{
"id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2303",
"title": "Traffic",
"description": "Request rate and latency.",
"collapsed": false,
"panels": [
{
"id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2404",
"title": "Request rate",
"grid": {
"x": 0,
"y": 0,
"w": 12,
"h": 8
},
"datasource_ref": {
"kind": "fixed",
"datasource_id": 10,
"datasource_type": "prometheus"
},
"queries": [
{
"ref_id": "A",
"legend_alias": "{{env}} requests",
"query": {
"mode": "range",
"expr": "sum(rate(http_requests_total{env=\"{{env}}\"}[5m]))",
"args": {},
"min_step_seconds": 30
}
}
],
"viz_config": {
"kind": "time_series",
"options": {},
"unit": "count_per_second",
"decimals": 2,
"threshold": {
"mode": "higher_is_worse",
"warning": 1000,
"critical": 2000
}
}
}
]
}
]
}
]
},
"message": "Split the latency panel"
}
'import requests
url = "https://api.flashcat.cloud/monit/dashboard/update?app_key="
payload = {
"dashboard_id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2101",
"schema_version": "dashboard.v1",
"expected_revision": 7,
"definition": {
"title": "Checkout service overview",
"description": "Traffic, errors and dependencies for the checkout service.",
"default_time_range": {
"from": "now-1h",
"to": "now"
},
"refresh_interval": "1m",
"variables": [
{
"kind": "custom",
"name": "env",
"label": "Environment",
"selection": {
"mode": "single",
"include_all": False
},
"options": [
{
"text": "Production",
"value": "prod"
},
{
"text": "Staging",
"value": "staging"
}
],
"default": {
"kind": "values",
"values": ["prod"]
}
}
],
"tabs": [
{
"id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2202",
"title": "Overview",
"description": "Golden signals.",
"top_panels": [],
"sections": [
{
"id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2303",
"title": "Traffic",
"description": "Request rate and latency.",
"collapsed": False,
"panels": [
{
"id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2404",
"title": "Request rate",
"grid": {
"x": 0,
"y": 0,
"w": 12,
"h": 8
},
"datasource_ref": {
"kind": "fixed",
"datasource_id": 10,
"datasource_type": "prometheus"
},
"queries": [
{
"ref_id": "A",
"legend_alias": "{{env}} requests",
"query": {
"mode": "range",
"expr": "sum(rate(http_requests_total{env=\"{{env}}\"}[5m]))",
"args": {},
"min_step_seconds": 30
}
}
],
"viz_config": {
"kind": "time_series",
"options": {},
"unit": "count_per_second",
"decimals": 2,
"threshold": {
"mode": "higher_is_worse",
"warning": 1000,
"critical": 2000
}
}
}
]
}
]
}
]
},
"message": "Split the latency panel"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
dashboard_id: '01990d7a-9c5b-7ab0-9c18-33e38f6f2101',
schema_version: 'dashboard.v1',
expected_revision: 7,
definition: {
title: 'Checkout service overview',
description: 'Traffic, errors and dependencies for the checkout service.',
default_time_range: {from: 'now-1h', to: 'now'},
refresh_interval: '1m',
variables: [
{
kind: 'custom',
name: 'env',
label: 'Environment',
selection: {mode: 'single', include_all: false},
options: [{text: 'Production', value: 'prod'}, {text: 'Staging', value: 'staging'}],
default: {kind: 'values', values: ['prod']}
}
],
tabs: [
{
id: '01990d7a-9c5b-7ab0-9c18-33e38f6f2202',
title: 'Overview',
description: 'Golden signals.',
top_panels: [],
sections: [
{
id: '01990d7a-9c5b-7ab0-9c18-33e38f6f2303',
title: 'Traffic',
description: 'Request rate and latency.',
collapsed: false,
panels: [
{
id: '01990d7a-9c5b-7ab0-9c18-33e38f6f2404',
title: 'Request rate',
grid: {x: 0, y: 0, w: 12, h: 8},
datasource_ref: {kind: 'fixed', datasource_id: 10, datasource_type: 'prometheus'},
queries: [
{
ref_id: 'A',
legend_alias: '{{env}} requests',
query: {
mode: 'range',
expr: 'sum(rate(http_requests_total{env="{{env}}"}[5m]))',
args: {},
min_step_seconds: 30
}
}
],
viz_config: {
kind: 'time_series',
options: {},
unit: 'count_per_second',
decimals: 2,
threshold: {mode: 'higher_is_worse', warning: 1000, critical: 2000}
}
}
]
}
]
}
]
},
message: 'Split the latency panel'
})
};
fetch('https://api.flashcat.cloud/monit/dashboard/update?app_key=', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.flashcat.cloud/monit/dashboard/update?app_key=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'dashboard_id' => '01990d7a-9c5b-7ab0-9c18-33e38f6f2101',
'schema_version' => 'dashboard.v1',
'expected_revision' => 7,
'definition' => [
'title' => 'Checkout service overview',
'description' => 'Traffic, errors and dependencies for the checkout service.',
'default_time_range' => [
'from' => 'now-1h',
'to' => 'now'
],
'refresh_interval' => '1m',
'variables' => [
[
'kind' => 'custom',
'name' => 'env',
'label' => 'Environment',
'selection' => [
'mode' => 'single',
'include_all' => false
],
'options' => [
[
'text' => 'Production',
'value' => 'prod'
],
[
'text' => 'Staging',
'value' => 'staging'
]
],
'default' => [
'kind' => 'values',
'values' => [
'prod'
]
]
]
],
'tabs' => [
[
'id' => '01990d7a-9c5b-7ab0-9c18-33e38f6f2202',
'title' => 'Overview',
'description' => 'Golden signals.',
'top_panels' => [
],
'sections' => [
[
'id' => '01990d7a-9c5b-7ab0-9c18-33e38f6f2303',
'title' => 'Traffic',
'description' => 'Request rate and latency.',
'collapsed' => false,
'panels' => [
[
'id' => '01990d7a-9c5b-7ab0-9c18-33e38f6f2404',
'title' => 'Request rate',
'grid' => [
'x' => 0,
'y' => 0,
'w' => 12,
'h' => 8
],
'datasource_ref' => [
'kind' => 'fixed',
'datasource_id' => 10,
'datasource_type' => 'prometheus'
],
'queries' => [
[
'ref_id' => 'A',
'legend_alias' => '{{env}} requests',
'query' => [
'mode' => 'range',
'expr' => 'sum(rate(http_requests_total{env="{{env}}"}[5m]))',
'args' => [
],
'min_step_seconds' => 30
]
]
],
'viz_config' => [
'kind' => 'time_series',
'options' => [
],
'unit' => 'count_per_second',
'decimals' => 2,
'threshold' => [
'mode' => 'higher_is_worse',
'warning' => 1000,
'critical' => 2000
]
]
]
]
]
]
]
]
],
'message' => 'Split the latency panel'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.flashcat.cloud/monit/dashboard/update?app_key="
payload := strings.NewReader("{\n \"dashboard_id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2101\",\n \"schema_version\": \"dashboard.v1\",\n \"expected_revision\": 7,\n \"definition\": {\n \"title\": \"Checkout service overview\",\n \"description\": \"Traffic, errors and dependencies for the checkout service.\",\n \"default_time_range\": {\n \"from\": \"now-1h\",\n \"to\": \"now\"\n },\n \"refresh_interval\": \"1m\",\n \"variables\": [\n {\n \"kind\": \"custom\",\n \"name\": \"env\",\n \"label\": \"Environment\",\n \"selection\": {\n \"mode\": \"single\",\n \"include_all\": false\n },\n \"options\": [\n {\n \"text\": \"Production\",\n \"value\": \"prod\"\n },\n {\n \"text\": \"Staging\",\n \"value\": \"staging\"\n }\n ],\n \"default\": {\n \"kind\": \"values\",\n \"values\": [\n \"prod\"\n ]\n }\n }\n ],\n \"tabs\": [\n {\n \"id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2202\",\n \"title\": \"Overview\",\n \"description\": \"Golden signals.\",\n \"top_panels\": [],\n \"sections\": [\n {\n \"id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2303\",\n \"title\": \"Traffic\",\n \"description\": \"Request rate and latency.\",\n \"collapsed\": false,\n \"panels\": [\n {\n \"id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2404\",\n \"title\": \"Request rate\",\n \"grid\": {\n \"x\": 0,\n \"y\": 0,\n \"w\": 12,\n \"h\": 8\n },\n \"datasource_ref\": {\n \"kind\": \"fixed\",\n \"datasource_id\": 10,\n \"datasource_type\": \"prometheus\"\n },\n \"queries\": [\n {\n \"ref_id\": \"A\",\n \"legend_alias\": \"{{env}} requests\",\n \"query\": {\n \"mode\": \"range\",\n \"expr\": \"sum(rate(http_requests_total{env=\\\"{{env}}\\\"}[5m]))\",\n \"args\": {},\n \"min_step_seconds\": 30\n }\n }\n ],\n \"viz_config\": {\n \"kind\": \"time_series\",\n \"options\": {},\n \"unit\": \"count_per_second\",\n \"decimals\": 2,\n \"threshold\": {\n \"mode\": \"higher_is_worse\",\n \"warning\": 1000,\n \"critical\": 2000\n }\n }\n }\n ]\n }\n ]\n }\n ]\n },\n \"message\": \"Split the latency panel\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.flashcat.cloud/monit/dashboard/update?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"dashboard_id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2101\",\n \"schema_version\": \"dashboard.v1\",\n \"expected_revision\": 7,\n \"definition\": {\n \"title\": \"Checkout service overview\",\n \"description\": \"Traffic, errors and dependencies for the checkout service.\",\n \"default_time_range\": {\n \"from\": \"now-1h\",\n \"to\": \"now\"\n },\n \"refresh_interval\": \"1m\",\n \"variables\": [\n {\n \"kind\": \"custom\",\n \"name\": \"env\",\n \"label\": \"Environment\",\n \"selection\": {\n \"mode\": \"single\",\n \"include_all\": false\n },\n \"options\": [\n {\n \"text\": \"Production\",\n \"value\": \"prod\"\n },\n {\n \"text\": \"Staging\",\n \"value\": \"staging\"\n }\n ],\n \"default\": {\n \"kind\": \"values\",\n \"values\": [\n \"prod\"\n ]\n }\n }\n ],\n \"tabs\": [\n {\n \"id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2202\",\n \"title\": \"Overview\",\n \"description\": \"Golden signals.\",\n \"top_panels\": [],\n \"sections\": [\n {\n \"id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2303\",\n \"title\": \"Traffic\",\n \"description\": \"Request rate and latency.\",\n \"collapsed\": false,\n \"panels\": [\n {\n \"id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2404\",\n \"title\": \"Request rate\",\n \"grid\": {\n \"x\": 0,\n \"y\": 0,\n \"w\": 12,\n \"h\": 8\n },\n \"datasource_ref\": {\n \"kind\": \"fixed\",\n \"datasource_id\": 10,\n \"datasource_type\": \"prometheus\"\n },\n \"queries\": [\n {\n \"ref_id\": \"A\",\n \"legend_alias\": \"{{env}} requests\",\n \"query\": {\n \"mode\": \"range\",\n \"expr\": \"sum(rate(http_requests_total{env=\\\"{{env}}\\\"}[5m]))\",\n \"args\": {},\n \"min_step_seconds\": 30\n }\n }\n ],\n \"viz_config\": {\n \"kind\": \"time_series\",\n \"options\": {},\n \"unit\": \"count_per_second\",\n \"decimals\": 2,\n \"threshold\": {\n \"mode\": \"higher_is_worse\",\n \"warning\": 1000,\n \"critical\": 2000\n }\n }\n }\n ]\n }\n ]\n }\n ]\n },\n \"message\": \"Split the latency panel\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/monit/dashboard/update?app_key=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"dashboard_id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2101\",\n \"schema_version\": \"dashboard.v1\",\n \"expected_revision\": 7,\n \"definition\": {\n \"title\": \"Checkout service overview\",\n \"description\": \"Traffic, errors and dependencies for the checkout service.\",\n \"default_time_range\": {\n \"from\": \"now-1h\",\n \"to\": \"now\"\n },\n \"refresh_interval\": \"1m\",\n \"variables\": [\n {\n \"kind\": \"custom\",\n \"name\": \"env\",\n \"label\": \"Environment\",\n \"selection\": {\n \"mode\": \"single\",\n \"include_all\": false\n },\n \"options\": [\n {\n \"text\": \"Production\",\n \"value\": \"prod\"\n },\n {\n \"text\": \"Staging\",\n \"value\": \"staging\"\n }\n ],\n \"default\": {\n \"kind\": \"values\",\n \"values\": [\n \"prod\"\n ]\n }\n }\n ],\n \"tabs\": [\n {\n \"id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2202\",\n \"title\": \"Overview\",\n \"description\": \"Golden signals.\",\n \"top_panels\": [],\n \"sections\": [\n {\n \"id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2303\",\n \"title\": \"Traffic\",\n \"description\": \"Request rate and latency.\",\n \"collapsed\": false,\n \"panels\": [\n {\n \"id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2404\",\n \"title\": \"Request rate\",\n \"grid\": {\n \"x\": 0,\n \"y\": 0,\n \"w\": 12,\n \"h\": 8\n },\n \"datasource_ref\": {\n \"kind\": \"fixed\",\n \"datasource_id\": 10,\n \"datasource_type\": \"prometheus\"\n },\n \"queries\": [\n {\n \"ref_id\": \"A\",\n \"legend_alias\": \"{{env}} requests\",\n \"query\": {\n \"mode\": \"range\",\n \"expr\": \"sum(rate(http_requests_total{env=\\\"{{env}}\\\"}[5m]))\",\n \"args\": {},\n \"min_step_seconds\": 30\n }\n }\n ],\n \"viz_config\": {\n \"kind\": \"time_series\",\n \"options\": {},\n \"unit\": \"count_per_second\",\n \"decimals\": 2,\n \"threshold\": {\n \"mode\": \"higher_is_worse\",\n \"warning\": 1000,\n \"critical\": 2000\n }\n }\n }\n ]\n }\n ]\n }\n ]\n },\n \"message\": \"Split the latency panel\"\n}"
response = http.request(request)
puts response.read_body{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"data": {
"changed": true,
"resource": {
"dashboard_id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2101",
"schema_version": "dashboard.v1",
"revision": 7,
"folder_id": 12,
"folder_breadcrumb": [
"Production",
"Checkout"
],
"definition": {
"title": "Checkout service overview",
"description": "Traffic, errors and dependencies for the checkout service.",
"default_time_range": {
"from": "now-1h",
"to": "now"
},
"refresh_interval": "1m",
"variables": [
{
"kind": "custom",
"name": "env",
"label": "Environment",
"selection": {
"mode": "single",
"include_all": false
},
"options": [
{
"text": "Production",
"value": "prod"
},
{
"text": "Staging",
"value": "staging"
}
],
"default": {
"kind": "values",
"values": [
"prod"
]
}
}
],
"tabs": [
{
"id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2202",
"title": "Overview",
"description": "Golden signals.",
"top_panels": [],
"sections": [
{
"id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2303",
"title": "Traffic",
"description": "Request rate and latency.",
"collapsed": false,
"panels": [
{
"id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2404",
"title": "Request rate",
"grid": {
"x": 0,
"y": 0,
"w": 12,
"h": 8
},
"datasource_ref": {
"kind": "fixed",
"datasource_id": 10,
"datasource_type": "prometheus"
},
"queries": [
{
"ref_id": "A",
"legend_alias": "{{env}} requests",
"query": {
"mode": "range",
"expr": "sum(rate(http_requests_total{env=\"{{env}}\"}[5m]))",
"args": {},
"min_step_seconds": 30
}
}
],
"viz_config": {
"kind": "time_series",
"options": {},
"unit": "count_per_second",
"decimals": 2,
"threshold": {
"mode": "higher_is_worse",
"warning": 1000,
"critical": 2000
}
}
}
]
}
]
}
]
},
"created_by": {
"id": 10023,
"name": "Ada Lovelace"
},
"updated_by": {
"id": 10088,
"name": "Grace Hopper"
},
"created_at": 1791000000,
"updated_at": 1791100800
}
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter is not valid."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "Unauthorized",
"message": "You are unauthorized."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "AccessDenied",
"message": "Access Denied."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "RequestTooFrequently",
"message": "Request too frequently."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InternalError",
"message": "We encountered an internal error, and it has been reported. Please try again later."
}
}Update dashboard
Replace a dashboard definition with compare-and-swap on the revision counter.
curl --request POST \
--url 'https://api.flashcat.cloud/monit/dashboard/update?app_key=' \
--header 'Content-Type: application/json' \
--data '
{
"dashboard_id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2101",
"schema_version": "dashboard.v1",
"expected_revision": 7,
"definition": {
"title": "Checkout service overview",
"description": "Traffic, errors and dependencies for the checkout service.",
"default_time_range": {
"from": "now-1h",
"to": "now"
},
"refresh_interval": "1m",
"variables": [
{
"kind": "custom",
"name": "env",
"label": "Environment",
"selection": {
"mode": "single",
"include_all": false
},
"options": [
{
"text": "Production",
"value": "prod"
},
{
"text": "Staging",
"value": "staging"
}
],
"default": {
"kind": "values",
"values": [
"prod"
]
}
}
],
"tabs": [
{
"id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2202",
"title": "Overview",
"description": "Golden signals.",
"top_panels": [],
"sections": [
{
"id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2303",
"title": "Traffic",
"description": "Request rate and latency.",
"collapsed": false,
"panels": [
{
"id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2404",
"title": "Request rate",
"grid": {
"x": 0,
"y": 0,
"w": 12,
"h": 8
},
"datasource_ref": {
"kind": "fixed",
"datasource_id": 10,
"datasource_type": "prometheus"
},
"queries": [
{
"ref_id": "A",
"legend_alias": "{{env}} requests",
"query": {
"mode": "range",
"expr": "sum(rate(http_requests_total{env=\"{{env}}\"}[5m]))",
"args": {},
"min_step_seconds": 30
}
}
],
"viz_config": {
"kind": "time_series",
"options": {},
"unit": "count_per_second",
"decimals": 2,
"threshold": {
"mode": "higher_is_worse",
"warning": 1000,
"critical": 2000
}
}
}
]
}
]
}
]
},
"message": "Split the latency panel"
}
'import requests
url = "https://api.flashcat.cloud/monit/dashboard/update?app_key="
payload = {
"dashboard_id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2101",
"schema_version": "dashboard.v1",
"expected_revision": 7,
"definition": {
"title": "Checkout service overview",
"description": "Traffic, errors and dependencies for the checkout service.",
"default_time_range": {
"from": "now-1h",
"to": "now"
},
"refresh_interval": "1m",
"variables": [
{
"kind": "custom",
"name": "env",
"label": "Environment",
"selection": {
"mode": "single",
"include_all": False
},
"options": [
{
"text": "Production",
"value": "prod"
},
{
"text": "Staging",
"value": "staging"
}
],
"default": {
"kind": "values",
"values": ["prod"]
}
}
],
"tabs": [
{
"id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2202",
"title": "Overview",
"description": "Golden signals.",
"top_panels": [],
"sections": [
{
"id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2303",
"title": "Traffic",
"description": "Request rate and latency.",
"collapsed": False,
"panels": [
{
"id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2404",
"title": "Request rate",
"grid": {
"x": 0,
"y": 0,
"w": 12,
"h": 8
},
"datasource_ref": {
"kind": "fixed",
"datasource_id": 10,
"datasource_type": "prometheus"
},
"queries": [
{
"ref_id": "A",
"legend_alias": "{{env}} requests",
"query": {
"mode": "range",
"expr": "sum(rate(http_requests_total{env=\"{{env}}\"}[5m]))",
"args": {},
"min_step_seconds": 30
}
}
],
"viz_config": {
"kind": "time_series",
"options": {},
"unit": "count_per_second",
"decimals": 2,
"threshold": {
"mode": "higher_is_worse",
"warning": 1000,
"critical": 2000
}
}
}
]
}
]
}
]
},
"message": "Split the latency panel"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
dashboard_id: '01990d7a-9c5b-7ab0-9c18-33e38f6f2101',
schema_version: 'dashboard.v1',
expected_revision: 7,
definition: {
title: 'Checkout service overview',
description: 'Traffic, errors and dependencies for the checkout service.',
default_time_range: {from: 'now-1h', to: 'now'},
refresh_interval: '1m',
variables: [
{
kind: 'custom',
name: 'env',
label: 'Environment',
selection: {mode: 'single', include_all: false},
options: [{text: 'Production', value: 'prod'}, {text: 'Staging', value: 'staging'}],
default: {kind: 'values', values: ['prod']}
}
],
tabs: [
{
id: '01990d7a-9c5b-7ab0-9c18-33e38f6f2202',
title: 'Overview',
description: 'Golden signals.',
top_panels: [],
sections: [
{
id: '01990d7a-9c5b-7ab0-9c18-33e38f6f2303',
title: 'Traffic',
description: 'Request rate and latency.',
collapsed: false,
panels: [
{
id: '01990d7a-9c5b-7ab0-9c18-33e38f6f2404',
title: 'Request rate',
grid: {x: 0, y: 0, w: 12, h: 8},
datasource_ref: {kind: 'fixed', datasource_id: 10, datasource_type: 'prometheus'},
queries: [
{
ref_id: 'A',
legend_alias: '{{env}} requests',
query: {
mode: 'range',
expr: 'sum(rate(http_requests_total{env="{{env}}"}[5m]))',
args: {},
min_step_seconds: 30
}
}
],
viz_config: {
kind: 'time_series',
options: {},
unit: 'count_per_second',
decimals: 2,
threshold: {mode: 'higher_is_worse', warning: 1000, critical: 2000}
}
}
]
}
]
}
]
},
message: 'Split the latency panel'
})
};
fetch('https://api.flashcat.cloud/monit/dashboard/update?app_key=', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.flashcat.cloud/monit/dashboard/update?app_key=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'dashboard_id' => '01990d7a-9c5b-7ab0-9c18-33e38f6f2101',
'schema_version' => 'dashboard.v1',
'expected_revision' => 7,
'definition' => [
'title' => 'Checkout service overview',
'description' => 'Traffic, errors and dependencies for the checkout service.',
'default_time_range' => [
'from' => 'now-1h',
'to' => 'now'
],
'refresh_interval' => '1m',
'variables' => [
[
'kind' => 'custom',
'name' => 'env',
'label' => 'Environment',
'selection' => [
'mode' => 'single',
'include_all' => false
],
'options' => [
[
'text' => 'Production',
'value' => 'prod'
],
[
'text' => 'Staging',
'value' => 'staging'
]
],
'default' => [
'kind' => 'values',
'values' => [
'prod'
]
]
]
],
'tabs' => [
[
'id' => '01990d7a-9c5b-7ab0-9c18-33e38f6f2202',
'title' => 'Overview',
'description' => 'Golden signals.',
'top_panels' => [
],
'sections' => [
[
'id' => '01990d7a-9c5b-7ab0-9c18-33e38f6f2303',
'title' => 'Traffic',
'description' => 'Request rate and latency.',
'collapsed' => false,
'panels' => [
[
'id' => '01990d7a-9c5b-7ab0-9c18-33e38f6f2404',
'title' => 'Request rate',
'grid' => [
'x' => 0,
'y' => 0,
'w' => 12,
'h' => 8
],
'datasource_ref' => [
'kind' => 'fixed',
'datasource_id' => 10,
'datasource_type' => 'prometheus'
],
'queries' => [
[
'ref_id' => 'A',
'legend_alias' => '{{env}} requests',
'query' => [
'mode' => 'range',
'expr' => 'sum(rate(http_requests_total{env="{{env}}"}[5m]))',
'args' => [
],
'min_step_seconds' => 30
]
]
],
'viz_config' => [
'kind' => 'time_series',
'options' => [
],
'unit' => 'count_per_second',
'decimals' => 2,
'threshold' => [
'mode' => 'higher_is_worse',
'warning' => 1000,
'critical' => 2000
]
]
]
]
]
]
]
]
],
'message' => 'Split the latency panel'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.flashcat.cloud/monit/dashboard/update?app_key="
payload := strings.NewReader("{\n \"dashboard_id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2101\",\n \"schema_version\": \"dashboard.v1\",\n \"expected_revision\": 7,\n \"definition\": {\n \"title\": \"Checkout service overview\",\n \"description\": \"Traffic, errors and dependencies for the checkout service.\",\n \"default_time_range\": {\n \"from\": \"now-1h\",\n \"to\": \"now\"\n },\n \"refresh_interval\": \"1m\",\n \"variables\": [\n {\n \"kind\": \"custom\",\n \"name\": \"env\",\n \"label\": \"Environment\",\n \"selection\": {\n \"mode\": \"single\",\n \"include_all\": false\n },\n \"options\": [\n {\n \"text\": \"Production\",\n \"value\": \"prod\"\n },\n {\n \"text\": \"Staging\",\n \"value\": \"staging\"\n }\n ],\n \"default\": {\n \"kind\": \"values\",\n \"values\": [\n \"prod\"\n ]\n }\n }\n ],\n \"tabs\": [\n {\n \"id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2202\",\n \"title\": \"Overview\",\n \"description\": \"Golden signals.\",\n \"top_panels\": [],\n \"sections\": [\n {\n \"id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2303\",\n \"title\": \"Traffic\",\n \"description\": \"Request rate and latency.\",\n \"collapsed\": false,\n \"panels\": [\n {\n \"id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2404\",\n \"title\": \"Request rate\",\n \"grid\": {\n \"x\": 0,\n \"y\": 0,\n \"w\": 12,\n \"h\": 8\n },\n \"datasource_ref\": {\n \"kind\": \"fixed\",\n \"datasource_id\": 10,\n \"datasource_type\": \"prometheus\"\n },\n \"queries\": [\n {\n \"ref_id\": \"A\",\n \"legend_alias\": \"{{env}} requests\",\n \"query\": {\n \"mode\": \"range\",\n \"expr\": \"sum(rate(http_requests_total{env=\\\"{{env}}\\\"}[5m]))\",\n \"args\": {},\n \"min_step_seconds\": 30\n }\n }\n ],\n \"viz_config\": {\n \"kind\": \"time_series\",\n \"options\": {},\n \"unit\": \"count_per_second\",\n \"decimals\": 2,\n \"threshold\": {\n \"mode\": \"higher_is_worse\",\n \"warning\": 1000,\n \"critical\": 2000\n }\n }\n }\n ]\n }\n ]\n }\n ]\n },\n \"message\": \"Split the latency panel\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.flashcat.cloud/monit/dashboard/update?app_key=")
.header("Content-Type", "application/json")
.body("{\n \"dashboard_id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2101\",\n \"schema_version\": \"dashboard.v1\",\n \"expected_revision\": 7,\n \"definition\": {\n \"title\": \"Checkout service overview\",\n \"description\": \"Traffic, errors and dependencies for the checkout service.\",\n \"default_time_range\": {\n \"from\": \"now-1h\",\n \"to\": \"now\"\n },\n \"refresh_interval\": \"1m\",\n \"variables\": [\n {\n \"kind\": \"custom\",\n \"name\": \"env\",\n \"label\": \"Environment\",\n \"selection\": {\n \"mode\": \"single\",\n \"include_all\": false\n },\n \"options\": [\n {\n \"text\": \"Production\",\n \"value\": \"prod\"\n },\n {\n \"text\": \"Staging\",\n \"value\": \"staging\"\n }\n ],\n \"default\": {\n \"kind\": \"values\",\n \"values\": [\n \"prod\"\n ]\n }\n }\n ],\n \"tabs\": [\n {\n \"id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2202\",\n \"title\": \"Overview\",\n \"description\": \"Golden signals.\",\n \"top_panels\": [],\n \"sections\": [\n {\n \"id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2303\",\n \"title\": \"Traffic\",\n \"description\": \"Request rate and latency.\",\n \"collapsed\": false,\n \"panels\": [\n {\n \"id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2404\",\n \"title\": \"Request rate\",\n \"grid\": {\n \"x\": 0,\n \"y\": 0,\n \"w\": 12,\n \"h\": 8\n },\n \"datasource_ref\": {\n \"kind\": \"fixed\",\n \"datasource_id\": 10,\n \"datasource_type\": \"prometheus\"\n },\n \"queries\": [\n {\n \"ref_id\": \"A\",\n \"legend_alias\": \"{{env}} requests\",\n \"query\": {\n \"mode\": \"range\",\n \"expr\": \"sum(rate(http_requests_total{env=\\\"{{env}}\\\"}[5m]))\",\n \"args\": {},\n \"min_step_seconds\": 30\n }\n }\n ],\n \"viz_config\": {\n \"kind\": \"time_series\",\n \"options\": {},\n \"unit\": \"count_per_second\",\n \"decimals\": 2,\n \"threshold\": {\n \"mode\": \"higher_is_worse\",\n \"warning\": 1000,\n \"critical\": 2000\n }\n }\n }\n ]\n }\n ]\n }\n ]\n },\n \"message\": \"Split the latency panel\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flashcat.cloud/monit/dashboard/update?app_key=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"dashboard_id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2101\",\n \"schema_version\": \"dashboard.v1\",\n \"expected_revision\": 7,\n \"definition\": {\n \"title\": \"Checkout service overview\",\n \"description\": \"Traffic, errors and dependencies for the checkout service.\",\n \"default_time_range\": {\n \"from\": \"now-1h\",\n \"to\": \"now\"\n },\n \"refresh_interval\": \"1m\",\n \"variables\": [\n {\n \"kind\": \"custom\",\n \"name\": \"env\",\n \"label\": \"Environment\",\n \"selection\": {\n \"mode\": \"single\",\n \"include_all\": false\n },\n \"options\": [\n {\n \"text\": \"Production\",\n \"value\": \"prod\"\n },\n {\n \"text\": \"Staging\",\n \"value\": \"staging\"\n }\n ],\n \"default\": {\n \"kind\": \"values\",\n \"values\": [\n \"prod\"\n ]\n }\n }\n ],\n \"tabs\": [\n {\n \"id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2202\",\n \"title\": \"Overview\",\n \"description\": \"Golden signals.\",\n \"top_panels\": [],\n \"sections\": [\n {\n \"id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2303\",\n \"title\": \"Traffic\",\n \"description\": \"Request rate and latency.\",\n \"collapsed\": false,\n \"panels\": [\n {\n \"id\": \"01990d7a-9c5b-7ab0-9c18-33e38f6f2404\",\n \"title\": \"Request rate\",\n \"grid\": {\n \"x\": 0,\n \"y\": 0,\n \"w\": 12,\n \"h\": 8\n },\n \"datasource_ref\": {\n \"kind\": \"fixed\",\n \"datasource_id\": 10,\n \"datasource_type\": \"prometheus\"\n },\n \"queries\": [\n {\n \"ref_id\": \"A\",\n \"legend_alias\": \"{{env}} requests\",\n \"query\": {\n \"mode\": \"range\",\n \"expr\": \"sum(rate(http_requests_total{env=\\\"{{env}}\\\"}[5m]))\",\n \"args\": {},\n \"min_step_seconds\": 30\n }\n }\n ],\n \"viz_config\": {\n \"kind\": \"time_series\",\n \"options\": {},\n \"unit\": \"count_per_second\",\n \"decimals\": 2,\n \"threshold\": {\n \"mode\": \"higher_is_worse\",\n \"warning\": 1000,\n \"critical\": 2000\n }\n }\n }\n ]\n }\n ]\n }\n ]\n },\n \"message\": \"Split the latency panel\"\n}"
response = http.request(request)
puts response.read_body{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"data": {
"changed": true,
"resource": {
"dashboard_id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2101",
"schema_version": "dashboard.v1",
"revision": 7,
"folder_id": 12,
"folder_breadcrumb": [
"Production",
"Checkout"
],
"definition": {
"title": "Checkout service overview",
"description": "Traffic, errors and dependencies for the checkout service.",
"default_time_range": {
"from": "now-1h",
"to": "now"
},
"refresh_interval": "1m",
"variables": [
{
"kind": "custom",
"name": "env",
"label": "Environment",
"selection": {
"mode": "single",
"include_all": false
},
"options": [
{
"text": "Production",
"value": "prod"
},
{
"text": "Staging",
"value": "staging"
}
],
"default": {
"kind": "values",
"values": [
"prod"
]
}
}
],
"tabs": [
{
"id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2202",
"title": "Overview",
"description": "Golden signals.",
"top_panels": [],
"sections": [
{
"id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2303",
"title": "Traffic",
"description": "Request rate and latency.",
"collapsed": false,
"panels": [
{
"id": "01990d7a-9c5b-7ab0-9c18-33e38f6f2404",
"title": "Request rate",
"grid": {
"x": 0,
"y": 0,
"w": 12,
"h": 8
},
"datasource_ref": {
"kind": "fixed",
"datasource_id": 10,
"datasource_type": "prometheus"
},
"queries": [
{
"ref_id": "A",
"legend_alias": "{{env}} requests",
"query": {
"mode": "range",
"expr": "sum(rate(http_requests_total{env=\"{{env}}\"}[5m]))",
"args": {},
"min_step_seconds": 30
}
}
],
"viz_config": {
"kind": "time_series",
"options": {},
"unit": "count_per_second",
"decimals": 2,
"threshold": {
"mode": "higher_is_worse",
"warning": 1000,
"critical": 2000
}
}
}
]
}
]
}
]
},
"created_by": {
"id": 10023,
"name": "Ada Lovelace"
},
"updated_by": {
"id": 10088,
"name": "Grace Hopper"
},
"created_at": 1791000000,
"updated_at": 1791100800
}
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InvalidParameter",
"message": "The specified parameter is not valid."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "Unauthorized",
"message": "You are unauthorized."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "AccessDenied",
"message": "Access Denied."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "RequestTooFrequently",
"message": "Request too frequently."
}
}{
"request_id": "01HK8XQE3Z7JM2NTFQ5YJ8P9R4",
"error": {
"code": "InternalError",
"message": "We encountered an internal error, and it has been reported. Please try again later."
}
}Authorizations
App key issued from the Flashduty console under Account → APP Keys. Required on every public API call. Keep it secret — it grants the same access as the owning account.
Body
Replace a dashboard's definition. The whole definition is sent, not a patch; expected_revision makes the write compare-and-swap.
Canonical UUIDv7 of the dashboard.
^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$Wire schema version; only dashboard.v1 is accepted.
dashboard.v1 Revision the caller last read. The write fails with DashboardRevisionConflict unless it still matches the stored revision.
x >= 1Complete dashboard payload stored as a portable dashboard.v1 document. Unknown keys, duplicate keys, NaN/Inf, over-range numbers and trailing values are rejected; the serialized form must stay within 1 MiB.
Show child attributes
Show child attributes
Optional revision message, at most 1024 Unicode code points. Stored with the revision and never returned by this endpoint.
1024Response
Success
Success response envelope. On every 2xx response, request_id identifies the call (also mirrored in the Flashcat-Request-Id header) and data holds the endpoint-specific payload. Failure responses use a different shape — see ErrorResponse.
Unique ID for this request. Mirrored in the Flashcat-Request-Id response header. Include it when reporting issues.
"01HK8XQE3Z7JM2NTFQ5YJ8P9R4"
Result of an update or move. changed is false when the write was a no-op — the canonical serialized definition matched the stored one byte for byte, in which case resource still describes the unchanged dashboard.
Show child attributes
Show child attributes
Was this page helpful?