PHPackages                             yamuf/laravel-partner - 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. yamuf/laravel-partner

ActiveLibrary

yamuf/laravel-partner
=====================

Official Laravel integration for the Yamuf developer and partner platform.

v0.1.0(today)00MITPHPPHP ^8.2CI passing

Since Aug 14Pushed todayCompare

[ Source](https://github.com/kuruyiva/yamuf-laravel-partner)[ Packagist](https://packagist.org/packages/yamuf/laravel-partner)[ RSS](/packages/yamuf-laravel-partner/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (5)Versions (2)Used By (0)

Yamuf Laravel Partner
=====================

[](#yamuf-laravel-partner)

Official Laravel integration for the Yamuf developer and partner platform. Yamuf remains the source of truth for catalogue data, Course Match, and partner leads.

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

[](#requirements)

- PHP 8.2 or later.
- Laravel 12.

Installation
------------

[](#installation)

```
composer require yamuf/laravel-partner
php artisan vendor:publish --tag=yamuf-config
```

```
YAMUF_API_URL=https://api.yamuf.com
YAMUF_API_KEY=your-server-side-key
YAMUF_LOCALE=fr
```

For local package development, use a Composer path repository and `yamuf/laravel-partner:@dev`. The local API documentation is available at `http://local.yamufapi.com/docs/api`.

Usage
-----

[](#usage)

```
use Yamuf\Laravel\Facades\Yamuf;

$partner = Yamuf::partner()->me();
$universities = Yamuf::universities()->list(['per_page' => 6]);
$programmes = Yamuf::programmes()->list(['university' => $universityUuid]);
$countries = Yamuf::catalogue()->countries();
```

### Search

[](#search)

Search runs against Yamuf's public catalogue API; the package does not download or search catalogue pages locally.

```
$results = Yamuf::search()->all('informatique');

$universities = Yamuf::search()->universities('Dakar');

$programmes = Yamuf::search()->programmes(
    'Génie Informatique',
    [
        'locale' => 'fr',
        'study_level' => 4,
        'field' => 227,
        'per_page' => 10,
    ]
);

foreach ($results->items() as $result) {
    echo $result->type;
    echo $result->score;
    echo $result->item->name;
}

$french = Yamuf::locale('fr')->search()->universities('Dakar');
```

Search supports `locale`, `page`, `per_page`, `country`, and `city`. Programme search also supports `university`, `study_level`, and `field`. Unified search supports `type` (`all`, `university`, or `programme`). Search GET requests use the same safely scoped cache as catalogue requests; query, type, locale, filters, and pagination are cache-key dimensions.

Catalogue pagination returns a typed wrapper:

```
$page = Yamuf::universities()->paginate(['page' => 2]);
$page->items();
$page->currentPage();
$page->lastPage();
```

### Course Match

[](#course-match)

```
$options = Yamuf::courseMatch()->options();
$match = Yamuf::courseMatch()->create([
    'current_education_level' => 'bachelor',
    'intended_study_level' => 'masters',
    'fields' => ['computer-science'],
    'destination_countries' => ['senegal'],
    'country_of_residence' => 'senegal',
    'start_period' => '2026-2027',
]);

$saved = Yamuf::courseMatch()->find($match->uuid);
```

### Partner subscriptions and inquiries

[](#partner-subscriptions-and-inquiries)

```
Yamuf::subscriptions()->create([
    'first_name' => 'Amina', 'last_name' => 'Ndiaye',
    'email' => 'amina@example.com', 'country_code' => 'SN',
    'accepted_terms' => true, 'marketing_opt_in' => false,
    'campaign' => 'partner-homepage',
    'source_url' => request()->fullUrl(),
    'referrer_url' => request()->header('referer'),
]);

Yamuf::inquiries()->create([
    'first_name' => 'Amina', 'email' => 'amina@example.com',
    'subject' => 'Question about studying',
    'message' => 'I would like to know which programmes accept my diploma.',
    'accepted_terms' => true, 'marketing_opt_in' => false,
]);
```

The API derives partner identity from the API key. The package strips `partner` and `partner_slug` from writes; applications cannot attribute a lead to another partner.

Dependency injection and locale
-------------------------------

[](#dependency-injection-and-locale)

```
use Yamuf\Laravel\Contracts\YamufClientContract;

final class UniversityController {
    public function __construct(private readonly YamufClientContract $yamuf) {}
    public function index() { return $this->yamuf->locale('fr')->universities()->list(); }
}
```

Only `en` and `fr` are accepted. The package sends `Accept-Language`; the current Yamuf API has no `Com-Language` contract.

Errors and testing
------------------

[](#errors-and-testing)

```
use Yamuf\Laravel\Exceptions\ValidationException;

try { Yamuf::subscriptions()->create($data); }
catch (ValidationException $e) { $errors = $e->errors(); }

$fake = Yamuf::fake([
    'universities' => [['id' => 'u1', 'slug' => 'example', 'name' => 'Example']],
    'search.programmes' => [['uuid' => 'p1', 'slug' => 'genie', 'name' => 'Génie Informatique']],
]);
Yamuf::search()->programmes('informatique');
$fake->assertSearchPerformed(fn ($search) => $search->query === 'informatique');
Yamuf::subscriptions()->create(['email' => 'test@example.test']);
$fake->assertSubscriptionSent(fn (array $data) => $data['email'] === 'test@example.test');
```

Security
--------

[](#security)

Never expose `YAMUF_API_KEY` to browser JavaScript, Blade data attributes, frontend environment variables, public APIs, logs, or client-side applications. Call Yamuf only from controllers, services, jobs, commands, or server-side Livewire/Inertia endpoints. SPA and mobile clients must use their own backend to mediate protected requests.

GET catalogue requests may be cached. Partner identity, writes, validation errors, and personal lead data are never cached. Writes are never automatically retried.

API documentation
-----------------

[](#api-documentation)

Use the Yamuf developer API documentation for scopes, schemas, and endpoint details. Available integrations are direct REST API, the WordPress Partner plugin, and this official package. `composer require yamuf/laravel-partner` installs it from Packagist.

###  Health Score

36

—

LowBetter than 79% of packages

Maintenance100

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity35

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

0d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/193473?v=4)[Tambwe Harlem Mufoncol](/maintainers/kuruyiva)[@kuruyiva](https://github.com/kuruyiva)

---

Top Contributors

[![kuruyiva](https://avatars.githubusercontent.com/u/193473?v=4)](https://github.com/kuruyiva "kuruyiva (7 commits)")

---

Tags

laravelsdkpartneryamuf

###  Code Quality

TestsPHPUnit

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/yamuf-laravel-partner/health.svg)

```
[![Health](https://phpackages.com/badges/yamuf-laravel-partner/health.svg)](https://phpackages.com/packages/yamuf-laravel-partner)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3345.4M354](/packages/psalm-plugin-laravel)[laravel/mcp

Rapidly build MCP servers for your Laravel applications.

79227.1M218](/packages/laravel-mcp)[defstudio/telegraph

A laravel facade to interact with Telegram Bots

818355.4k3](/packages/defstudio-telegraph)[api-platform/laravel

API Platform support for Laravel

58190.1k21](/packages/api-platform-laravel)[forjedio/inertia-table

Backend-driven dynamic tables for Laravel + Inertia.js

272.0k](/packages/forjedio-inertia-table)[simplestats-io/laravel-client

Server-side analytics for Laravel that follows the full funnel from visit to registration to payment, attributed to the channel that drove it. Revenue, MRR, churn and ad-spend profit (ROAS/CAC) per channel. GDPR compliant, ad-blocker proof.

5226.7k](/packages/simplestats-io-laravel-client)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
