Skip to content

Getting Started ​

Oxygen Ergani is a PHP package for interacting with Greece's ERGANI system, enabling automated submissions for employee data such as check-ins, check-outs, work time declarations, hiring, and terminations.

Installation ​

Install the package via Composer:

bash
composer require oxygensuite/oxygen-ergani

Requirements ​

  • PHP ^8.2
  • Guzzle HTTP ^7.9
  • ERGANI credentials (username and password)

Basic Setup ​

1. Configure Token Management ​

The recommended approach is to set up the FileToken manager once when your application boots. This handles authentication, token refresh, and persistence automatically.

php
use OxygenSuite\OxygenErgani\Storage\FileToken;
use OxygenSuite\OxygenErgani\Storage\Token;
use OxygenSuite\OxygenErgani\Enums\Environment;

Token::setCurrentTokenManager(
    new FileToken('your-username', 'your-password'),
    Environment::TEST // or Environment::PRODUCTION
);

Laravel Integration

In Laravel, set the token manager in a service provider or middleware to ensure it's configured for every request.

2. Make API Calls ​

Once the token manager is configured, you can make API calls through the Ergani facade without specifying credentials:

php
use OxygenSuite\OxygenErgani\Ergani;
use OxygenSuite\OxygenErgani\Models\WorkCard\Card;
use OxygenSuite\OxygenErgani\Models\WorkCard\CardDetail;
use OxygenSuite\OxygenErgani\Enums\CardDetailType;

$card = Card::make()
    ->setEmployerTin('999999999')
    ->setBranchCode(0)
    ->addDetails(
        CardDetail::make()
            ->setTin('888888888')
            ->setFirstName('John')
            ->setLastName('Doe')
            ->setType(CardDetailType::CHECK_IN)
            ->setReferenceDate(date('Y-m-d'))
            ->setDate(date('Y-m-d\TH:i:s.uP'))
    );

$ergani = new Ergani();
$responses = $ergani->sendWorkCards($card);

The facade exposes every ERGANI operation — hiring (E3), terminations (E5/E6/E7), work time, overtime, and more. See the Ergani Facade reference for the full method list.

Environments ​

The package supports two environments:

EnvironmentDomainUse Case
Environment::TESTtrialv2eservices.yeka.grDevelopment and testing
Environment::PRODUCTIONeservices.yeka.grLive production data

WARNING

Always use Environment::TEST during development. Production submissions are real and cannot be easily reversed.

Next Steps ​

Released under the MIT License.