{"id":15463454,"url":"https://github.com/cored/todoable","last_synced_at":"2026-06-13T21:32:32.364Z","repository":{"id":66523364,"uuid":"152661449","full_name":"cored/todoable","owner":"cored","description":"Exercise on OOD","archived":false,"fork":false,"pushed_at":"2018-10-18T22:50:08.000Z","size":107,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-21T12:35:11.070Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/cored.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-11T22:06:00.000Z","updated_at":"2018-10-18T22:51:02.000Z","dependencies_parsed_at":"2023-06-29T20:16:03.934Z","dependency_job_id":null,"html_url":"https://github.com/cored/todoable","commit_stats":{"total_commits":65,"total_committers":1,"mean_commits":65.0,"dds":0.0,"last_synced_commit":"c3f44b1442a462136ae084c8ec0baa1f82823036"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cored/todoable","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cored%2Ftodoable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cored%2Ftodoable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cored%2Ftodoable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cored%2Ftodoable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cored","download_url":"https://codeload.github.com/cored/todoable/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cored%2Ftodoable/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34301730,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","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":[],"created_at":"2024-10-02T00:21:09.034Z","updated_at":"2026-06-13T21:32:32.342Z","avatar_url":"https://github.com/cored.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Todoable\n\nWrapper for the Todoable API\n\n[![Maintainability](https://api.codeclimate.com/v1/badges/2e46f4fbc22fc4170fdc/maintainability)](https://codeclimate.com/github/cored/todoable/maintainability)\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n```ruby\ngem 'todoable'\n```\n\nAnd then execute:\n\n    $ bundle\n\nOr install it yourself as:\n\n    $ gem install todoable\n\n## Usage\n\n```ruby\nrequire \"todoable\"\n```\n\n### Authentication\n\n```ruby\n# Export the following environment variables\n# export TODOABLE_USERNAME=\"\u003cyour_user_name\u003e\"\n# export TODOABLE_PASSWORD=\"\u003cyour_password\u003e\"\n# or be explicit it and pass your credentials to the client as so\n\nclient = Todoable.authenticate!(username: \u003cyour_username\u003e, password: \u003cyour_password\u003e)\n```\n\n### Retrieve lists\n\n```ruby\nclient.lists\n=\u003e #\u003cTodoable::Resources::Lists lists=[\n  #\u003cTodoable::Resources::List\n    name=\"My new List\"\n    id=\"7ad41da8-1e81-4636-ae7f-5f2905974c31\"\n    src=\"http://todoable.teachable.tech/api/lists/7ad41da8-1e81-4636-ae7f-5f2905974c31\"\u003e,\n  #\u003cTodoable::Resources::List\n    name=\"Testing List\"\n    id=\"929bda84-b2e2-459f-b62d-4d76f58e96f0\"\n    src=\"http://todoable.teachable.tech/api/lists/929bda84-b2e2-459f-b62d-4d76f58e96f0\"\u003e]\u003e\n```\n\n### Retrieve a single list\n\n```ruby\nlist = client.create_list!(name: \"For single retrieval\")\nclient.list(id: list.id)\n=\u003e #\u003cTodoable::Resources::List name=\"For single retrieval\" id=nil src=nil\u003e\n```\n\n\n### Create a list\n\n```ruby\nTodoable.create_list!(name: \"my_new_list\")\n=\u003e #\u003cTodoable::Resources::List\n      name=\"For the readme\"\n      id=\"1e87973c-61b3-42ce-8e2c-e3021b1d4500\"\n      src=\"http://todoable.teachable.tech/api/lists/1e87973c-61b3-42ce-8e2c-e3021b1d4500\"\u003e\n```\n\n### Update a list\n\n```ruby\nlist = client.create_list!(name: \"My new list for update\")\n=\u003e #\u003cTodoable::Resources::List\n    name=\"My new list for update\"\n    id=\"71b21943-acea-4512-be7f-9770546783e2\"\n    src=\"http://todoable.teachable.tech/api/lists/71b21943-acea-4512-be7f-9770546783e2\"\n    items=[]\u003e\n\nclient.update_list!(id: list.id, name: \"Updating my list\")\n=\u003e #\u003cTodoable::Resources::List\n    name=\"Updating my list\"\n    id=\"71b21943-acea-4512-be7f-9770546783e2\"\n    src=\"http://todoable.teachable.tech/api/lists/71b21943-acea-4512-be7f-9770546783e2\"\n    items=[]\u003e\n```\n\n### Delete a list\n\n```ruby\nlist = client.list.find_by(name: \"For the readme\")\nTodoable.delete_list!(id: list.id)\n=\u003e #\u003cTodoable::Client:0x00007fe23d02de70 ...\u003e\n```\n\n### Create a todo item\n\n```ruby\nlist = client.lists.first\nclient.create_item!(list_id: list.id, name: \"My new item\")\n=\u003e #\u003cTodoable::Resources::Item\n      name=\"My new item\"\n      id=\"69bf4828-2cb4-4f96-bced-37fa928c8fb2\"\n      src=\"http://todoable.teachable.tech/api/lists/7ad41da8-1e81-4636-ae7f-5f2905974c31/items/69bf4828-2cb4-4f96-bced-37fa928c8fb2\"\n      finished_at=nil\u003e\n```\n\n### Mark an item as finished\n\n```ruby\nlist = client.lists.first\n=\u003e #\u003cTodoable::Resources::List\n      name=\"List 1\"\n      id=\"9718d581-4b06-4db8-adae-ae8db28dc1da\"\n      src=\"http://todoable.teachable.tech/api/lists/9718d581-4b06-4db8-adae-ae8db28dc1da\"\n      items=[]\u003e\nclient.create_item!(list_id: list.id, name: \"Item to mark as finished\")\n=\u003e #\u003cTodoable::Resources::Item\n      name=\"Item to mark as finished\"\n      id=\"b1568832-21f6-4900-a1ce-b3106c763872\"\n      src=\"http://todoable.teachable.tech/api/lists/9718d581-4b06-4db8-adae-ae8db28dc1da/items/b1568832-21f6-4900-a1ce-b3106c763872\"\n      list_id=\"9718d581-4b06-4db8-adae-ae8db28dc1da\" finished_at=nil\u003e\nclient.mark_item_finished!(list_id: list.id, id: \"b1568832-21f6-4900-a1ce-b3106c763872\")\n=\u003e #\u003cTodoable::Resources::Item\n      name=\"Item to mark as finished\"\n      id=\"b1568832-21f6-4900-a1ce-b3106c763872\"\n      src=\"http://todoable.teachable.tech/api/lists/9718d581-4b06-4db8-adae-ae8db28dc1da/items/b1568832-21f6-4900-a1ce-b3106c763872\"\n      list_id=\"9718d581-4b06-4db8-adae-ae8db28dc1da\"\n      finished_at=#\u003cDate: 2018-10-18 ((2458410j,0s,0n),+0s,2299161j)\u003e\u003e\n```\n\n### Delete an item from a list\n\n```ruby\nlist = client.lists.first\n=\u003e #\u003cTodoable::Resources::List\n      name=\"List 1\"\n      id=\"9718d581-4b06-4db8-adae-ae8db28dc1da\"\n      src=\"http://todoable.teachable.tech/api/lists/9718d581-4b06-4db8-adae-ae8db28dc1da\"\n      items=[]\u003e\nitem = client.create_item!(list_id: list.id, name: \"Delete me Please!\")\n=\u003e #\u003cTodoable::Resources::Item\n      name=\"Delete me Please!\"\n      id=\"7012cc3c-ea5e-437c-aaac-9f33ea0ad7b2\"\n      src=\"http://todoable.teachable.tech/api/lists/9718d581-4b06-4db8-adae-ae8db28dc1da/items/7012cc3c-ea5e-437c-aaac-9f33ea0ad7b2\"\n      list_id=\"9718d581-4b06-4db8-adae-ae8db28dc1da\"\n      finished_at=nil\u003e\nclient.delete_item!(list_id: list.id, id: item.id).list(id: list.id).items.include?(item)\n=\u003e false\n```\n\n## Development\n\nAfter checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.\n\nTo install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).\n\n## Contributing\n\nBug reports and pull requests are welcome on GitHub at https://github.com/cored/todoable. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.\n\n## License\n\nThe gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).\n\n## Code of Conduct\n\nEveryone interacting in the Todoable project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/cored/todoable/blob/master/CODE_OF_CONDUCT.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcored%2Ftodoable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcored%2Ftodoable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcored%2Ftodoable/lists"}