{"id":27969219,"url":"https://github.com/future-architect/backlogslackify","last_synced_at":"2025-07-16T08:44:39.734Z","repository":{"id":46795320,"uuid":"358141808","full_name":"future-architect/backlogslackify","owner":"future-architect","description":null,"archived":false,"fork":false,"pushed_at":"2021-09-25T09:57:22.000Z","size":60,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-07T21:09:09.146Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/future-architect.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":"2021-04-15T05:47:03.000Z","updated_at":"2023-07-04T04:47:46.000Z","dependencies_parsed_at":"2022-09-15T21:27:01.382Z","dependency_job_id":null,"html_url":"https://github.com/future-architect/backlogslackify","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/future-architect/backlogslackify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/future-architect%2Fbacklogslackify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/future-architect%2Fbacklogslackify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/future-architect%2Fbacklogslackify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/future-architect%2Fbacklogslackify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/future-architect","download_url":"https://codeload.github.com/future-architect/backlogslackify/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/future-architect%2Fbacklogslackify/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265497980,"owners_count":23777093,"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-05-07T21:09:07.517Z","updated_at":"2025-07-16T08:44:39.700Z","avatar_url":"https://github.com/future-architect.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"backlogslackify\n===============\n\n[![Apache-2.0 license](https://img.shields.io/badge/license-Apache2.0-blue.svg)][license]\n\n[license]: https://github.com/future-architect/backlogslackify/blob/master/LICENSE\n\n![](./slack.png)\n\n**backlogslacify** creates a slack post to announce backlog tickets that match your search criteria(e.g. expired ticket).\n\nit is depends on [github.com/kenzo0107/backlog](https://github.com/kenzo0107/backlog) to use Backlog API.\n\n## Usage\n\n* please set up the client and call Post()\n\n```main.go\npackage main\n\nimport (\n\tbls \"github.com/maito1201/backlogslackify\"\n\t\"os\"\n\t\"time\"\n\t\"github.com/kenzo0107/backlog\"\n)\n\nfunc main() {\n\tcondition := []bls.SearchCondition{\n\t\t{\n\t\t\tName: \"Tickets Untreated\",\n\t\t\tCondition: \u0026backlog.GetIssuesOptions{\n\t\t\t\tProjectIDs: []int{12345},\n\t\t\t\tCategoryIDs: []int{12345, 23456},\n\t\t\t\tStatusIDs: []int{1},\n\t\t\t},\n\t\t},\n        {\n\t\t\tName: \"Tickets Doing\",\n\t\t\tCondition: \u0026backlog.GetIssuesOptions{\n\t\t\t\tProjectIDs: []int{12345},\n\t\t\t\tCategoryIDs: []int{12345, 23456},\n\t\t\t\tStatusIDs: []int{2},\n\t\t\t},\n\t\t},\n        {\n\t\t\tName: \"Tickets Done(Not Completed)\",\n\t\t\tCondition: \u0026backlog.GetIssuesOptions{\n\t\t\t\tProjectIDs: []int{12345},\n\t\t\t\tCategoryIDs: []int{12345, 23456},\n\t\t\t\tStatusIDs: []int{3},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tName: \"Tickets Must Complete Today!\",\n\t\t\tCondition: \u0026backlog.GetIssuesOptions{\n\t\t\t\tProjectIDs: []int{12345},\n\t\t\t\tCategoryIDs: []int{12345, 23456},\n\t\t\t\tStatusIDs: []int{1, 2, 3},\n\t\t\t\tDueDateUntil: \"2021-04-01\",\n\t\t\t},\n\t\t},\n\t}\n\topts := bls.ClientOption {\n\t\tBacklogApiKey: \"dummy\",\n\t\tBacklogBaseUrl: \"https://example.backlog.com\",\n\t\tBacklogDueDate: \"weekend\",\n\t\tSlackWebhookUrl: \"https://hooks.slack.com/services/EXAMPLE/EXAMPLE/EXAMPLE\",\n\t\tSlackChannel: \"my-team-backlog\",\n\t\tSlackAccountName: \"Backlog-bot\",\n\t\tSlackIconEmoji: \":backlog:\",\n\t\tSlackIconUrl: \"\",\n\t\tIsSinglePost: true,\n\t\tDryRun: false,\n\t\tSearchConditions: condition,\n\t}\n\tif err := bls.Post(opts, time.Now()); err != nil {\n\t\tlog.Fatal(err)\n\t} \n}\n```\n\n* To keep your API keys safe, We recommend using json or something avoiding hard-code.\n\nmain.go\n\n```main.go\npackage main\n\nimport (\n\tbls \"github.com/maito1201/backlogslackify\"\n\t\"encoding/json\"\n\t\"os\"\n\t\"log\"\n\t\"time\"\n)\n\nfunc main() {\n\tconfig, err := os.ReadFile(\"./config.json\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tvar opts bls.ClientOption\n\tif err := json.Unmarshal(config, \u0026opts); err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tif err := bls.Post(opts, time.Now()); err != nil {\n\t\tlog.Fatal(err)\n\t} \n}\n```\n\nconfig.json\n\n```config.json\n{\n    \"backlog_api_key\": \"dummy\",\n    \"backlog_base_url\": \"https://exapmle.backlog.com\",\n    \"backlog_due_date\": \"end_of_month\",\n    \"slack_webhool_url\": \"https://hooks.slack.com/services/EXAMPLE/EXAMPLE/EXAMPLE\",\n    \"slack_channel\": \"my-team-backlog\",\n    \"slack_account_name\": \"\",\n    \"slack_icon_emoji\": \"\",\n    \"slack_icon_url\": \"https://example.com\",\n    \"is_single_post\": false,\n    \"dry_run\": true,\n    \"search_conditions\": [\n        {\n            \"name\": \"here is ticket info\",\n            \"condition\": {\n                \"ProjectIDs\": [12345],\n                \"CategoryIDs\": [12345, 23456],\n                \"StatusIDs\": [1, 2, 3]\n            }\n        }\n    ]\n}\n```\n\n* If the DryRun option is true, the information will not be posted to slack, it will only be displayed to stdout.\n\n## License\nApache2","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuture-architect%2Fbacklogslackify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffuture-architect%2Fbacklogslackify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuture-architect%2Fbacklogslackify/lists"}