[](https://packagist.org/packages/masyasmv/freedom-broker-api)
[](https://php.net)
[](https://packagist.org/packages/masyasmv/freedom-broker-api)
[](https://github.com/MasyaSmv/freedom-broker-api/actions)
[](https://coveralls.io/github/MasyaSmv/freedom-broker-api?branch=main)
[](LICENSE)
# Freedom Broker API SDK for PHP 8 / Laravel 8 +
Lean, fully‐typed SDK for **Freedom24 (TraderNet) broker API**:
| Domain | What you get |
|-----------------|----------------------------------------------------------------------------------------------------------------|
| **Reports** | JSON fetch → strict DTO collections
balances, operations, positions, _payments_ (dividends / compensations) |
| **Trading** | send, cancel, list orders |
| **Market data** | securities catalog, quotes, historical bars |
| **Auth** | V1 & V2 HMAC request signing |
| **Tooling** | `ReportPeriodDTO` (start/end helpers) |
> All DTOs are Psalm-/PHPStan-friendly; persistence/business logic stays in **your**
> app.([GitHub](https://raw.githubusercontent.com/MasyaSmv/freedom-broker-api/develop/README.md))
---
## ✨ What’s new (v 1.3.0)
* `PaymentDTO` + `payments` collection in parser (dividends, tax compensation).
* Safe numeric casting: `"-"` or `""` ⇒ `0.0` in money fields.
* `ReportPeriodDTO` with helpers `contains()` & `lengthInDays()`.
* 100 % unit-coverage on GitHub Actions & Coveralls.
* README overhaul 😎
Full list: see [CHANGELOG](CHANGELOG.md).
---
## ️Requirements
* PHP **≥ 8.0** (8.1–8.3 preferred)
* `ext-json`, `ext-mbstring`
* Guzzle 7+
* Laravel 8/9/10 (auto-discover)
---
## Installation
```bash
composer require masyasmv/freedom-broker-api
```
### Laravel setup
```bash
php artisan vendor:publish \
--provider="MasyaSmv\FreedomBrokerApi\Laravel\Providers\FreedomBrokerServiceProvider" \
--tag="freedom-config"
```
```dotenv
FREEDOM_PUBLIC_KEY=your_public_key
FREEDOM_PRIVATE_KEY=your_secret_key
```
That’s it – the package facade **`Freedom::`** is ready.
---
## Quick Start
```php
use MasyaSmv\FreedomBrokerApi\Laravel\Facades\Freedom;
$public = config('freedom.public_key');
$private = config('freedom.private_key');
// 1. Full broker report – now includes `payments`
$report = Freedom::load($public, $private, '2025-06-01', '2025-06-30');
$dividends = $report['payments']; // Collection
// 2. Send order
$order = Freedom::orders()->send('AAPL.US', 1, 182.50, 'ACC-123');
// 3. Quote info
$quote = Freedom::quotes()->get('AAPL.US');
// 4. Historical bars
$bars = Freedom::history()
->history('AAPL.US', new DateTime('2024-01-01'), new DateTime());
```
---
## API Reference (brief)
| Service | Facade/helper | Returns / DTO |
|---------------------------------------|----------------------|-------------------------------|
| `load($from,$to)` | `Freedom::load()` | `array{…}` – see above |
| `StockService::all()` | `Freedom::stocks()` | `Collection` |
| `QuoteInfoService::get($ticker)` | `Freedom::quotes()` | `StockDTO |null` |
| `StockHistoryService::history()` | `Freedom::history()` | `Collection` |
| `OrderService::send/cancel/history()` | `Freedom::orders()` | `OrderDTO |CancelOrderDTO|Collection` |
---
## ✅ Quality
```bash
composer test # PHPUnit (unit + stub integration)
composer coverage # html/text coverage
composer cs # style check
composer cs-fix # auto-fix
composer phpstan # static analysis (level 8)
```
Live API tests (`FREEDOM_LIVE_TEST=1`) are opt-in to keep CI
fast.([GitHub](https://raw.githubusercontent.com/MasyaSmv/freedom-broker-api/develop/composer.json))
---
## Contributing
1. Fork → feature branch (`feat/xxx`)
2. Add tests (aim ≥ 95 % cov.)
3. `composer test && composer cs`
4. PR against `develop`
We follow PSR-12 + Laravel conventions.
---
## License
Released under the **MIT** license.
© Masya Smv, 2025