geniusreferrals/geniusreferrals

Genius Referrals PHP SDK - integrate referral programs using the Genius Referrals RESTful API.

Maintainers

Package info

github.com/GeniusReferrals/Genius-Referrals-PHP

Homepage

pkg:composer/geniusreferrals/geniusreferrals

Transparency log

Statistics

Installs: 11 335

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v2.0.1 2026-07-24 21:00 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_TOKEN
  • GR_ACCOUNT_SLUG optional, auto-discovered from the token when omitted
  • GR_BASE_URI optional, defaults to https://api.geniusreferrals.com

Resources

License

MIT