PHPackages                             it-bens/deqar-api-contracts - 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. [PSR &amp; Standards](/categories/psr-standards)
4. /
5. it-bens/deqar-api-contracts

ActivePackage[PSR &amp; Standards](/categories/psr-standards)

it-bens/deqar-api-contracts
===========================

DEQAR API models as contracts for further development.

09PHP

Since Jan 2Pushed 4y ago1 watchersCompare

[ Source](https://github.com/it-bens/deqar-api-contracts)[ Packagist](https://packagist.org/packages/it-bens/deqar-api-contracts)[ RSS](/packages/it-bens-deqar-api-contracts/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

DEQAR API Contracts
===================

[](#deqar-api-contracts)

[![Maintenance Status](https://camo.githubusercontent.com/5ca62441414bacaa54c6c6e5b68e46c76305947b6bf498c4949fc71c1b4b10dd/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d61696e7461696e65642533462d7965732d677265656e2e737667)](https://camo.githubusercontent.com/5ca62441414bacaa54c6c6e5b68e46c76305947b6bf498c4949fc71c1b4b10dd/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d61696e7461696e65642533462d7965732d677265656e2e737667)[![CI Status](https://github.com/it-bens/deqar-api-contracts/actions/workflows/ci.yaml/badge.svg?branch=master)](https://github.com/it-bens/deqar-api-contracts/actions/workflows/ci.yaml/badge.svg?branch=master)

What are the Contracts of DEQAR?
--------------------------------

[](#what-are-the-contracts-of-deqar)

The DEQAR APIs deliver information about agencies, countries, institutions and reports. The contracts are interfaces for models that hold the minimal information that is returned by the DEQAR WebApi.

All models are provided as interfaces with a set of value objects returned by getters. The models also contain connections between each other, which are not always delivered explicitly form DEQAR (but implicitly). There are no methods described that change the model state. How this should be done, depends on how these models should be used.

Not all data is currently mapped. The models will be extended if more information is required.

How to use the models?
----------------------

[](#how-to-use-the-models)

In order to use the models they have to be extended like this:

```
use ITB\DeqarApiContracts\Institution as DeqarInstitution;

class Institution implements DeqarInstitution {...}
```

If the data should be persisted, properties like a creation or update timestamp may be added. E.g. a `create` method could be used for object construction:

```
class Institution extends DeqarInstitution
{
    private DateTimeImmutable $created;
    private DateTimeImmutable $updated;

    public static function create(CreateInstitutionCommand $command): self
    {
        $institution = parent::create($command);
        $institution->created = new DateTimeImmutable();
        $institution->updated = clone $institution->created;

        return $institution;
    }

    public function getCreated(): DateTimeImmutable {...}
    public function getUpdated(): DateTimeImmutable {...}
}
```

Contributing
------------

[](#contributing)

I am really happy that the software developer community loves Open Source, like I do! ♥

That's why I appreciate every issue that is opened (preferably constructive) and every pull request that provides other or even better code to this package.

You are all breathtaking!

Special Thanks
--------------

[](#special-thanks)

This project is financed by the European Quality Assurance Register (EQAR) and the European Union, which I am very thankful for!

###  Health Score

15

—

LowBetter than 3% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity27

Early-stage or recently created project

 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/94aa1cc7aa38ca9d3f6bb96541ff813027df1f0cf478b3c53c41385876503b2c?d=identicon)[SpiGAndromeda](/maintainers/SpiGAndromeda)

---

Top Contributors

[![SpiGAndromeda](https://avatars.githubusercontent.com/u/15141351?v=4)](https://github.com/SpiGAndromeda "SpiGAndromeda (7 commits)")

---

Tags

deqareqar

### Embed Badge

![Health badge](/badges/it-bens-deqar-api-contracts/health.svg)

```
[![Health](https://phpackages.com/badges/it-bens-deqar-api-contracts/health.svg)](https://phpackages.com/packages/it-bens-deqar-api-contracts)
```

###  Alternatives

[phpdocumentor/type-resolver

A PSR-5 based resolver of Class names, Types and Structural Element Names

9.2k719.5M166](/packages/phpdocumentor-type-resolver)[pimple/pimple

Pimple, a simple Dependency Injection Container

2.7k130.5M1.4k](/packages/pimple-pimple)[league/container

A fast and intuitive dependency injection container.

86387.8M343](/packages/league-container)[stella-maris/clock

A pre-release of the proposed PSR-20 Clock-Interface

7947.5M2](/packages/stella-maris-clock)[wptrt/wpthemereview

PHP\_CodeSniffer rules (sniffs) to verify theme compliance with the rules for theme hosting on wordpress.org

217736.5k29](/packages/wptrt-wpthemereview)[inpsyde/modularity

Modular PSR-11 implementation for WordPress plugins, themes or libraries.

54383.3k3](/packages/inpsyde-modularity)

PHPackages © 2026

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