{"id":32150584,"url":"https://github.com/cpageler93/consulswift","last_synced_at":"2025-10-21T10:08:21.965Z","repository":{"id":63907246,"uuid":"91474614","full_name":"cpageler93/ConsulSwift","owner":"cpageler93","description":"Consul Client for Swift","archived":false,"fork":false,"pushed_at":"2018-04-11T10:19:29.000Z","size":188,"stargazers_count":4,"open_issues_count":30,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-18T06:48:27.530Z","etag":null,"topics":["client","consul","http","swift"],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cpageler93.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-05-16T15:31:33.000Z","updated_at":"2021-09-06T15:38:18.000Z","dependencies_parsed_at":"2022-11-29T07:02:09.328Z","dependency_job_id":null,"html_url":"https://github.com/cpageler93/ConsulSwift","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/cpageler93/ConsulSwift","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cpageler93%2FConsulSwift","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cpageler93%2FConsulSwift/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cpageler93%2FConsulSwift/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cpageler93%2FConsulSwift/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cpageler93","download_url":"https://codeload.github.com/cpageler93/ConsulSwift/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cpageler93%2FConsulSwift/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280139849,"owners_count":26279275,"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-20T02:00:06.978Z","response_time":62,"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":["client","consul","http","swift"],"created_at":"2025-10-21T10:08:18.677Z","updated_at":"2025-10-21T10:08:21.957Z","avatar_url":"https://github.com/cpageler93.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ConsulSwift\n\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/0b6383a3ae304868a9bc2ba0d58a635e)](https://www.codacy.com/app/cpageler93/ConsulSwift?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=cpageler93/ConsulSwift\u0026utm_campaign=badger)\n[![Twitter: @cpageler93](https://img.shields.io/badge/contact-@cpageler93-lightgrey.svg?style=flat)](https://twitter.com/cpageler93)\n[![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/cpageler93/ConsulSwift/blob/master/LICENSE)\n[![Consul](https://img.shields.io/badge/consul-1.0.6-C62A71.svg?style=flat)](https://www.consul.io)\n\n[Consul](https://www.consul.io) Client for Swift\n\nConsulSwift connects to `http://localhost:8500` by default.\n\nYou can change the default behaviour by calling an other initializer.\n\n```swift\nlet consul = Consul(url: otherBaseURL)\n```\n\n## Completeness of Content\n\nI'm sure I haven't implemented all API Endpoints Consul provides. Feel free to create a pull request or create an issue.\n\n\n## Examples\n\n### Synchronous Example\n\n```swift\n// get consul instance\nlet consul = Consul()\n\n// get agent members\nlet members = consul.agentMembers()\n\n// check members result\nswitch members {\ncase .success(let members):\n    // do whatever you like with members which is kind of [ConsulAgentMember]\ncase .failure(let error):\n    // handle error\n}\n```\n\n### Asynchronous Example\n\n```swift\n// get consul instance\nlet consul = Consul()\n\n// get agent members\nconsul.agentMembers { members in\n    // check members result\n    switch members {\n    case .success(let members):\n        // do whatever you like with members which is kind of [ConsulAgentMember]\n    case .failure(let error):\n        // handle error\n    }\n}\n```\n\n## Features\n\n|  Group             |  Endpoint                       |  Route                                   | Implemented  |\n|--------------------|---------------------------------|------------------------------------------|--------------|\n|  Agent - Base      |  List Members                   |  GET /v1/agent/members                   | ✅           |\n|                    |  Read Configuration             |  GET /v1/agent/self                      | ✅           |\n|                    |  Reload Agent                   |  PUT /v1/agent/reload                    | ✅           |\n|                    |  Enable Maintenance Mode        |  PUT /v1/agent/maintenance               | ✅           |\n|                    |  Join Agent                     |  GET /v1/agent/join/:id                  | ✅           |\n|                    |  Gracefull Leave + Shutdown     |  PUT /v1/agent/leave                     | ✅           |\n|                    |  Force Leave + Shutdown         |  PUT /v1/agent/force-leave               | ✅           |\n|                    |                                 |                                          |              |\n|  Agent - Checks    |  List Checks                    |  GET /v1/agent/checks                    | ✅           |\n|                    |  Register Check                 |  PUT /v1/agent/check/register            | ✅           |\n|                    |  Deregister Check               |  PUT /v1/agent/check/deregister/:id      | ✅           |\n|                    |  TLL Check Pass                 |  GET /v1/agent/check/pass/:id            | ✅           |\n|                    |  TLL Check Warn                 |  GET /v1/agent/check/warn/:id            | ✅           |\n|                    |  TLL Check Fail                 |  GET /v1/agent/check/fail/:id            | ✅           |\n|                    |  TLL Check Update               |  GET /v1/agent/check/update/:id          | ✅           |\n|                    |                                 |                                          |              |\n|  Agent - Services  |  List Services                  |  GET /v1/agent/services                  | ✅           |\n|                    |  Register Service               |  PUT /v1/agent/service/register          | ✅           |\n|                    |  Deregister Service             |  PUT /v1/agent/service/deregister/:id    | ✅           |\n|                    |  Enable Maintenance Mode        |  PUT /v1/agent/service/maintenance/:id   | ✅           |\n|                    |                                 |                                          |              |\n|  Catalog           |  List Datacenters               |  GET /v1/catalog/datacenters             | ✅           |\n|                    |  List Nodes in a given DC       |  GET /v1/catalog/nodes                   | ✅           |\n|                    |  List Services in a given DC    |  GET /v1/catalog/services                | ✅           |\n|                    |  List Nodes for Service         |  GET /v1/catalog/service/:id             | ✅           |\n|                    |  List Services for Node         |  GET /v1/catalog/node/:id                | ✅           |\n|                    |                                 |                                          |              |\n|  Coordinates       |  Read WAN Coordinates           |  GET /v1/coordinates/datacenters         | ❌           |\n|                    |  Read LAN Coordinates           |  GET /v1/coordinates/nodes               | ❌           |\n|                    |                                 |                                          |              |\n|  Events            |  Fire Event                     |  PUT /v1/event/fire/:name                | ✅           |\n|                    |  List Events                    |  GET /v1/event/list                      | ✅           |\n|                    |                                 |                                          |              |\n|  Health            |  List Checks for Node           |  GET /v1/health/node/:id                 | ✅           |\n|                    |  List Checks for Service        |  GET /v1/health/checks/:id               | ❌           |\n|                    |  List Nodes for Service         |  GET /v1/health/service/:id              | ✅           |\n|                    |  List Checks in State           |  GET /v1/health/state/:state             | ✅           |\n|                    |                                 |                                          |              |\n|  KV Store          |  Read Key                       |  GET /v1/kv/:key                         | ✅           |\n|                    |  Create/Update Key              |  PUT /v1/kv/:key                         | ✅           |\n|                    |  Delete Key                     |  DELETE /v2/kv/:key                      | ✅           |\n|                    |                                 |                                          |              |\n\n## Test\n\nTo test ConsulSwift on your local machine you need to start consul first\n\n```shell\n# start consul\nconsul agent -dev -datacenter fra1\n\n# test\nswift test\n```\n\n## Need Help?\n\nPlease [submit an issue](https://github.com/cpageler93/ConsulSwift/issues) on GitHub or contact me via Mail or Twitter.\n\n## License\n\nThis project is licensed under the terms of the MIT license. See the [LICENSE](LICENSE) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcpageler93%2Fconsulswift","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcpageler93%2Fconsulswift","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcpageler93%2Fconsulswift/lists"}