PHPackages                             ellinaut/ellirpc-bundle - 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. ellinaut/ellirpc-bundle

ActiveSymfony-bundle[API Development](/categories/api)

ellinaut/ellirpc-bundle
=======================

Symfony integration for ellinaut/ellirpc

1.0.0(2y ago)0341MITPHPPHP &gt;=8.1

Since Jul 30Pushed 2y ago2 watchersCompare

[ Source](https://github.com/Ellinaut/elliRPC-Bundle)[ Packagist](https://packagist.org/packages/ellinaut/ellirpc-bundle)[ RSS](/packages/ellinaut-ellirpc-bundle/feed)WikiDiscussions main Synced 4w ago

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

elliRPC-Bundle
==============

[](#ellirpc-bundle)

Symfony bundle to integrate the elliRPC library into a symfony 5 project.

1. Requirements
2. How to install?
3. How to configure?
    1. Routing
    2. File Storage
    3. API-Definition
4. How to provide implementations?
    1. Procedure Validator
    2. Procedure Processor
    3. Transaction Listener
    4. Error Factory
    5. Error Translator

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

[](#requirements)

The bundle requires PHP in version 8.1 or higher and `symfony/framework-bundle` in version 5.\* or 6.\*.

The elliRPC-library requires implementations of `psr/http-message` and `psr/http-factory`.

We suggest to use `nyholm/psr7` as implementation for `psr/http-message` and `psr/http-factory`.

If you don't want to provide your own implementations of `Ellinaut\ElliRPC\File\ContentTypeGuesserInterface` and `Ellinaut\ElliRPC\File\FilesystemInterface` we suggest to use `symfony/mime` and `symfony/filesystem`.

How to install?
---------------

[](#how-to-install)

The bundle should be installed via composer: `ellinaut/ellirpc-bundle`.

Execute this command to install the bundle with all suggested implementations:

```
composer req ellinaut/ellirpc-bundle nyholm/psr7 symfony/mime symfony/filesystem
```

or execute this command to only install the bundle and use your own implementations matching the requirements:

```
composer req ellinaut/ellirpc-bundle
```

How to enable endpoints?
------------------------

[](#how-to-enable-endpoints)

To make all API endpoints available add this snippet to `config/routes.yaml`:

```
elliRPC:
  resource: '@ElliRPCBundle/Resources/config/routes.xml'
```

How to configure?
-----------------

[](#how-to-configure)

If you want to configure the bundle you should add the file `config/packages/elli_rpc.yaml`.

### File Storage

[](#file-storage)

If you use the default file storage implementation via local file system, the default file storage will be `%kernel.project_dir%/assets/elliRPC`.

You can change it via configuration:

```
elli_rpc:
  defaultFileStorage: '%kernel.project_dir%/apiFiles'
```

### API-Definition

[](#api-definition)

To configure the concrete definition of your API please configure it as follows:

```
elli_rpc:
  application: 'My API' # default: 'API'
  description: 'My custom API' # default: null
  packages: # list of packages
    myPackage: # name of the package
      description: 'Description of my package.' # default: null
      fallbackLanguage: 'de' # default: null
      procedures: # list of procedure definitions
        myProcedure: # name of the procedure
          description: 'My procedure description' # default: null
          request: # request definition
            data: # transport definition, default: null
              context: null # default: null (for same package)
              schema: 'MySchema' # used schema name
              wrappedBy: # default: null
                context: 'OtherPackageName' # default: null
                schema: 'List'
              nullable: true # default: false
            meta: # meta definition, default: null
              context: 'OtherPackageName' # default: null (for same package)
              schema: 'MetaInfo' # used schema name
          response: # response definition
            data: null # transport definition, default: null, see: request -> data
            meta: null # meta definition, default: null, see: request -> meta
          errors: [ 'my_error' ] # list of possible error codes, default: []
          allowedUsage: 'STANDALONE' # default: null, possible: 'STANDALONE' or 'TRANSACTION'
      schemas: # list of schema definitions
        MySchema: # name of the schema
          abstract: true # default: false
          extends: # default: null
            context: 'https://schema.org' # default: null
            schema: 'Event' # name of the extended schema
          description: 'My schema description' # default: null
          properties: # list of property definitions
            myProperty: # name of the property
              description: '' # default: null
              type: # property type definition
                context: null # default: null
                type: 'string' # the build-in type or name of the used schema
                options: [ '@list' ] # a list of assigned options in the correct order, default: []
      errors: # list of error definitions
        my_error: # unique error code within the package
          description: 'My error description' # default: null
          context: # default: null
            context: 'https://schema.org' # default: null
            schema: 'Thing' # name of the used schema
```

How to provide implementations?
-------------------------------

[](#how-to-provide-implementations)

Your custom implementations can be added via tagging your services in the symfony dependency injection container.

If your container uses autoconfiguration most of your services will be tagged automatically because the symfony container will identify them by their implemented interfaces.

### Procedure Validator

[](#procedure-validator)

Your procedure validator, which have to implement `Ellinaut\ElliRPC\Procedure\Validator\ProcedureValidatorInterface`, have to be tagged with `elli_rpc.procedure_validator` to be found and used by this bundle.

```
services:
  App\Api\Validator\CustomProcedureValidator:
    tags: [ 'elli_rpc.procedure_validator' ]
```

If your container uses autoconfiguration your service will be tagged and used automatically without the need of manual tagging.

### Procedure Processor

[](#procedure-processor)

Your procedure processors could be configured in two different ways.

First (and suggested) variant will be implementing `Ellinaut\ElliRPCBundle\Autoconfigure\DetectableProcedureProcessor`or extending `Ellinaut\ElliRPCBundle\Autoconfigure\AbstractDetectableProcedureProcessor`. These services should be tagged with `elli_rpc.procedure_processor.detected`.

```
services:
  App\Api\Procedure\MyProcedure:
    tags: [ 'elli_rpc.procedure_processor.detected' ]
```

If your container uses autoconfiguration your services will be tagged and used automatically without the need of manual tagging in this case.

The second variant will be implementing only `Ellinaut\ElliRPC\Procedure\Processor\ProcedureProcessorInterface` and configure `package` and `procedure` manually via service definition:

```
services:
  App\Api\Procedure\CustomProcedureProcessor:
    tags:
      - { name: 'elli_rpc.procedure_processor', package: 'myPackage', procedure: 'myProcedure' }
```

These variant is not autoconfigured but provides the possibility of register a single processor for multiple procedures.

### Transaction Listener

[](#transaction-listener)

Your transaction listener, which have to implement `Ellinaut\ElliRPC\Procedure\Transaction\TransactionListenerInterface`, have to be tagged with `elli_rpc.transaction_listener` to be found and used by this bundle.

```
services:
  App\Api\Transaction\CustomTransactionListener:
    tags: [ 'elli_rpc.transaction_listener' ]
```

If your container uses autoconfiguration your service will be tagged and used automatically without the need of manual tagging.

### Error Factory

[](#error-factory)

Your error factory, which have to implement `Ellinaut\ElliRPC\Error\Factory\ErrorFactoryInterface`, have to be tagged with `elli_rpc.error_factory` to be found and used by this bundle.

```
services:
  App\Api\Error\CustomErrorFactory:
    tags: [ 'elli_rpc.error_factory' ]
```

If your container uses autoconfiguration your service will be tagged and used automatically without the need of manual tagging.

### Error Translator

[](#error-translator)

Your error translator, which have to implement `Ellinaut\ElliRPC\Error\Translator\ErrorTranslatorInterface`, have to be tagged with `elli_rpc.error_translator` to be found and used by this bundle.

```
services:
  App\Api\Error\CustomErrorTranslator:
    tags: [ 'elli_rpc.error_translator' ]
```

If your container uses autoconfiguration your service will be tagged and used automatically without the need of manual tagging.

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 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

1013d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/21ec4e897f4ee0a0d0bcaf844242946502ff852e9bee8fb2e1ef9a2fc2fb5f16?d=identicon)[pmarien](/maintainers/pmarien)

![](https://www.gravatar.com/avatar/3a684d21753b84a926a2b86aaa54018b9a36e42cb6fae795a1c16b810f806291?d=identicon)[info@ellinaut.dev](/maintainers/info@ellinaut.dev)

---

Top Contributors

[![pmarien](https://avatars.githubusercontent.com/u/8394874?v=4)](https://github.com/pmarien "pmarien (45 commits)")

### Embed Badge

![Health badge](/badges/ellinaut-ellirpc-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/ellinaut-ellirpc-bundle/health.svg)](https://phpackages.com/packages/ellinaut-ellirpc-bundle)
```

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M647](/packages/sylius-sylius)[kirschbaum-development/laravel-openapi-validator

Automatic OpenAPI validation for Laravel HTTP tests

581.1M5](/packages/kirschbaum-development-laravel-openapi-validator)[thecodingmachine/graphqlite-bundle

A Symfony bundle for thecodingmachine/graphqlite.

371.6M3](/packages/thecodingmachine-graphqlite-bundle)[cravler/maxmind-geoip-bundle

Bundle integrating MaxMind GeoIP2 database into symfony application

27615.8k2](/packages/cravler-maxmind-geoip-bundle)[sulu/headless-bundle

Bundle that provides controllers and services for using Sulu as headless content management system

55133.7k2](/packages/sulu-headless-bundle)

PHPackages © 2026

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