{"id":32167580,"url":"https://github.com/erpuno/up","last_synced_at":"2025-10-21T15:33:36.903Z","repository":{"id":219537991,"uuid":"749301845","full_name":"erpuno/up","owner":"erpuno","description":"💠 UP: Uptime/Status Page Management","archived":false,"fork":false,"pushed_at":"2024-04-10T13:36:59.000Z","size":73,"stargazers_count":7,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-07T01:21:54.203Z","etag":null,"topics":["incidents","maintenance","status-page","uptime"],"latest_commit_sha":null,"homepage":"http://up.erp.uno/","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/erpuno.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-01-28T06:54:39.000Z","updated_at":"2024-02-06T22:18:09.000Z","dependencies_parsed_at":"2024-04-10T14:47:41.603Z","dependency_job_id":null,"html_url":"https://github.com/erpuno/up","commit_stats":null,"previous_names":["erpuno/up"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/erpuno/up","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erpuno%2Fup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erpuno%2Fup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erpuno%2Fup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erpuno%2Fup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erpuno","download_url":"https://codeload.github.com/erpuno/up/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erpuno%2Fup/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280287025,"owners_count":26304853,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["incidents","maintenance","status-page","uptime"],"created_at":"2025-10-21T15:33:31.580Z","updated_at":"2025-10-21T15:33:36.889Z","avatar_url":"https://github.com/erpuno.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# UP: Incidents and Maintenance\n\n[![Hex pm](http://img.shields.io/hexpm/v/up.svg?style=flat\u0026x=1)](https://hex.pm/packages/up)\n\nMinimalistic uptime server in Elixir with HTTP API and WebSocket SPA status page with proxy to Instatus.\nSee \u003ca href=\"https://up.erp.uno\"\u003eup.erp.uno\u003c/a\u003e. UP supports mupltiple Accounts, multiple Sites per account,\nmultiple Components per Site, multiple Incidents per Components, multiple Maintenances per Incident,\nmultiple Subscription callback per Site.\n\nSimilar produts: Sematext, Hyperping, Cronitor, Atlassian Statuspage,\nBetter Uptime, Instatus, Freshstatus, Statuspal, Cachet, Vigil, StatusCast, Statping.\n\n## Features\n\n* Incidents reporting\n* Maintenance announcing\n* Components management\n* Callback URL Subscriptions\n* Telemetry\n\n## Endpoints\n\nPublic Endpoints (Announce):\n\n```elixir\n  get \"/\"\n```\n\nSecurity Admin Endpoints:\n\n```elixir\n  get \"/accounts\"\n  get \"/accounts/:id\"\n  put \"/accounts/\"\n```\n\nAccount Auth Endpoints:\n\n```elixir\n  get \"/incidents\"\n  get \"/incidents/:id\"\n  put \"/incidents/:id\"\n  get \"/sites\"\n  get \"/sites/:id\"\n  put \"/sites/:id\"\n  get \"/maintenance\"\n  get \"/maintenance/:id\"\n  put \"/maintenance/:id\"\n  get \"/metrics\"\n  get \"/metrics/:id\"\n  put \"/metrics/:id\"\n  get \"/components\"\n  get \"/components/:id\"\n  put \"/components/:id\"\n  get \"/subscriptions\"\n  get \"/subscriptions/:id\"\n  put \"/subscriptions/:id\"\n```\n\n## Elixir Setup\n\n```elixir\n$ mix deps.get\n$ iex -S mix\nUP UPTIME/STATUS version 1.0.\n1: HTTP API listening at port: 5010.\n2: WebSocket NITRO listening at port: 5011.\nInteractive Elixir (1.12.2) - press Ctrl+C to exit (type h() ENTER for help)\niex(1)\u003e\n```\n\n## HTTP API\n\n### Statuses\n\nThe schema objects have the following life cycles:\n\n * For `Site`: `UP` | `HASISSUES` | `MAINTENANCE`.\n * For `Component`: `AUTH_ERR` | `WRITE_ERR` | `READ_ERR` | `EXTERNAL_ERR`.\n * For `Incident`: `NEW_IDENTIFIED` | `INVESTIGATING_PROCESS` | `CLOSED` | `RESOLVED` | `AWAITING_EXTERNAL`.\n * For `Maintenance`: `NOTSTARTEDYET` | `INPROGRESS` | `COMPLETED`.\n\n### Account Management\n\nAccounts could only by created with security admin API key, which can\nbe set with `:application.set_env(:up, :security_admin, \"secret\")`.\nThen you can add new accounts.\n\nCreate User:\n\n```\n$ curl -H \"Auth: secret\" -X PUT \"http://localhost:5010/account\" -d @priv/account.json\n[\n  {\n    \"id\": \"maxim-0012\",\n    \"spec\": \"put\",\n    \"type\": \"accounts\"\n  }\n]\n```\n\nList Users:\n\n```\n$ curl -H \"Auth: secret\" -X GET \"http://localhost:5010/account\"\n[\n  {\n    \"result\": [\n      {\n        \"id\": \"maxim-0012\",\n        \"key\": \"01707128300216989000\",\n        \"name\": \"Maksym Sokhatskyi\",\n        \"sites\": []\n      }\n    ],\n    \"spec\": \"lst\",\n    \"type\": \"accounts\"\n  }\n]\n```\n\n### Site Management\n\n```\n$ curl -H \"Auth: 01707128300216989000\" -X GET \"http://localhost:5010/site/maxim-0012\"\n[\n  {\n    \"result\": [],\n    \"spec\": \"get\",\n    \"type\": \"sites\"\n  }\n]\n```\n\n### Subscription Management\n\n```\n$ curl -H \"Auth: 01707128300216989000\" -X GET \"http://localhost:5010/subscription/maxim-0012\"\n[\n  {\n    \"result\": [],\n    \"spec\": \"get\",\n    \"type\": \"subscriptions\"\n  }\n]\n```\n\n### Component Management\n\n```\n$ curl -H \"Auth: 01707128300216989000\" -X GET \"http://localhost:5010/component/maxim-0012\"\n[\n  {\n    \"result\": [],\n    \"spec\": \"get\",\n    \"type\": \"component\"\n  }\n]\n```\n\n### Maintenance Management\n\n```\n$ curl -H \"Auth: 01707135870515017000\" -X GET \"http://localhost:5010/maintenance\"\n[\n  {\n    \"result\": [\n      {\n        \"account\": \"01707135870515049000\",\n        \"id\": \"01707136783810045000\",\n        \"incident\": [],\n        \"name\": \"Maksym Sokhatskyi\"\n      },\n      {\n        \"account\": \"01707135870515049000\",\n        \"id\": \"01707136783833913000\",\n        \"incident\": [],\n        \"name\": \"Maksym Sokhatskyi\"\n      }\n    ],\n    \"spec\": \"lst\",\n    \"type\": \"maintenance\"\n  }\n]\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferpuno%2Fup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferpuno%2Fup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferpuno%2Fup/lists"}