PHPackages                             namelesscoder/typo3-repository-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. namelesscoder/typo3-repository-client

AbandonedArchivedLibrary[API Development](/categories/api)

namelesscoder/typo3-repository-client
=====================================

Client for interacting with the official TYPO3 Extension Repository (TER). Contains API and CLI scripts.

2.1.0(4y ago)9123.0k4[2 issues](https://github.com/NamelessCoder/typo3-repository-client/issues)[1 PRs](https://github.com/NamelessCoder/typo3-repository-client/pulls)20MITPHPPHP ^7.0

Since Dec 7Pushed 3y agoCompare

[ Source](https://github.com/NamelessCoder/typo3-repository-client)[ Packagist](https://packagist.org/packages/namelesscoder/typo3-repository-client)[ RSS](/packages/namelesscoder-typo3-repository-client/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (3)Versions (15)Used By (20)

TYPO3 Repository Client API/CLI
===============================

[](#typo3-repository-client-apicli)

OBSOLETE!
=========

[](#obsolete)

This library uses the long-deprecated and now removed SOAP API for the TYPO3 Extension Repository. **It is no longer functioning!**

### The library is archived and no longer receives updates. It is kept available here only for posterity.

[](#the-library-is-archived-and-no-longer-receives-updates-it-is-kept-available-here-only-for-posterity)

Alternative
-----------

[](#alternative)

I recommend using the official "Tailor" library from TYPO3:

The Tailor library allows you to interact with the TYPO3 Extension Repository using the current REST API. It is possible to use it from a local machine or through CI. An example GitHub action (for example as `.github/workflows/release.yml`):

```
on:
  push:
    tags:
      - "**"

jobs:
  release:
    runs-on: ubuntu-20.04
    steps:
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: 8.2
          extensions: mbstring, json
          ini-values: date.timezone="Europe/Copenhagen", opcache.fast_shutdown=0
          tools: composer:v2.2
      - name: "create working directory"
        run: "mkdir tailor"
      - name: "Install Tailor"
        working-directory: tailor
        run: "composer require typo3/tailor"
      - name: "Upload to TER"
        working-directory: tailor
        run: "./vendor/bin/tailor ter:publish $TAG $EXTENSION_KEY --artefact $ARTEFECT_URL --comment \"$MESSAGE\""
        env:
          TYPO3_API_USERNAME: ${{ secrets.TER_USERNAME }}
          TYPO3_API_TOKEN: ${{ secrets.TER_TOKEN }}
          TAG: ${{ github.ref_name }}
          EXTENSION_KEY: testing
          ARTEFECT_URL: "https://github.com/${{ github.repository }}/archive/${{ github.ref }}.zip"
          MESSAGE: "Automatic release built from GitHub. See the CHANGELOG.md file that is shipped with this release for details."
```

(Requires two "secrets" entered in the GitHub repository; `TER_TOKEN` and `TER_USERNAME`. See Tailor's documentation for further information on how to obtain a token. Note that the token has a limited lifetime and will need to be refreshed.)

This action has the benefit that it *does not operate on artefact files locally in the CI pipeline*. Instead it refers TER to read the files from the artefect produced by GitHub whenever a new tag is uploaded. If you need/want to operate on files before a release is made, e.g. to remove certain files, Thomas Norre has provided a drop-in GitHub action that works in that particular way:

See Tailor's documentation for alternative CI integrations and manual usage instructions.

*So long, and thanks for all the fish!* ;)

---

[![Build Status](https://camo.githubusercontent.com/411ebec90c42c48797ce33608de72006024eccffc3bee29adcbb6d8f128e801f/68747470733a2f2f696d672e736869656c64732e696f2f7472617669732f4e616d656c657373436f6465722f7479706f332d7265706f7369746f72792d636c69656e742e7376673f7374796c653d666c61742d737175617265266c6162656c3d7061636b616765)](https://travis-ci.org/NamelessCoder/typo3-repository-client) [![Coverage Status](https://camo.githubusercontent.com/163ac44bfdeea4f36712558aca9e7f3aaf553f9ec241154f8701e1c1df1f70ff/68747470733a2f2f696d672e736869656c64732e696f2f636f766572616c6c732f4e616d656c657373436f6465722f7479706f332d7265706f7369746f72792d636c69656e742e7376673f7374796c653d666c61742d737175617265)](https://coveralls.io/r/NamelessCoder/typo3-repository-client)

TYPO3 Extension Repository (TER) client library and CLI commands

Usage
-----

[](#usage)

Each command which can be executed has a corresponding class, for example `NamelessCoder\TYPO3RepositoryClient\Uploader` and a CLI script which acts as a wrapper for said class. The parameters which should be passed to each CLI script *must be the same arguments and in the same order as required by the class' method*.

### Uploader

[](#uploader)

As component:

```
$uploader = new \NamelessCoder\TYPO3RepositoryClient\Uploader();
$uploader->upload('/path/to/extension', 'myusername', 'mypassword', 'An optional comment');
```

And as CLI command:

```
./bin/upload /path/to/extension myusername mypassword "An optional comment"
```

### Version Updater (local)

[](#version-updater-local)

As component:

```
$versioner = new \NamelessCoder\TYPO3RepositoryClient\Versioner();
$version = $versioner->read('/path/to/extension/');
$version[0] = '1.2.3';
$version[1] = 'beta';
$versioner->write('/path/to/extension/', '1.2.3', 'beta');
```

And as CLI command:

```
# with all parameters
./bin/setversion 1.2.3 beta /optional/path/to/extension/
# without changing current stability:
./bin/setversion 1.2.3
```

### Version Deleter (admins only)

[](#version-deleter-admins-only)

As component:

```
$deleter = new \NamelessCoder\TYPO3RepositoryClient\VersionDeleter();
$deleter->deleteExtensionVersion('extensionkey', '1.2.3', 'myusername', 'mypassword');
```

And as CLI command:

```
./bin/rmversion extensionkey 1.2.3 myusername mypassword
```

FAQ
---

[](#faq)

### Excluded files and folders

[](#excluded-files-and-folders)

- Dotfiles (like `.editorconfig` or `.php_cs.dist`) will be ignored except for `.htpasswd` and `.htaccess` files.
- Use a `.gitignore` file to exclude more files and folders from being included in the final TER release.

###  Health Score

39

—

LowBetter than 86% of packages

Maintenance16

Infrequent updates — may be unmaintained

Popularity38

Limited adoption so far

Community27

Small or concentrated contributor base

Maturity66

Established project with proven stability

 Bus Factor1

Top contributor holds 81.3% 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 ~205 days

Recently: every ~465 days

Total

13

Last Release

1719d ago

Major Versions

1.3.1 → 2.0.02017-02-12

### Community

Maintainers

![](https://www.gravatar.com/avatar/f5c01fb202269a6d9ba372c482874512d0246da99934592cdba1869a1776c4c1?d=identicon)[NamelessCoder](/maintainers/NamelessCoder)

---

Top Contributors

[![NamelessCoder](https://avatars.githubusercontent.com/u/2228052?v=4)](https://github.com/NamelessCoder "NamelessCoder (61 commits)")[![helhum](https://avatars.githubusercontent.com/u/904370?v=4)](https://github.com/helhum "helhum (6 commits)")[![simonschaufi](https://avatars.githubusercontent.com/u/941794?v=4)](https://github.com/simonschaufi "simonschaufi (6 commits)")[![fnagel](https://avatars.githubusercontent.com/u/116824?v=4)](https://github.com/fnagel "fnagel (1 commits)")[![spoonerWeb](https://avatars.githubusercontent.com/u/1793083?v=4)](https://github.com/spoonerWeb "spoonerWeb (1 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/namelesscoder-typo3-repository-client/health.svg)

```
[![Health](https://phpackages.com/badges/namelesscoder-typo3-repository-client/health.svg)](https://phpackages.com/packages/namelesscoder-typo3-repository-client)
```

###  Alternatives

[stripe/stripe-php

Stripe PHP Library

4.0k143.3M480](/packages/stripe-stripe-php)[twilio/sdk

A PHP wrapper for Twilio's API

1.6k92.9M272](/packages/twilio-sdk)[facebook/php-business-sdk

PHP SDK for Facebook Business

90821.9M34](/packages/facebook-php-business-sdk)[meilisearch/meilisearch-php

PHP wrapper for the Meilisearch API

74513.7M114](/packages/meilisearch-meilisearch-php)[google/gax

Google API Core for PHP

265103.1M454](/packages/google-gax)[google/common-protos

Google API Common Protos for PHP

173103.7M50](/packages/google-common-protos)

PHPackages © 2026

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