{"id":22302277,"url":"https://github.com/seitbekir/cron-http","last_synced_at":"2025-07-14T18:05:43.106Z","repository":{"id":39695528,"uuid":"163176945","full_name":"seitbekir/cron-http","owner":"seitbekir","description":"This is scheduled tasks manager that calls `method uri` with Cron expression syntax","archived":false,"fork":false,"pushed_at":"2023-01-10T01:25:02.000Z","size":224,"stargazers_count":0,"open_issues_count":7,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-03T15:10:55.716Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/seitbekir.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}},"created_at":"2018-12-26T12:18:51.000Z","updated_at":"2022-06-24T20:52:32.000Z","dependencies_parsed_at":"2023-02-08T16:15:43.104Z","dependency_job_id":null,"html_url":"https://github.com/seitbekir/cron-http","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/seitbekir/cron-http","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seitbekir%2Fcron-http","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seitbekir%2Fcron-http/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seitbekir%2Fcron-http/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seitbekir%2Fcron-http/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seitbekir","download_url":"https://codeload.github.com/seitbekir/cron-http/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seitbekir%2Fcron-http/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265327762,"owners_count":23747761,"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":"2024-12-03T18:36:10.447Z","updated_at":"2025-07-14T18:05:43.071Z","avatar_url":"https://github.com/seitbekir.png","language":"JavaScript","readme":"# cron-http\n\nThis is scheduled tasks manager that calls `method uri` with Cron expression syntax.\nOrientaited to keep in Docker. Access via REST API.\n\nIf you need more advanced features and scheduled queues, use [kue-schedule](https://github.com/lykmapipo/kue-scheduler) or something kind of.\n\n## API\n\nThe API access to Store\n\n* Application port is `8293`\n* Validation was done with [week-validator](https://github.com/seitbekir/week-validator)\n\n### Task Model\n\n```ts\ninterface Task {\n    id: String | UUID; // autogenerates UUID\n    title: String;\n    expression: String;\n    method: 'GET'|'POST'|'PUT'|'PATCH'|'DELETE'|'OPTIONS';\n    uri: URL;\n    suicide: Boolean;\n    executed: Integer;\n    disabled: Boolean;\n    timezone: TimeZone;\n}\n```\n\n### Create Task\n\nCreate task on server\n\n#### Specs\n\nPOST: `/`\n\n| field | required | description | default |\n| -- |:-:|-|:-:|\n| title | yes | title of the task | |\n| expression | yes | Cron-style time expression | |\n| method | | HTTP Request Method | GET |\n| uri | yes | HTTP Request uri/url |\n| suicide | | Remove the task after been executed | false |\n| disabled | | Disable task executing on server | false |\n| timezone | | Set timezone (IANA Time Zones) of expression for been executed | UTC |\n\n#### Example\n\n```curl\ncurl -X POST \\\n    http://localhost:8293/ \\\n    -H 'Content-Type: application/json' \\\n    -d '{\n        \"title\": \"testing Task\",\n        \"expression\": \"* * * * *\",\n        \"method\": \"POST\",\n        \"uri\": \"http://docker.host:3000/test\"\n    }'\n```\n\nReturns: `201 Created` body: `Task`\n\n### Create Task (with preset Id)\n\n#### Specs\n\nPOST: `/:taskId`\n\n| field | required | description | default |\n| -- |:-:|-|:-:|\n| title | yes | title of the task | |\n| expression | yes | Cron-style time expression | |\n| method | | HTTP Request Method | GET |\n| uri | yes | HTTP Request uri/url |\n| suicide | | Remove the task after been executed | false |\n| disabled | | Disable task executing on server | false |\n| timezone | | Set timezone (IANA Time Zones) of expression for been executed | UTC |\n\n#### Example\n\n```curl\ncurl -X POST \\\n    http://localhost:8293/any-string-id-available \\\n    -H 'Content-Type: application/json' \\\n    -d '{\n        \"title\": \"testing Task\",\n        \"expression\": \"* * * * *\",\n        \"method\": \"POST\",\n        \"uri\": \"http://docker.host:3000/test\"\n    }'\n```\n\nReturns: `201 Created` body: `Task`\n\n### Update Task\n\nUpdates any allowed field of Task\n\nPATCH: `/:taskId`\n\n| field | required | description | default |\n| -- |:-:|-|:-:|\n| title | | title of the task | Actual |\n| expression | | Cron-style time expression | Actual |\n| method | | HTTP Request Method | Actual |\n| uri | | HTTP Request uri/url | Actual |\n| suicide | | Remove the task after been executed | Actual |\n| disabled | | Disable task executing on server | Actual |\n| timezone | | Set timezone (IANA Time Zones) of expression for been executed | Actual |\n\n#### Example\n\n```curl\ncurl -X PATCH \\\n    http://localhost:8293/any-string-id-available \\\n    -H 'Content-Type: application/json' \\\n    -d '{\n        \"title\": \"Better Title\",\n        \"method\": \"PUT\",\n    }'\n```\n\nReturns: `202 Updated` body: `Task` with updated `Task.title` and `Task.method`\n\n### Get Task\n\nReturning task by Id\n\nGET: `/:taskId`\n\n#### Example\n\n```curl\ncurl -X GET \\\n  http://localhost:8293/any-string-id-available\n```\n\nReturns: `200 Ok` body: `Task`\n\n### Get Tasks (all)\n\nReturning All tasks in array\n\nGET: `/`\n\n#### Example\n\n```curl\ncurl -X GET \\\n  http://localhost:8293/\n```\n\nReturns:\n* `200 Ok` body: `Task[]`\n* `204 No Content` body: `[]`\n\n### Delete Task\n\nRemove Task by Id\n\nDELETE: `/:taskId`\n\n```curl\ncurl -X DELETE \\\n  http://localhost:8293/any-string-id-available\n```\n\nReturns: `200 Ok` body: `Task`\n\n## Use in Docker\n\nTo Build use:\n\n```sh\ngit clone https://github.com/seitbekir/cron-http ./cron-http\ncd cron-http\ndocker build -t cron-http .\n```\n\nTo Run use:\n\n```sh\n    docker run \\\n    -d \\\n    --restart always \\\n    --name my-app.cron-http \\\n    --network=my-app-network \\ # Better to use in network\n    --publish 8293:8293 \\ # Only for debugging!\n    cron-http\n```\n\n## Contribution\n\nFeel free to create issues, PRs. Let's make this world (and this application) better!","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseitbekir%2Fcron-http","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseitbekir%2Fcron-http","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseitbekir%2Fcron-http/lists"}