PHPackages                             fragotesac/api-tools-documentation - 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. fragotesac/api-tools-documentation

ActiveLibrary

fragotesac/api-tools-documentation
==================================

Laminas API Tools API documentation module

1.7.1(11mo ago)05.2k↓43.9%BSD-3-ClausePHPPHP ~8.1.0 || ~8.2.0 || ~8.3.0

Since Jun 2Pushed 11mo agoCompare

[ Source](https://github.com/fragotesac/api-tools-documentation)[ Packagist](https://packagist.org/packages/fragotesac/api-tools-documentation)[ Docs](https://api-tools.getlaminas.org)[ RSS](/packages/fragotesac-api-tools-documentation/feed)WikiDiscussions 1.7.x Synced 1mo ago

READMEChangelog (1)Dependencies (16)Versions (2)Used By (0)

Laminas API Tools Documentation
===============================

[](#laminas-api-tools-documentation)

[![Build Status](https://github.com/laminas-api-tools/api-tools-documentation/actions/workflows/continuous-integration.yml/badge.svg)](https://github.com/laminas-api-tools/api-tools-documentation/actions/workflows/continuous-integration.yml)

> ## 🇷🇺 Русским гражданам
>
> [](#-русским-гражданам)
>
> Мы, участники Laminas, родились и живем в разных странах. У многих из нас есть друзья, родственники и коллеги как в России, так и в Украине. Некоторые из нас родились в России. Некоторые из нас живут в России. У некоторых бабушки и дедушки сражались с фашистами во Второй мировой войне. Здесь никто не поддерживает фашизм.
>
> У одного из нас есть украинская родственница, которая спаслась из дома вместе с сыном. Поезд задержался из-за бомбежки на дороге впереди. У нас есть друзья, которые прячутся в бомбоубежищах. Мы с тревогой ждем весточки от них после воздушных налетов, которые беспорядочно наносят удары и попадают по больницам, школам, детским садам и домам. Мы не берем это из каких-либо СМИ. Мы наблюдаем это напрямую.
>
> Вы доверяете нам достаточно, чтоб использовать наши программы, и мы просим вас довериться нам вновь. Мы нуждаемся в помощи. Выходите и протестуйте против этой бесполезной войны. Остановите кровопролитие. Скажите "Нет войне!"
>
> ## 🇺🇸 To Citizens of Russia
>
> [](#-to-citizens-of-russia)
>
> We at Laminas come from all over the world. Many of us have friends, family and colleagues in both Russia and Ukraine. Some of us were born in Russia. Some of us currently live in Russia. Some have grandparents who fought Nazis in World War II. Nobody here supports fascism.
>
> One team member has a Ukrainian relative who fled her home with her son. The train was delayed due to bombing on the road ahead. We have friends who are hiding in bomb shelters. We anxiously follow up on them after the air raids, which indiscriminately fire at hospitals, schools, kindergartens and houses. We're not taking this from any media. These are our actual experiences.
>
> You trust us enough to use our software. We ask that you trust us to say the truth on this. We need your help. Go out and protest this unnecessary war. Stop the bloodshed. Say "stop the war!"

Introduction
------------

[](#introduction)

This Laminas module can be used with conjunction with Laminas API Tools in order to:

- provide an object model of all captured documentation information, including:
    - All APIs available.
    - All *services* available in each API.
    - All *operations* available for each service.
    - All required/expected `Accept` and `Content-Type` request headers, and expected `Content-Type` response header, for each available operation.
    - All configured fields for each service.
- provide a configurable MVC endpoint for returning documentation.
    - documentation will be delivered in both HTML or serialized JSON by default.
    - end-users may configure alternate/additional formats via content-negotiation.

This module accomplishes all the above use cases by providing an endpoint to connect to (`/api-tools/documentation[/:api[-v:version][/:service]]`), using content-negotiation to provide both HTML and JSON representations.

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

[](#requirements)

Please see the [composer.json](composer.json) file.

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

[](#installation)

Run the following `composer` command:

```
$ composer require laminas-api-tools/api-tools-documentation
```

Alternately, manually add the following to your `composer.json`, in the `require` section:

```
"require": {
    "laminas-api-tools/api-tools-documentation": "^1.2-dev"
}
```

And then run `composer update` to ensure the module is installed.

Finally, add the module name to your project's `config/application.config.php` under the `modules`key:

```
return [
    /* ... */
    'modules' => [
        /* ... */
        'Laminas\ApiTools\Documentation',
    ],
    /* ... */
];
```

> ### laminas-component-installer
>
> [](#laminas-component-installer)
>
> If you use [laminas-component-installer](https://github.com/laminas/laminas-component-installer), that plugin will install api-tools-documentation as a module for you.

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

[](#configuration)

### User Configuration

[](#user-configuration)

This module does not utilize any user configuration.

### System Configuration

[](#system-configuration)

The following configuration is defined by the module to ensure operation within a Laminas MVC application.

```
namespace Laminas\ApiTools\Documentation;

use Laminas\ServiceManager\Factory\InvokableFactory;
use Laminas\View\Model\ViewModel;

return [
    'router' => [
        'routes' => [
            'api-tools' => [
                'child_routes' => [
                    'documentation' => [
                        'type' => 'segment',
                        'options' => [
                            'route'    => '/documentation[/:api[-v:version][/:service]]',
                            'constraints' => [
                                'api' => '[a-zA-Z][a-zA-Z0-9_.]+',
                            ],
                            'defaults' => [
                                'controller' => Controller::class,
                                'action'     => 'show',
                            ],
                        ],
                    ],
                ],
            ],
        ],
    ],
    'service_manager' => [
        'factories' => [
            ApiFactory::class => Factory\ApiFactoryFactory::class,
        ],
    ],
    'controllers' => [
        'factories' => [
            Controller::class => ControllerFactory::class,
        ],
    ],
    'api-tools-content-negotiation' => [
        'controllers' => [
            Controller::class => 'Documentation',
        ],
        'accept_whitelist' => [
            Controller::class => [
                0 => 'application/vnd.swagger+json',
                1 => 'application/json',
            ],
        ],
        'selectors' => [
            'Documentation' => [
                ViewModel::class => [
                    'text/html',
                    'application/xhtml+xml',
                ],
                JsonModel::class => [
                    'application/json',
                ],
            ],
        ],
    ],
    'view_helpers' => [
        'aliases' => [
            'agacceptheaders'         => View\AgAcceptHeaders::class,
            'agAcceptHeaders'         => View\AgAcceptHeaders::class,
            'agcontenttypeheaders'    => View\AgContentTypeHeaders::class,
            'agContentTypeHeaders'    => View\AgContentTypeHeaders::class,
            'agservicepath'           => View\AgServicePath::class,
            'agServicePath'           => View\AgServicePath::class,
            'agstatuscodes'           => View\AgStatusCodes::class,
            'agStatusCodes'           => View\AgStatusCodes::class,
            'agtransformdescription'  => View\AgTransformDescription::class,
            'agTransformDescription'  => View\AgTransformDescription::class,
        ],
        'factories' => [
            View\AgAcceptHeaders::class        => InvokableFactory::class,
            View\AgContentTypeHeaders::class   => InvokableFactory::class,
            View\AgServicePath::class          => InvokableFactory::class,
            View\AgStatusCodes::class          => InvokableFactory::class,
            View\AgTransformDescription::class => InvokableFactory::class,
        ],
    ],
    'view_manager' => [
        'template_path_stack' => [
            __DIR__ . '/../view',
        ],
    ],
];
```

Laminas Events
--------------

[](#laminas-events)

This module has no events or listeners.

Laminas Services
----------------

[](#laminas-services)

### View Helpers

[](#view-helpers)

The following list of view helpers assist in making API documentation models presentable in view scripts.

- `Laminas\ApiTools\Documentation\View\AgAcceptHeaders` (a.k.a `agAcceptHeaders`) for making a list of `Accept` headers, escaped for HTML.
- `Laminas\ApiTools\Documentation\View\AgContentTypeHeaders` (a.k.a `agContentTypeHeaders`) for making a list of `Content-Type` headers, escaped for HTML.
- `Laminas\ApiTools\Documentation\View\AgServicePath` (a.k.a `agServicePath`) for making an HTML view representation of the route configuration of a service path.
- `Laminas\ApiTools\Documentation\View\AgStatusCodes` (a.k.a `agStatusCodes`) for making an escaped list of status codes and their messages.
- `Laminas\ApiTools\Documentation\View\AgTransformDescription` (a.k.a `agTransformDescription`) for transforming the written descriptions into Markdown.

### Factories

[](#factories)

#### Laminas\\ApiTools\\Documentation\\ApiFactory

[](#laminasapitoolsdocumentationapifactory)

The `ApiFactory` service is capable of producing an object-graph representation of the desired API documentation that is requested. This object-graph will be composed of the following types:

- `Laminas\ApiTools\Documentation\Api`: the root node of an API.
- `Laminas\ApiTools\Documentation\Services`: an array of services in the API (a service can be one of a REST or RPC style service).
- `Laminas\ApiTools\Documentation\Operations`: an array of operations in the service.
- `Laminas\ApiTools\Documentation\Fields`: an array of fields for a service.

###  Health Score

38

—

LowBetter than 85% of packages

Maintenance50

Moderate activity, may be stable

Popularity24

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity51

Maturing project, gaining track record

 Bus Factor1

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

Every ~0 days

Total

2

Last Release

350d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1095778?v=4)[Francis Gonzales](/maintainers/FraGoTe)[@FraGoTe](https://github.com/FraGoTe)

---

Top Contributors

[![weierophinney](https://avatars.githubusercontent.com/u/25943?v=4)](https://github.com/weierophinney "weierophinney (232 commits)")[![ralphschindler](https://avatars.githubusercontent.com/u/76674?v=4)](https://github.com/ralphschindler "ralphschindler (20 commits)")[![michalbundyra](https://avatars.githubusercontent.com/u/7423207?v=4)](https://github.com/michalbundyra "michalbundyra (17 commits)")[![tasselchof](https://avatars.githubusercontent.com/u/7921861?v=4)](https://github.com/tasselchof "tasselchof (5 commits)")[![bgaillard](https://avatars.githubusercontent.com/u/1327782?v=4)](https://github.com/bgaillard "bgaillard (4 commits)")[![abacaphiliac](https://avatars.githubusercontent.com/u/1656273?v=4)](https://github.com/abacaphiliac "abacaphiliac (4 commits)")[![YonmaNBehalf](https://avatars.githubusercontent.com/u/10613680?v=4)](https://github.com/YonmaNBehalf "YonmaNBehalf (3 commits)")[![ezimuel](https://avatars.githubusercontent.com/u/475967?v=4)](https://github.com/ezimuel "ezimuel (3 commits)")[![geerteltink](https://avatars.githubusercontent.com/u/9497586?v=4)](https://github.com/geerteltink "geerteltink (3 commits)")[![neeckeloo](https://avatars.githubusercontent.com/u/1768645?v=4)](https://github.com/neeckeloo "neeckeloo (3 commits)")[![rnd-cosoft](https://avatars.githubusercontent.com/u/57006314?v=4)](https://github.com/rnd-cosoft "rnd-cosoft (3 commits)")[![rodsouto](https://avatars.githubusercontent.com/u/1918738?v=4)](https://github.com/rodsouto "rodsouto (3 commits)")[![disasterdrop](https://avatars.githubusercontent.com/u/472591?v=4)](https://github.com/disasterdrop "disasterdrop (2 commits)")[![xjchengo](https://avatars.githubusercontent.com/u/4819996?v=4)](https://github.com/xjchengo "xjchengo (2 commits)")[![Ocramius](https://avatars.githubusercontent.com/u/154256?v=4)](https://github.com/Ocramius "Ocramius (1 commits)")[![pavkatar](https://avatars.githubusercontent.com/u/259746?v=4)](https://github.com/pavkatar "pavkatar (1 commits)")[![jackdpeterson](https://avatars.githubusercontent.com/u/938961?v=4)](https://github.com/jackdpeterson "jackdpeterson (1 commits)")[![ricardofiorani](https://avatars.githubusercontent.com/u/1641075?v=4)](https://github.com/ricardofiorani "ricardofiorani (1 commits)")[![alexdenvir](https://avatars.githubusercontent.com/u/1412074?v=4)](https://github.com/alexdenvir "alexdenvir (1 commits)")[![samsonasik](https://avatars.githubusercontent.com/u/459648?v=4)](https://github.com/samsonasik "samsonasik (1 commits)")

---

Tags

laminasdocumentationmoduleapi-tools

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm

Type Coverage Yes

### Embed Badge

![Health badge](/badges/fragotesac-api-tools-documentation/health.svg)

```
[![Health](https://phpackages.com/badges/fragotesac-api-tools-documentation/health.svg)](https://phpackages.com/packages/fragotesac-api-tools-documentation)
```

###  Alternatives

[laminas/laminas-developer-tools

Module for developer and debug tools for use with laminas-mvc applications.

252.0M33](/packages/laminas-laminas-developer-tools)[laminas-api-tools/api-tools-admin

Laminas API Tools Admin module

13794.3k5](/packages/laminas-api-tools-api-tools-admin)

PHPackages © 2026

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