{"id":18717350,"url":"https://github.com/diego-ninja/blackmine","last_synced_at":"2025-10-06T01:22:20.015Z","repository":{"id":62494986,"uuid":"420146806","full_name":"diego-ninja/blackmine","owner":"diego-ninja","description":"A full featured Redmine API client written in php8 with a lot of witchcraft and black magic in it.","archived":false,"fork":false,"pushed_at":"2023-09-26T16:03:30.000Z","size":484,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-05T07:05:39.644Z","etag":null,"topics":["api","blackmine","php","redmine","rest-api","satis-enabled"],"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/diego-ninja.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"MIT-LICENSE.txt","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,"zenodo":null}},"created_at":"2021-10-22T15:18:59.000Z","updated_at":"2024-07-01T15:05:26.000Z","dependencies_parsed_at":"2025-05-20T00:33:37.703Z","dependency_job_id":null,"html_url":"https://github.com/diego-ninja/blackmine","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/diego-ninja/blackmine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diego-ninja%2Fblackmine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diego-ninja%2Fblackmine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diego-ninja%2Fblackmine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diego-ninja%2Fblackmine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/diego-ninja","download_url":"https://codeload.github.com/diego-ninja/blackmine/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diego-ninja%2Fblackmine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278547363,"owners_count":26004769,"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","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"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":["api","blackmine","php","redmine","rest-api","satis-enabled"],"created_at":"2024-11-07T13:15:53.544Z","updated_at":"2025-10-06T01:22:19.989Z","avatar_url":"https://github.com/diego-ninja.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Blackmine Logo](docs/assets/blackmine-logo-0001.png)\n\n[![Latest Version on Packagist](https://img.shields.io/packagist/v/blackmine/blackmine.svg?style=flat)](https://packagist.org/packages/diego-ninja/docker)\n[![Total Downloads](https://img.shields.io/packagist/dt/blackmine/blackmine.svg?style=flat)](https://packagist.org/packages/diego-ninja/docker)\n![Packagist PHP Version Support](https://img.shields.io/packagist/php-v/blackmine/blackmine) \n[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/diego-ninja/blackmine/badges/quality-score.png?b=main)](https://scrutinizer-ci.com/g/diego-ninja/blackmine/?branch=main)\n![Scrutinizer build (GitHub/Bitbucket)](https://img.shields.io/scrutinizer/build/g/diego-ninja/blackmine/main)\n![GitHub](https://img.shields.io/github/license/diego-ninja/blackmine)\n![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/diego-ninja/blackmine?include_prereleases)\n\n# Blackmine\n\nBlackmine is a full-featured Redmine API client written in [PHP8](https://www.php.net/releases/8.0/en.php). It implements a simple interface and converts responses into models and collections. \n\n# Installation\n\n\u003cpre\u003e\u003cfont color=\"#8BE9FD\"\u003ecomposer\u003c/font\u003e\u003cfont color=\"#F8F8F2\"\u003e \u003c/font\u003e\u003cfont color=\"#BD93F9\"\u003erequire\u003c/font\u003e\u003cfont color=\"#F8F8F2\"\u003e \u003c/font\u003e\u003cfont color=\"#BD93F9\"\u003eblackmine/blackmine\u003c/font\u003e\u003c/pre\u003e\n\n\n# Quick example\n\n```php\n\n$options = new \\Blackmine\\Client\\ClientOptions([\n    ClientOptions::CLIENT_OPTION_BASE_URL =\u003e \"https://your.redmine.url\",\n    ClientOptions::CLIENT_OPTION_API_KEY =\u003e \"your.api.key\"\n]);\n\n$client = new \\Blackmine\\Client\\Client($options);\n$issues = $client-\u003egetRepository(\"issues\");\n\n$data = $issues\n    -\u003eaddFilter(Issues::ISSUE_FILTER_ISSUE_ID, [41432, 41436])\n    -\u003ewith([Issues::ISSUE_RELATION_WATCHERS])\n    -\u003esearch();\n\n$issue = new \\Blackmine\\Model\\Issue\\Issue();\n$issue-\u003esetSubject(\"Test Issue\");\n$issue-\u003esetDescription(\"An issue description, yeah, a real one...\");\n$issue-\u003esetStartDate(\\Carbon\\CarbonImmutable::create(2021, 10, 31));\n$issue-\u003esetDueDate(\\Carbon\\CarbonImmutable::create(2022, 10, 31));\n$issues-\u003ecreate($issue);\n\n```\n\n## Status\n\nActually only JSON format is supported, yeah, JSON is cool and XML isn't. If you think  XML is cool enough you can fork the project, start the feature/xml_is_cool branch and pull request your coolness.\n\nAlmost all exposed Redmine APIs are supported by Blackmine. There a few bugs that we are trying to fis as soon as possible.\n\nBlackmine uses [Requests](https://requests.ryanmccue.info/) as transport layer, in a near or not so near future, I will try to pivot to a [PSR18](https://www.php-fig.org/psr/psr-18/) implementation. If you can't wait, you can fork the project, start the feature/psr18_or_death and pull request your hurry ups. \n\nBlackmine uses [Carbon](https://carbon.nesbot.com/) to manage dates.\n\n## Things that are almost complete:\n - [Issues API](https://www.redmine.org/projects/redmine/wiki/Rest_Issues)\n - [Projects API](https://www.redmine.org/projects/redmine/wiki/Rest_Projects)\n - [Users API](https://www.redmine.org/projects/redmine/wiki/Rest_Users)\n - [Time Entries API](https://www.redmine.org/projects/redmine/wiki/Rest_TimeEntries)\n - [Issue Categories API](https://www.redmine.org/projects/redmine/wiki/Rest_IssueCategories)\n - [Issue Statuses API](https://www.redmine.org/projects/redmine/wiki/Rest_IssueStatuses)\n - [Issue Relations API](https://www.redmine.org/projects/redmine/wiki/Rest_IssueRelations)\n - [Trackers API](https://www.redmine.org/projects/redmine/wiki/Rest_Trackers)\n - [Groups API](https://www.redmine.org/projects/redmine/wiki/Rest_Groups)\n - [Versions API](https://www.redmine.org/projects/redmine/wiki/Rest_Versions)\n - [Roles API](https://www.redmine.org/projects/redmine/wiki/Rest_Roles)\n - [Custom Fields API](https://www.redmine.org/projects/redmine/wiki/Rest_CustomFields)\n - [Memberships API](https://www.redmine.org/projects/redmine/wiki/Rest_Memberships)\n - [Files API](https://www.redmine.org/projects/redmine/wiki/Rest_Files)\n - [Enumerations API](https://www.redmine.org/projects/redmine/wiki/Rest_Enumerations)\n - [Attachments API](https://www.redmine.org/projects/redmine/wiki/Rest_Attachments)\n - [Wiki Pages API](https://www.redmine.org/projects/redmine/wiki/Rest_WikiPages) (bugged)\n - [News API](https://www.redmine.org/projects/redmine/wiki/Rest_News)\n - Caching responses (with Tag/TTL invalidation mechanism)\n - Impersonating users (for admin users)\n\n## Things that are incomplete:\n - Documentation\n - Search fluent API (80%)\n - Error handling and exceptions (0%)\n - Model functionality (50%)\n - Unit tests (0%)\n - Magic methods signatures on models and repositories (50%)\n - Date conversion from and to CarbonImmutable objects\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiego-ninja%2Fblackmine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdiego-ninja%2Fblackmine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiego-ninja%2Fblackmine/lists"}