{
  "info": {
    "name": "WebMon API v1 Beta",
    "description": "Postman collection for the WebMon API v1 beta. Set `base_url` and `webmon_api_token` collection variables before sending requests.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{webmon_api_token}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "base_url",
      "value": "https://webmon.site/api/v1",
      "type": "string"
    },
    {
      "key": "webmon_api_token",
      "value": "",
      "type": "string"
    },
    {
      "key": "monitor_id",
      "value": "00000000-0000-0000-0000-000000000000",
      "type": "string"
    },
    {
      "key": "token_id",
      "value": "1",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "Tokens",
      "item": [
        {
          "name": "List tokens",
          "request": {
            "method": "GET",
            "header": [{"key": "Accept", "value": "application/json"}],
            "url": {"raw": "{{base_url}}/tokens", "host": ["{{base_url}}"], "path": ["tokens"]}
          }
        },
        {
          "name": "Create token",
          "request": {
            "method": "POST",
            "header": [
              {"key": "Accept", "value": "application/json"},
              {"key": "Content-Type", "value": "application/json"}
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Postman token\",\n  \"abilities\": [\"monitors:read\", \"monitors:write\", \"tags:read\"]\n}"
            },
            "url": {"raw": "{{base_url}}/tokens", "host": ["{{base_url}}"], "path": ["tokens"]}
          }
        },
        {
          "name": "Revoke token",
          "request": {
            "method": "DELETE",
            "header": [{"key": "Accept", "value": "application/json"}],
            "url": {"raw": "{{base_url}}/tokens/{{token_id}}", "host": ["{{base_url}}"], "path": ["tokens", "{{token_id}}"]}
          }
        }
      ]
    },
    {
      "name": "Monitors",
      "item": [
        {
          "name": "List monitors",
          "request": {
            "method": "GET",
            "header": [{"key": "Accept", "value": "application/json"}],
            "url": {
              "raw": "{{base_url}}/monitors?per_page=25",
              "host": ["{{base_url}}"],
              "path": ["monitors"],
              "query": [{"key": "per_page", "value": "25"}]
            }
          }
        },
        {
          "name": "Create HTTP monitor",
          "request": {
            "method": "POST",
            "header": [
              {"key": "Accept", "value": "application/json"},
              {"key": "Content-Type", "value": "application/json"}
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Example HTTP\",\n  \"type\": \"http\",\n  \"url\": \"https://example.com\",\n  \"check_interval\": 5,\n  \"follow_redirects\": true,\n  \"is_active\": true\n}"
            },
            "url": {"raw": "{{base_url}}/monitors", "host": ["{{base_url}}"], "path": ["monitors"]}
          }
        },
        {
          "name": "Create keyword monitor",
          "request": {
            "method": "POST",
            "header": [
              {"key": "Accept", "value": "application/json"},
              {"key": "Content-Type", "value": "application/json"}
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Example keyword\",\n  \"type\": \"keyword\",\n  \"url\": \"https://example.com\",\n  \"keyword\": \"Example Domain\",\n  \"keyword_match_type\": \"contains\",\n  \"keyword_case_sensitive\": false,\n  \"check_interval\": 5\n}"
            },
            "url": {"raw": "{{base_url}}/monitors", "host": ["{{base_url}}"], "path": ["monitors"]}
          }
        },
        {
          "name": "Create DNS monitor",
          "request": {
            "method": "POST",
            "header": [
              {"key": "Accept", "value": "application/json"},
              {"key": "Content-Type", "value": "application/json"}
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Example DNS\",\n  \"type\": \"dns\",\n  \"dns_hostname\": \"example.com\",\n  \"dns_record_type\": \"A\",\n  \"dns_expected_value\": \"93.184.216.34\",\n  \"dns_server\": \"1.1.1.1\",\n  \"check_interval\": 5\n}"
            },
            "url": {"raw": "{{base_url}}/monitors", "host": ["{{base_url}}"], "path": ["monitors"]}
          }
        },
        {
          "name": "Get monitor",
          "request": {
            "method": "GET",
            "header": [{"key": "Accept", "value": "application/json"}],
            "url": {"raw": "{{base_url}}/monitors/{{monitor_id}}", "host": ["{{base_url}}"], "path": ["monitors", "{{monitor_id}}"]}
          }
        },
        {
          "name": "Update monitor",
          "request": {
            "method": "PATCH",
            "header": [
              {"key": "Accept", "value": "application/json"},
              {"key": "Content-Type", "value": "application/json"}
            ],
            "body": {"mode": "raw", "raw": "{\n  \"name\": \"Renamed monitor\",\n  \"check_interval\": 5\n}"},
            "url": {"raw": "{{base_url}}/monitors/{{monitor_id}}", "host": ["{{base_url}}"], "path": ["monitors", "{{monitor_id}}"]}
          }
        },
        {
          "name": "Pause monitor notifications",
          "request": {
            "method": "POST",
            "header": [
              {"key": "Accept", "value": "application/json"},
              {"key": "Content-Type", "value": "application/json"}
            ],
            "body": {"mode": "raw", "raw": "{\n  \"duration_minutes\": 60,\n  \"reason\": \"Maintenance window\"\n}"},
            "url": {"raw": "{{base_url}}/monitors/{{monitor_id}}/pause", "host": ["{{base_url}}"], "path": ["monitors", "{{monitor_id}}", "pause"]}
          }
        },
        {
          "name": "Resume monitor notifications",
          "request": {
            "method": "POST",
            "header": [{"key": "Accept", "value": "application/json"}],
            "url": {"raw": "{{base_url}}/monitors/{{monitor_id}}/resume", "host": ["{{base_url}}"], "path": ["monitors", "{{monitor_id}}", "resume"]}
          }
        },
        {
          "name": "Delete monitor",
          "request": {
            "method": "DELETE",
            "header": [{"key": "Accept", "value": "application/json"}],
            "url": {"raw": "{{base_url}}/monitors/{{monitor_id}}", "host": ["{{base_url}}"], "path": ["monitors", "{{monitor_id}}"]}
          }
        }
      ]
    },
    {
      "name": "Checks",
      "item": [
        {
          "name": "List monitor checks",
          "request": {
            "method": "GET",
            "header": [{"key": "Accept", "value": "application/json"}],
            "url": {
              "raw": "{{base_url}}/monitors/{{monitor_id}}/checks?per_page=25",
              "host": ["{{base_url}}"],
              "path": ["monitors", "{{monitor_id}}", "checks"],
              "query": [{"key": "per_page", "value": "25"}]
            }
          }
        }
      ]
    },
    {
      "name": "Supporting endpoints",
      "item": [
        {
          "name": "List tags",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}], "url": {"raw": "{{base_url}}/tags", "host": ["{{base_url}}"], "path": ["tags"]}}
        },
        {
          "name": "Get alert settings",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}], "url": {"raw": "{{base_url}}/alert-settings", "host": ["{{base_url}}"], "path": ["alert-settings"]}}
        },
        {
          "name": "Update alert settings",
          "request": {
            "method": "PATCH",
            "header": [{"key": "Accept", "value": "application/json"}, {"key": "Content-Type", "value": "application/json"}],
            "body": {"mode": "raw", "raw": "{\n  \"email_enabled\": true,\n  \"telegram_enabled\": false\n}"},
            "url": {"raw": "{{base_url}}/alert-settings", "host": ["{{base_url}}"], "path": ["alert-settings"]}
          }
        },
        {
          "name": "List status pages",
          "request": {"method": "GET", "header": [{"key": "Accept", "value": "application/json"}], "url": {"raw": "{{base_url}}/status-pages", "host": ["{{base_url}}"], "path": ["status-pages"]}}
        }
      ]
    }
  ]
}
