PHPackages                             mmtech/mmt-risk-sdk - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. mmtech/mmt-risk-sdk

ActiveLibrary[HTTP &amp; Networking](/categories/http)

mmtech/mmt-risk-sdk
===================

PHP SDK for MMT Risk Management Service API (Guzzle transport, typed commands and responses). Laravel 11–13 compatible.

3.5.0(1mo ago)043↑100%proprietaryPHPPHP ^8.3

Since May 9Pushed 1mo agoCompare

[ Source](https://github.com/MMTech-Solutions/LARAVEL-RISK-SERVICE-SDK)[ Packagist](https://packagist.org/packages/mmtech/mmt-risk-sdk)[ Docs](https://github.com/MMTech-Solutions/LARAVEL-RISK-SERVICE-SDK)[ RSS](/packages/mmtech-mmt-risk-sdk/feed)WikiDiscussions main Synced 3w ago

READMEChangelogDependencies (4)Versions (12)Used By (0)

mmt-risk-sdk (PHP)
==================

[](#mmt-risk-sdk-php)

HTTP SDK for the **MMT Risk Management Service** REST API. Architecture mirrors **`mmt/laravel-trading-service-sdk`**: Guzzle transport, typed **Commands**, **`ActionResultInterface`** envelope parsing (`{ "code", "message", "data" }`), and optional **`WireHydration`** via `getMappedData(FQCN::class)`.

- **HTTP**: `guzzlehttp/guzzle` (direct `Client`, same transport style as the Trading SDK).
- **Laravel**: auto-discovery for `MmtRiskSdk\MmtRiskSdkServiceProvider`, publishable config.
- **Entry point**: `MmtRiskSdk\RiskService` (`accounts()`, `brokers()`, `rules()`, `ingress()`, `metricPhases()`, `health()`).
- **Contract**: OpenAPI snapshot at repo root — **`openapi.json`**.

Requirements
------------

[](#requirements)

- PHP **8.3+**
- `guzzlehttp/guzzle` **^7.2**
- `illuminate/support` **^11 | ^12 | ^13**

Install
-------

[](#install)

Package name: **`mmtech/mmt-risk-sdk`**.

```
composer require mmtech/mmt-risk-sdk:^2.0
```

Release notes: **`CHANGELOG.md`**.

Environment
-----------

[](#environment)

VariableDescription`RISK_SERVICE_URL`Base URL of the Risk API (no trailing slash required; normalized internally).Publish config (optional):

```
php artisan vendor:publish --tag=mmt-risk-sdk-config
```

Quick usage (Laravel)
---------------------

[](#quick-usage-laravel)

```
use MmtRiskSdk\Domains\Accounts\Commands\CreateAccountCommand;
use MmtRiskSdk\Domains\Accounts\ObjectResponses\AccountResponseItem;
use MmtRiskSdk\RiskService;

$risk = app(RiskService::class);

$result = $risk->accounts()->listAccounts();

if ($result->isSuccess()) {
    /** @var AccountResponseItem[] $rows */
    $rows = $result->getMappedData(AccountResponseItem::class);
}

$health = $risk->health(); // plain array JSON from GET /health

$created = $risk->accounts()->createAccount(
    new CreateAccountCommand(login: '1001', broker_id: $brokerUuid),
);

if ($created->isSuccess()) {
    $account = $created->getMappedData(AccountResponseItem::class);
}

use MmtRiskSdk\Domains\Accounts\Commands\ProvisionAccountCommand;
use MmtRiskSdk\Domains\Accounts\Commands\ProvisionMetricPhaseCommand;
use MmtRiskSdk\Domains\Accounts\Commands\ProvisionRuleCommand;
use MmtRiskSdk\Domains\Accounts\ObjectResponses\AccountProvisionResponseItem;

$provisioned = $risk->accounts()->provisionAccount(
    new ProvisionAccountCommand(
        login: '50123456',
        broker_id: $brokerUuid,
        start_balance: 100000.0,
        metric_phases: [
            new ProvisionMetricPhaseCommand(
                name: 'Challenge',
                rules: [
                    new ProvisionRuleCommand(
                        conditions: [
                            [
                                'type' => 'comparison',
                                'metric' => 'return_equity_pct_day',
                                'operator' => '
