Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Redmine Api

Redmine Api Laravel Package

kbsali/redmine-api

PHP client for the Redmine REST API that simplifies integrating Redmine into your applications. Access projects, issues, users, time entries, versions, and more through a clean, object-oriented interface with straightforward authentication and response handling.

View on GitHub
Deep Wiki
Context7

kbsali/redmine-api is a PHP client library for the Redmine REST API, letting you interact with issues, projects, users, time entries, and more from your applications. Built on Guzzle, it offers a clean, object-oriented interface for common Redmine operations without hand-crafting HTTP requests.

  • Full coverage of issues, projects, users, time entries, and news endpoints
  • Simple Guzzle-based client with configurable base URL and API key
  • Support for filtering, pagination, and custom fields
  • Easy Composer installation with PSR-compatible autoloading
  • Extensible architecture for adding new API resources
Frequently asked questions about Redmine Api
How do I install kbsali/php-redmine-api in a Laravel application?
Install it with Composer by running composer require kbsali/redmine-api. It is PSR-4 autoloaded and framework-agnostic, so no extra Laravel package discovery step is needed. After install, add a config entry for your Redmine base URL and credentials, then bind the client in a service provider.
Does this package support Laravel 10 and Laravel 11?
Yes. The library has no Laravel coupling at all, so it works on any Laravel version running PHP 8.1 or newer, including Laravel 10 and 11. Compatibility is determined by your PHP version and the Guzzle/PSR-18 transport versions rather than the Laravel release. That also means it will keep working across future Laravel upgrades without package updates.
Is there a Laravel service provider or facade for php-redmine-api?
No. The package ships no service provider, facade, config publishing, or Eloquent models by design. You register the client yourself as a singleton in a dedicated service provider, reading base URL and credentials from config. Most teams then wrap it in an application-owned interface such as RedmineGateway so controllers and jobs never touch the SDK directly.
How should I configure Redmine API authentication in Laravel?
The client supports both an API key and HTTP basic auth with username and password, so pick whichever your Redmine administrators permit. Store the values in config/services.php or a dedicated config/redmine.php file backed by environment variables, and never hardcode them. Resolve the configured client through the container so queued jobs and console commands use the same credentials.
How do I create or update a Redmine issue from Laravel?
Use the issues resource on the client and pass an array of fields such as project_id, subject, description, status_id, and assigned_to_id. For updates, call the update method with the issue ID and only the fields you want to change. Route writes through queued jobs so a slow or unavailable Redmine server never blocks a user request.
Can I use Laravel's Http::fake() to test code that calls php-redmine-api?
No. The SDK performs its own HTTP transport, so Laravel's Http::fake() will not intercept those requests. Instead, mock at your own wrapper interface or inject a mock client object into the adapter during tests. Keeping the SDK behind an application-owned interface is what makes the integration testable without hitting a live Redmine instance.
How do I handle pagination when fetching many Redmine issues?
The Redmine API accepts limit and offset parameters, and responses include total_count, offset, and limit values you can use to page through results. Iterate in chunks and dispatch work to queued jobs rather than loading thousands of issues into memory at once. Because Redmine has no reliable push or webhook support, any large sync must be designed as scheduled polling.
Which Redmine resources does this client cover?
It exposes resource objects for the core Redmine entities including issues, projects, users, time entries, attachments, versions, and news. That covers most read and write integration needs such as logging time, syncing projects, or creating issues. If you need an endpoint the SDK does not wrap, you can still call the underlying client directly.
Does the client return typed objects for Redmine issues and custom fields?
No. Responses are largely array-based, with no strongly typed DTO layer to validate against. Custom fields, status transitions, and some endpoints also vary between Redmine major versions, so pin behavior against a known server version. Treat field drift on the Redmine side as a runtime risk and validate responses in your adapter before they reach domain code.
Is kbsali/php-redmine-api actively maintained, and what are the alternatives?
It is an MIT-licensed, single-maintainer project with a recent release, but you should verify actual commit cadence before committing to it long term. The main install-time risk is Guzzle version skew against what your Laravel app already resolves, so check with composer why-not before adding it. Alternatives include writing a thin client over Laravel's HTTP client, which gives you Http::fake() support but requires more code, or using a Redmine-focused Laravel package if one fits your needs.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
robertmarney/lara-hierarchial-collections
simonschaufi/rule-doc-generator
emissaoja/emissaoja
blackbricksoftware/gravityforms-civicrm-form-processor
al-rahabi/fancy-crud
jinas/dhivatar-component
mltstephane/laravel-quality
bernskiold/laravel-talentlms
bernskioldmedia/laravel-form-architect
youbar/easy-crud
c-point-labs/laravel-hostyourai
dbravoan/dbcms-admin-theme-dbcms
dbravoan/dbcms-theme-db-cyber
dbravoan/dbcms-blocks-basic
dbravoan/dbcms-module-content-audit
dbravoan/dbcms-module-ai-assistant
paygate-to/paygate-php
padosoft/askmydocs-connector-base
defstudio/supercharged-carbon
bernskioldmedia/laravel-matomo