geniusreferrals / geniusreferrals
Genius Referrals PHP SDK - integrate referral programs using the Genius Referrals RESTful API.
Package info
github.com/GeniusReferrals/Genius-Referrals-PHP
pkg:composer/geniusreferrals/geniusreferrals
Requires
- php: >=8.1
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- guzzlehttp/guzzle: ^7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.0
This package is not auto-updated.
Last update: 2026-08-20 10:25:52 UTC
README
A PHP SDK for integrating with the Genius Referrals RESTful API. This SDK provides convenient access to all API resources including accounts, advocates, bonuses, campaigns, products, referrals, redemption requests, reports, tags, vouchers, and widget packages.
Requirements
- PHP 8.1 or higher
- Composer
Installation
composer require geniusreferrals/geniusreferrals
Authentication
Get your API token from the Genius Referrals settings page.
require_once 'vendor/autoload.php'; use GeniusReferralsLib\GeniusReferralsClient; $client = new GeniusReferralsClient(null, 'YOUR_API_TOKEN');
Usage
Accounts
$accounts = $client->getAccounts(); // List with pagination $accounts = $client->getAccounts()->getAccounts(1, 10); // Get a single account $account = $client->getAccounts()->getAccount('your-account-slug'); // Create an account $client->getAccounts()->createAccount(['name' => 'My Account', ...]); // Update an account $client->getAccounts()->updateAccount('your-account-slug', ['name' => 'Updated']); // Delete an account $client->getAccounts()->deleteAccount('your-account-slug');
Advocates
$advocates = $client->getAdvocates()->getAdvocates('your-account-slug'); $advocate = $client->getAdvocates()->getAdvocate('your-account-slug', 'advocate-token'); $client->getAdvocates()->postAdvocate('your-account-slug', ['firstname' => 'John', 'email' => 'john@example.com']); $client->getAdvocates()->patchAdvocate('your-account-slug', 'advocate-token', ['firstname' => 'Updated']);
Bonuses
$bonuses = $client->getBonuses()->getBonuses('your-account-slug'); $client->getBonuses()->postBonus('your-account-slug', ['advocate_token' => 'token', ...]); $client->getBonuses()->patchBonus('your-account-slug', $bonusId, ['status' => 'approved']); $client->getBonuses()->getBonusTags('your-account-slug', $bonusId);
Products
$products = $client->getProducts()->getProducts('your-account-slug'); $client->getProducts()->createProduct('your-account-slug', ['name' => 'Widget']); $client->getProducts()->updateProduct('your-account-slug', 'product-slug', ['name' => 'Updated']);
Tags
$tags = $client->getTags()->getTags('your-account-slug'); $client->getTags()->createTag('your-account-slug', ['name' => 'VIP']);
Vouchers
$vouchers = $client->getVouchers()->getVouchers('your-account-slug'); $client->getVouchers()->createVoucher('your-account-slug', ['code' => 'VOUCHER1']);
Widgets Packages
$packages = $client->getWidgetsPackages()->getWidgetsPackages('your-account-slug'); $widgets = $client->getWidgetsPackages()->getWidgets('your-account-slug', 'package-slug');
Reports
$client->getReports()->getRevenue('your-account-slug', '2026-01-01', '2026-12-31'); $client->getReports()->get1099TaxReport('your-account-slug', 2026);
Docker Development
# Install dependencies make install # Run tests make test # Run the live API smoke suite GR_API_TOKEN=... GR_ACCOUNT_SLUG=your-account-slug make smoke # Run linting make lint # Run static analysis make analyze # Clean build make clean
Live API Smoke Suite
The live smoke suite is intentionally separate from the mocked unit tests.
- File:
tests/LiveApiSmokeTest.php - Coverage: live account discovery plus CRUD smoke checks for tags, advocates, vouchers, and products
- Safety: each test creates uniquely named resources and deletes them before finishing
Required environment variables:
GR_API_TOKENGR_ACCOUNT_SLUGoptional, auto-discovered from the token when omittedGR_BASE_URIoptional, defaults tohttps://api.geniusreferrals.com
Resources
License
MIT