PHPackages                             ometra/ignis-client - 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. [API Development](/categories/api)
4. /
5. ometra/ignis-client

ActiveLibrary[API Development](/categories/api)

ometra/ignis-client
===================

Official PHP SDK client for Ignis campaign management platform API

023↓25%PHP

Since May 20Pushed 2w agoCompare

[ Source](https://github.com/Ometra-Apollo/mx.ometra.apollo.ignis-client)[ Packagist](https://packagist.org/packages/ometra/ignis-client)[ RSS](/packages/ometra-ignis-client/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependenciesVersions (1)Used By (0)

Ometra Ignis SDK
================

[](#ometra-ignis-sdk)

A modular PHP client designed to facilitate seamless integration with the Ignis platform for managing groups, campaigns, and external communications in Ometra-based systems.

Features
--------

[](#features)

- **Modular Group Management**:
    Contract-based (interface-first) group retrieval for flexibility and swapability.
- **Campaign Management**:
    Retrieve campaigns assigned to external groups via API endpoints and facade methods.
- **Auto-registered Routes**:
    Routes are automatically loaded via ServiceProvider (no manual registration needed).
- **Facade Access**:
    Laravel facade for convenient access to client operations from anywhere.
- **Custom Fields Definition**:
    Supports custom field schemas for group configurations and campaign-related metadata.
- **Extensible Service Provider**:
    Laravel-style ServiceProvider for auto-registration, config publishing, and dependency injection.
- **Environment-based Configuration**:
    All credentials and endpoints are environment-driven for secure deployment.
- **Pluggable Implementation**:
    Swap group logic using ignis\_group\_implementation config value (support for mock/test classes and production classes).

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

[](#installation)

1. **Require via Composer**

    ```
    composer require ometra/ignis-sdk
    ```
2. **(Laravel) Register Service Provider**
    The package supports auto-discovery in Laravel.
    If not, add to `config/app.php`:

    ```
    Ometra\IgnisSdk\Providers\IgnisServiceProvider::class,
    ```

Configuration
-------------

[](#configuration)

1. **Publish the configuration file**:

    ```
    php artisan vendor:publish --tag=ignis:config
    ```

    This creates a `config/ignis.php` file:

    - `base_url`: Your Ignis API endpoint, eg: `env('IGNIS_BASE_URL')`
    - `ignis_group_implementation`: Class name implementing the group contract. Defaults to `DummyGroup` for dev/testing.
2. **Set your environment variables:**
    Define at least `IGNIS_BASE_URL` in your `.env` file.
3. **Customize contract implementation** (optional):

    In `config/ignis.php`, set `'ignis_group_implementation' => YourCustomGroupClass::class`

Available Commands
------------------

[](#available-commands)

- **Config publishing**:
    `php artisan vendor:publish --tag=ignis:config`

Auto-registered Routes
----------------------

[](#auto-registered-routes)

Routes are automatically loaded by the ServiceProvider:

MethodEndpointControllerDescriptionGET`/api/ignis/groups``IgnisGroupController@index`Returns all groups from the configured group implementationLaravel Facade
--------------

[](#laravel-facade)

Use the `IgnisSdk` facade for quick access to SDK operations:

```
use Ometra\IgnisSdk\Facades\IgnisSdk;

// Get campaigns assigned to a group
$campaigns = IgnisSdk::getCampaignsByExternalGroup('external-group-id-123');

// Returns an array of CampaignDTO objects
foreach ($campaigns as $campaign) {
    echo $campaign->name;
    echo $campaign->status;
}

// Post a content hit report
IgnisSdk::hitReport([
    ['content_id' => '123', 'played_at' => '2024-01-01 10:00:00'],
]);
```

Data Structures
---------------

[](#data-structures)

### ExternalGroupDTO Schema

[](#externalgroupdto-schema)

The standard group representation provided by this client library is the `ExternalGroupDTO`:

```
type ExternalGroupDTO = array{
    name: string,
    external_id: string,
    media_type: array, // Example: ['video', 'audio', ...]
    provider_id: string, // Auto-assigned by the client
    play_modifiers?: array, // Optional, list of modifier strings
}
```

- `name`: Group name.
- `external_id`: External unique identifier.
- `media_type`: Array of strings, typically values like 'video', 'audio', 'image', etc.
- `provider_id`: App name slug, generated internally.
- `play_modifiers` (optional): Optional array of strings. If present and valid, the Ignis host server will interpret them; unrecognized values are ignored.

### CampaignDTO Schema

[](#campaigndto-schema)

The campaign data transfer object:

```
type CampaignDTO = array{
    id: string,
    name: string,
    client_id: string,
    dow: string,
    dt_start: string,
    dt_end: string,
    proteus_directory_id?: string,
    created_at?: string,
    updated_at?: string,
    external_group_id?: string,
    status?: string,
    metadata?: array,
    contents?: array,
}
```

- `id`: Unique campaign identifier.
- `name`: Campaign name.
- `client_id`: Associated client ID.
- `dow`: Day of week (e.g., 'MON', 'TUE').
- `dt_start`: Start date/time.
- `dt_end`: End date/time.
- `proteus_directory_id` (optional): Related Proteus directory.
- `created_at` / `updated_at`: Timestamps.
- `external_group_id` (optional): Linked external group.
- `status` (optional): Campaign status.
- `metadata` / `contents` (optional): Additional data.

Example Usage
-------------

[](#example-usage)

```
use Ometra\IgnisSdk\Contracts\IgnisGroupContract;

// Resolve via app container or Laravel's dependency injection
$groups = app(IgnisGroupContract::class)->getGroups();

// Each element is an instance of ExternalGroupDTO (see Data Structures section)
// Manual creation example:
$group = new \Ometra\IgnisSdk\DTO\ExternalGroupDTO(
    name: 'Test Group',
    external_id: 'ext-123',
    media_type: ['video'],
    play_modifiers: ['max_rep_count', 'frequency'], // optional
);
```

###  Health Score

23

—

LowBetter than 26% of packages

Maintenance63

Regular maintenance activity

Popularity10

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 78.6% 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.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/984800?v=4)[gruelas](/maintainers/gruelas)[@gruelas](https://github.com/gruelas)

---

Top Contributors

[![vicario00](https://avatars.githubusercontent.com/u/101902535?v=4)](https://github.com/vicario00 "vicario00 (11 commits)")[![karlyoz](https://avatars.githubusercontent.com/u/54610989?v=4)](https://github.com/karlyoz "karlyoz (3 commits)")

### Embed Badge

![Health badge](/badges/ometra-ignis-client/health.svg)

```
[![Health](https://phpackages.com/badges/ometra-ignis-client/health.svg)](https://phpackages.com/packages/ometra-ignis-client)
```

###  Alternatives

[facebook/php-business-sdk

PHP SDK for Facebook Business

90923.5M35](/packages/facebook-php-business-sdk)[exsyst/swagger

A php library to manipulate Swagger specifications

35916.3M7](/packages/exsyst-swagger)[hubspot/api-client

Hubspot API client

24015.5M18](/packages/hubspot-api-client)[botman/driver-telegram

Telegram driver for BotMan

93452.6k6](/packages/botman-driver-telegram)

PHPackages © 2026

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