{"id":15027157,"url":"https://github.com/sabo99/codeigniter4_restfulapi_todolist","last_synced_at":"2026-03-16T21:32:19.487Z","repository":{"id":170699164,"uuid":"397582633","full_name":"sabo99/codeigniter4_RestfulAPI_TodoList","owner":"sabo99","description":"Aplikasi TodoList dengan menggunakan Framework CodeIgniter 4 berbasis Restful-API. RestfulAPI yang telah dibuat mulai dari menggunakkan method POST, GET, PUT dan DELETE serta terdapat sebuah Form \"MultiPart\" apabila ingin meng-upload file dengan sebuah method POST","archived":false,"fork":false,"pushed_at":"2021-08-28T17:40:09.000Z","size":88,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-13T03:15:40.899Z","etag":null,"topics":["codeigniter4","php-8","php-framework","resful-api"],"latest_commit_sha":null,"homepage":"","language":"PHP","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/sabo99.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":"2021-08-18T11:52:59.000Z","updated_at":"2021-08-28T17:40:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"73531df0-63d4-4a20-85bb-064373c11de2","html_url":"https://github.com/sabo99/codeigniter4_RestfulAPI_TodoList","commit_stats":null,"previous_names":["sabo99/codeigniter4_restfulapi_todolist"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sabo99%2Fcodeigniter4_RestfulAPI_TodoList","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sabo99%2Fcodeigniter4_RestfulAPI_TodoList/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sabo99%2Fcodeigniter4_RestfulAPI_TodoList/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sabo99%2Fcodeigniter4_RestfulAPI_TodoList/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sabo99","download_url":"https://codeload.github.com/sabo99/codeigniter4_RestfulAPI_TodoList/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243330319,"owners_count":20274039,"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":["codeigniter4","php-8","php-framework","resful-api"],"created_at":"2024-09-24T20:05:52.026Z","updated_at":"2025-12-28T01:24:11.972Z","avatar_url":"https://github.com/sabo99.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# API Specification\n\n## Create User (Sign Up)\n\nRequest :\n\n- Method : `POST`\n- Endpoint : `/api/users`\n- Header :\n  - Content-Type : `application/json`\n  - Accept : `application/json`\n- Body :\n\n```json\n{\n  \"email\": \"string, unique\",\n  \"password\": \"string, hash\",\n  \"username\": \"string\"\n}\n```\n\n- Response :\n\n```json\n{\n  \"code\": \"number\",\n  \"message\": \"string\",\n  \"user\": {\n    \"uid\": \"integer\",\n    \"email\": \"string\",\n    \"username\": \"string\",\n    \"avatar\": \"string, isNull\",\n    \"two_factor_auth\": \"integer\",\n    \"create_at\": \"datetime\"\n  }\n}\n```\n\n## Authentication (Sign In)\n\nRequest :\n\n- Method : `POST`\n- Endpoint : `/api/users/auth`\n- Header :\n  - Content-Type : `application/json`\n  - Accept : `application/json`\n- Body :\n\n```json\n{\n  \"emailOrUsername\": \"string, unique\",\n  \"password\": \"string, hash\"\n}\n```\n\n- Response :\n\n```json\n{\n  \"code\": \"number\",\n  \"message\": \"string\",\n  \"user\": {\n    \"uid\": \"integer\",\n    \"email\": \"string\",\n    \"username\": \"string\",\n    \"avatar\": \"string, isNull\",\n    \"two_factor_auth\": \"integer\"\n  }\n}\n```\n\n## Forgot User Password\n\nRequest :\n\n- Method : `GET`\n- Endpoint : `/api/users/{email}/forgot`\n- Header :\n  - Content-Type : `application/json`\n- Response :\n\n```json\n{\n  \"code\": \"number\",\n  \"message\": \"string\",\n  \"user\": {\n    \"uid\": \"integer\",\n    \"email\": \"string\",\n    \"username\": \"string\"\n  }\n}\n```\n\n## Get User\n\nRequest :\n\n- Method : `GET`\n- Endpoint : `/api/users/{uid}`\n- Header :\n  - Content-Type : `application/json`\n- Response :\n\n```json\n{\n  \"code\": \"number\",\n  \"message\": \"string\",\n  \"user\": {\n    \"email\": \"string\",\n    \"username\": \"string\",\n    \"two_factor_auth\": \"integer\",\n    \"created_at\": \"datetime\",\n    \"updated_at\": \"datetime\"\n  }\n}\n```\n\n## Edit User\n\nRequest :\n\n- Method : `GET`\n- Endpoint : `/api/users/{uid}/edit`\n- Header :\n  - Content-Type : `application/json`\n- Response :\n\n```json\n{\n  \"code\": \"number\",\n  \"message\": \"string\",\n  \"user\": {\n    \"email\": \"string\",\n    \"username\": \"string\",\n    \"two_factor_auth\": \"integer\",\n    \"create_at\": \"datetime\",\n    \"update_at\": \"datetime\"\n  }\n}\n```\n\n## Check Email User\n\nRequest :\n\n- Method : `GET`\n- Endpoint : `/api/users/{email}/check`\n- Header :\n  - Content-Type : `application/json`\n- Response :\n\n```json\n{\n  \"code\": \"number\",\n  \"message\": \"string\"\n}\n```\n\n## Update User\n\nRequest :\n\n- Method : `PUT`\n- Endpoint : `/api/users/{uid}`\n- Header :\n  - Content-Type : `application/json`\n  - Accept : `application/json`\n- Body :\n\n```json\n{\n  \"email\": \"string, unique\",\n  \"password\": \"string, hash\",\n  \"username\": \"string\",\n  \"two_factor_auth\": \"integer\"\n}\n```\n\n- Response :\n\n```json\n{\n  \"code\": \"number\",\n  \"message\": \"string\",\n  \"user\": {\n    \"uid\": \"integer\",\n    \"email\": \"string\",\n    \"password\": \"string\",\n    \"username\": \"string\",\n    \"two_factor_auth\": \"integer\",\n    \"updated_at\": \"datetime\"\n  }\n}\n```\n\n## Upload User Avatar\n\nRequest :\n\n- Method : `POST`\n- Endpoint : `/api/users/{uid}`\n- Header :\n  - Content-Type : `application/json`\n  - Accept : `application/json`\n- Body :\n\n```json\n{\n  \"uid\": \"integer, unique\",\n  \"avatar\": \"string, multipart|file\"\n}\n```\n\n- Response :\n\n```json\n{\n  \"code\": \"number\",\n  \"message\": \"string\",\n  \"user\": {\n    \"uid\": \"integer\",\n    \"avatar\": \"string\",\n    \"updated_at\": \"datetime\"\n  }\n}\n```\n\n## Delete User\n\nRequest :\n\n- Method : `DELETE`\n- Endpoint : `/api/users/{uid}`\n- Header :\n  - Content-Type : `application/json`\n- Response :\n\n```json\n{\n  \"code\": \"number\",\n  \"message\": \"string\"\n}\n```\n\n## Create Todo\n\nRequest :\n\n- Method : `POST`\n- Endpoint : `/api/todolist`\n- Header :\n  - Content-Type : `application/json`\n  - Accept : `application/json`\n- Body :\n\n```json\n{\n  \"uid\": \"string\",\n  \"title\": \"string\",\n  \"desc\": \"string\",\n  \"image\": \"string, file|multipart\"\n}\n```\n\n- Response :\n\n```json\n{\n  \"code\": \"number\",\n  \"message\": \"string\",\n  \"todo\": {\n    \"uid\": \"string, unique\",\n    \"title\": \"string\",\n    \"desc\": \"string\",\n    \"image\": \"string\",\n    \"created_at\": \"datetime\"\n  }\n}\n```\n\n## List Todo\n\nRequest :\n\n- Method : `GET`\n- Endpoint : `/api/todolist/{uid}`\n- Header :\n  - Content-Type : `application/json`\n- Response :\n\n```json\n{\n  \"code\": \"number\",\n  \"message\": \"string\",\n  \"todoList\": [\n    {\n      \"uid\": \"string, unique\",\n      \"title\": \"string\",\n      \"desc\": \"string\",\n      \"image\": \"string\"\n    },\n    {\n      \"uid\": \"string, unique\",\n      \"title\": \"string\",\n      \"desc\": \"string\",\n      \"image\": \"string\"\n    }\n  ]\n}\n```\n\n## Get Todo\n\nRequest :\n\n- Method : `GET`\n- Endpoint : `/api/todolist/{id}/edit`\n- Header :\n  - Content-Type : `application/json`\n- Response :\n\n```json\n{\n  \"code\": \"number\",\n  \"message\": \"string\",\n  \"todo\": {\n    \"uid\": \"string, unique\",\n    \"title\": \"string\",\n    \"desc\": \"string\",\n    \"image\": \"string\"\n  }\n}\n```\n\n## Update Todo\n\nRequest :\n\n- Method : `PUT`\n- Endpoint : `/api/todolist/{uid}`\n- Header :\n  - Content-Type : `application/json`\n  - Accept : `application/json`\n- Body :\n\n```json\n{\n  \"title\": \"string\",\n  \"desc\": \"string\"\n}\n```\n\n- Response :\n\n```json\n{\n  \"code\": \"number\",\n  \"message\": \"string\",\n  \"todo\": {\n    \"title\": \"string\",\n    \"desc\": \"string\",\n    \"updated_at\": \"datetime\"\n  }\n}\n```\n\n## Upload Todo Image\n\nRequest :\n\n- Method : `POST`\n- Endpoint : `/api/todolist/{id}`\n- Header :\n  - Content-Type : `application/json`\n  - Accept : `application/json`\n- Body :\n\n```json\n{\n  \"id\": \"integer\",\n  \"image\": \"string, multipart|file\"\n}\n```\n\n- Response :\n\n```json\n{\n  \"code\": \"number\",\n  \"message\": \"string\",\n  \"todo\": {\n    \"id\": \"integer\",\n    \"image\": \"string\",\n    \"updated_at\": \"datetime\"\n  }\n}\n```\n\n## Delete Todo\n\nRequest :\n\n- Method : `DELETE`\n- Endpoint : `/api/todolist/{id}`\n- Header :\n  - Content-Type : `application/json`\n- Response :\n\n```json\n{\n  \"code\": \"number\",\n  \"message\": \"string\"\n}\n```\n\n## Delete All Todo\n\nRequest :\n\n- Method : `DELETE`\n- Endpoint : `/api/todolist/{id}/user`\n- Header :\n  - Content-Type : `application/json`\n- Response :\n\n```json\n{\n  \"code\": \"number\",\n  \"message\": \"string\"\n}\n```\n\n## Create Log User\n\nRequest :\n\n- Method : `POST`\n- Endpoint : `/api/loguser `\n- Header :\n  - Content-Type : `application/json`\n- Body :\n\n```json\n{\n  \"uid\": \"integer\",\n  \"ip_address\": \"string | getIPAddress_PHP\",\n  \"mac_address\": \"string\",\n  \"action\": \"string\"\n}\n```\n\n- Response :\n\n```json\n{\n  \"code\": \"number\",\n  \"message\": \"string\",\n  \"logusers\": {\n    \"uid\": \"string, unique\",\n    \"mac_address\": \"string\",\n    \"ip_address\": \"string\",\n    \"action\": \"string\",\n    \"created_at\": \"datetime\"\n  }\n}\n```\n\n## Get Log User\n\nRequest :\n\n- Method : `GET`\n- Endpoint : `/api/loguser/{uid}`\n- Header :\n  - Content-Type : `application/json`\n- Response :\n\n```json\n{\n  \"code\": \"number\",\n  \"message\": \"string\",\n  \"logusers\": {\n    \"uid\": \"string, unique\",\n    \"mac_address\": \"string\",\n    \"ip_address\": \"string\",\n    \"action\": \"string\",\n    \"created_at\": \"datetime\"\n  }\n}\n```\n\n#\n\n# CodeIgniter 4 Application Starter\n\n## What is CodeIgniter?\n\nCodeIgniter is a PHP full-stack web framework that is light, fast, flexible and secure.\nMore information can be found at the [official site](http://codeigniter.com).\n\nThis repository holds a composer-installable app starter.\nIt has been built from the\n[development repository](https://github.com/codeigniter4/CodeIgniter4).\n\nMore information about the plans for version 4 can be found in [the announcement](http://forum.codeigniter.com/thread-62615.html) on the forums.\n\nThe user guide corresponding to this version of the framework can be found\n[here](https://codeigniter4.github.io/userguide/).\n\n## Installation \u0026 updates\n\n`composer create-project codeigniter4/appstarter` then `composer update` whenever\nthere is a new release of the framework.\n\nWhen updating, check the release notes to see if there are any changes you might need to apply\nto your `app` folder. The affected files can be copied or merged from\n`vendor/codeigniter4/framework/app`.\n\n## Setup\n\nCopy `env` to `.env` and tailor for your app, specifically the baseURL\nand any database settings.\n\n## Important Change with index.php\n\n`index.php` is no longer in the root of the project! It has been moved inside the _public_ folder,\nfor better security and separation of components.\n\nThis means that you should configure your web server to \"point\" to your project's _public_ folder, and\nnot to the project root. A better practice would be to configure a virtual host to point there. A poor practice would be to point your web server to the project root and expect to enter _public/..._, as the rest of your logic and the\nframework are exposed.\n\n**Please** read the user guide for a better explanation of how CI4 works!\n\n## Repository Management\n\nWe use Github issues, in our main repository, to track **BUGS** and to track approved **DEVELOPMENT** work packages.\nWe use our [forum](http://forum.codeigniter.com) to provide SUPPORT and to discuss\nFEATURE REQUESTS.\n\nThis repository is a \"distribution\" one, built by our release preparation script.\nProblems with it can be raised on our forum, or as issues in the main repository.\n\n## Server Requirements\n\nPHP version 7.3 or higher is required, with the following extensions installed:\n\n- [intl](http://php.net/manual/en/intl.requirements.php)\n- [libcurl](http://php.net/manual/en/curl.requirements.php) if you plan to use the HTTP\\CURLRequest library\n\nAdditionally, make sure that the following extensions are enabled in your PHP:\n\n- json (enabled by default - don't turn it off)\n- [mbstring](http://php.net/manual/en/mbstring.installation.php)\n- [mysqlnd](http://php.net/manual/en/mysqlnd.install.php)\n- xml (enabled by default - don't turn it off)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsabo99%2Fcodeigniter4_restfulapi_todolist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsabo99%2Fcodeigniter4_restfulapi_todolist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsabo99%2Fcodeigniter4_restfulapi_todolist/lists"}