{"id":24984266,"url":"https://github.com/codesignal/learn_todo-api","last_synced_at":"2025-03-29T10:21:47.778Z","repository":{"id":273927592,"uuid":"921337009","full_name":"CodeSignal/learn_todo-api","owner":"CodeSignal","description":"A ToDo API that can be used with our courses that require an API to work with.  Mostly to be used with front-end courses that need an API to communicate with.","archived":false,"fork":false,"pushed_at":"2025-03-03T14:31:03.000Z","size":81,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-03T15:35:12.107Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CodeSignal.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,"publiccode":null,"codemeta":null}},"created_at":"2025-01-23T19:09:58.000Z","updated_at":"2025-03-03T14:27:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"78cfdd46-1961-4da1-b762-b85fe99f656e","html_url":"https://github.com/CodeSignal/learn_todo-api","commit_stats":null,"previous_names":["codesignal/learn_todo-api"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeSignal%2Flearn_todo-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeSignal%2Flearn_todo-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeSignal%2Flearn_todo-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeSignal%2Flearn_todo-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CodeSignal","download_url":"https://codeload.github.com/CodeSignal/learn_todo-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246168663,"owners_count":20734500,"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","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":"2025-02-04T09:47:03.636Z","updated_at":"2025-03-29T10:21:47.767Z","avatar_url":"https://github.com/CodeSignal.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Todo API\n\nTodo API is a simple RESTful service for managing a to-do list, allowing users to create, read, update, and delete tasks.\n\n## Prerequisites\n\n- [Docker](https://www.docker.com/get-started)  \n- [Docker Compose](https://docs.docker.com/compose/)\n\n## Quick Start\n\n1. Clone the repository:\n\n   ```bash\n   git clone https://github.com/matheusgalvao1/todo-api.git\n   cd todo-api\n   ```\n\n2. Build and start the application with Docker Compose:\n\n   ```bash\n   docker-compose up --build -d\n   ```\n\n3. The API will be available at `http://localhost:8000`.\n\n## Authentication Methods\n\nThe API's authentication is configured through `auth_config.yml` in the root directory:\n\n1. No Authentication (`none`):\n   ```yaml\n   auth:\n     method: none\n   ```\n   All endpoints will be public.\n\n2. API Key Authentication (`api_key`):\n   ```yaml\n   auth:\n     method: api_key\n     api_key: your-secure-api-key\n   ```\n   Clients must include the API key in the `X-API-Key` header.\n\n3. JWT Authentication (`jwt`):\n   ```yaml\n   auth:\n     method: jwt\n     secret: your-jwt-secret\n   ```\n   Clients must obtain a JWT token via login/signup and include it in the `Authorization: Bearer \u003ctoken\u003e` header.\n\n4. Session Authentication (`session`):\n   ```yaml\n   auth:\n     method: session\n     secret: your-session-secret\n   ```\n   Uses browser sessions for authentication.\n\n## Initial Data\n\nThe project comes with initial data, seeded at startup:\n- Todos: `initial_todos.json`\n- Users: `initial_users.json`\n\n## Running the API\n\nSimply run:\n```bash\npython app/main.py\n```\n\nThe API will read the configuration from `auth_config.yml`. If the file doesn't exist, it will default to no authentication.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodesignal%2Flearn_todo-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodesignal%2Flearn_todo-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodesignal%2Flearn_todo-api/lists"}