{
  "version": 1,
  "title": "Circuit breaker: phone request timeline",
  "format": "custom",
  "canvasSize": [
    720,
    1300
  ],
  "watermark": true,
  "objects": [
    {
      "type": "text",
      "text": "Circuit breaker",
      "x": 30,
      "y": 23,
      "fontSize": 47,
      "color": "#292d32",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "Which calls reach the API?",
      "x": 30,
      "y": 85,
      "fontSize": 30,
      "color": "#59675e",
      "fontFamily": "sans"
    },
    {
      "type": "pen",
      "points": [
        [
          30,
          144
        ],
        [
          239,
          145
        ],
        [
          470,
          143
        ],
        [
          690,
          145
        ]
      ],
      "color": "#bac9c1",
      "width": 3,
      "smooth": false
    },
    {
      "type": "text",
      "text": "Quote API · fictional example",
      "x": 30,
      "y": 169,
      "fontSize": 29,
      "color": "#285caa",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "CLOSED",
      "x": 30,
      "y": 234,
      "fontSize": 30,
      "color": "#285caa",
      "fontFamily": "sans"
    },
    {
      "type": "pen",
      "points": [
        [
          34,
          286
        ],
        [
          686,
          287
        ],
        [
          686,
          501
        ],
        [
          34,
          500
        ],
        [
          34,
          286
        ]
      ],
      "color": "#bac9c1",
      "width": 3,
      "smooth": false
    },
    {
      "type": "text",
      "text": "0s  → API timeout",
      "x": 51,
      "y": 309,
      "fontSize": 30,
      "color": "#a34438",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "1s  → API timeout",
      "x": 51,
      "y": 371,
      "fontSize": 30,
      "color": "#a34438",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "2s  → API timeout",
      "x": 51,
      "y": 433,
      "fontSize": 30,
      "color": "#a34438",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "3 failures in 10s → breaker opens",
      "x": 30,
      "y": 522,
      "fontSize": 26,
      "color": "#59675e",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "OPEN",
      "x": 30,
      "y": 594,
      "fontSize": 30,
      "color": "#a34438",
      "fontFamily": "sans"
    },
    {
      "type": "pen",
      "points": [
        [
          34,
          645
        ],
        [
          686,
          646
        ],
        [
          686,
          773
        ],
        [
          34,
          772
        ],
        [
          34,
          645
        ]
      ],
      "color": "#a34438",
      "width": 3,
      "smooth": false
    },
    {
      "type": "text",
      "text": "3s  → blocked locally",
      "x": 51,
      "y": 671,
      "fontSize": 30,
      "color": "#a34438",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "Quote API gets no call",
      "x": 51,
      "y": 721,
      "fontSize": 27,
      "color": "#292d32",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "HALF-OPEN",
      "x": 30,
      "y": 832,
      "fontSize": 30,
      "color": "#287355",
      "fontFamily": "sans"
    },
    {
      "type": "pen",
      "points": [
        [
          34,
          883
        ],
        [
          686,
          884
        ],
        [
          686,
          1011
        ],
        [
          34,
          1010
        ],
        [
          34,
          883
        ]
      ],
      "color": "#287355",
      "width": 3,
      "smooth": false
    },
    {
      "type": "text",
      "text": "32s → one test call",
      "x": 51,
      "y": 909,
      "fontSize": 30,
      "color": "#292d32",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "Success → close breaker",
      "x": 51,
      "y": 961,
      "fontSize": 28,
      "color": "#287355",
      "fontFamily": "sans"
    },
    {
      "type": "pen",
      "points": [
        [
          30,
          1064
        ],
        [
          233,
          1065
        ],
        [
          471,
          1063
        ],
        [
          690,
          1065
        ]
      ],
      "color": "#bac9c1",
      "width": 3,
      "smooth": false
    },
    {
      "type": "text",
      "text": "Policy: wait 30s after opening.",
      "x": 30,
      "y": 1091,
      "fontSize": 27,
      "color": "#292d32",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "A failed probe would reopen it.",
      "x": 30,
      "y": 1142,
      "fontSize": 27,
      "color": "#292d32",
      "fontFamily": "sans"
    },
    {
      "type": "text",
      "text": "Retry is a separate per-request choice.",
      "x": 30,
      "y": 1193,
      "fontSize": 24,
      "color": "#59675e",
      "fontFamily": "sans"
    }
  ]
}
