PHPackages                             ashampoo/ats-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. ashampoo/ats-client

ActiveLibrary[API Development](/categories/api)

ashampoo/ats-client
===================

Laravel client for the Ashampoo Translation Studio API

v1.1.0(1mo ago)06proprietaryPHPPHP ^8.3

Since Apr 29Pushed 1mo agoCompare

[ Source](https://github.com/Ashampoo/ats-client)[ Packagist](https://packagist.org/packages/ashampoo/ats-client)[ RSS](/packages/ashampoo-ats-client/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (2)Dependencies (4)Versions (4)Used By (0)

Ashampoo ATS Client
===================

[](#ashampoo-ats-client)

Laravel client for the **Ashampoo Translation Studio (ATS)** API.

Wraps the ATS HTTP endpoints in a typed, testable client with declarative endpoint definitions, query-parameter validation, and wrapped exceptions.

- **PHP:** `^8.3`
- **Laravel:** `^12.0 || ^13.0`

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

[](#installation)

The package is auto-discovered once it's in the `packages/` tree and declared in the root `composer.json` repositories/require sections:

```
composer require ashampoo/ats-client
```

Publish the config (optional — the package ships with sensible defaults):

```
php artisan vendor:publish --tag=ats-config
```

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

[](#configuration)

Set in `.env`:

```
ATS_BASEURL=https://translationstudio.ashampoo.com
ATS_TOKEN=your-bearer-token
ATS_PROJECT_ID=your-product-id
ATS_TIMEOUT=30

```

`ATS_BASEURL`, `ATS_TOKEN`, and `ATS_PROJECT_ID` are required when resolving the client from the container; the service provider throws `InvalidArgumentException` early with a clear message if one is missing. `ATS_TIMEOUT` is optional and defaults to `30` seconds.

Usage
-----

[](#usage)

The public API consists of typed methods, one per endpoint. Each method returns Laravel's `Illuminate\Http\Client\Response`.

### Via dependency injection

[](#via-dependency-injection)

```
use Ashampoo\AtsClient\Contracts\AtsClientInterface;

class ExportController
{
    public function __construct(private AtsClientInterface $ats) {}

    public function __invoke()
    {
        $response = $this->ats->getTranslations(language: 'de');

        return $response->json();
    }
}
```

### Via facade

[](#via-facade)

```
use Ashampoo\AtsClient\Facades\Ats;

$response = Ats::getLangInfo('de');
```

### GET — fetching translations

[](#get--fetching-translations)

```
Ats::getTranslations(
    language: 'de',
    filter: 'untranslated',
    formatId: 'xliff',
    contextSplitting: true,
);

Ats::getAllTranslations(filter: 'untranslated');
```

### POST — JSON import

[](#post--json-import)

```
use Ashampoo\AtsClient\Requests\TranslationImportRequest;

Ats::importTranslations(new TranslationImportRequest(
    language: 'de',
    importIds: true,
    importTranslations: true,
    overWriteTranslations: false,
    body: [
        'id-1' => 'Hallo Welt',
        'id-2' => 'Guten Tag',
    ],
));
```

### Machine translation / Translation memory

[](#machine-translation--translation-memory)

```
Ats::generateMachineTranslation('de');
Ats::generateAllMachineTranslations();
Ats::generateMemoryTranslation('de');
Ats::generateAllMemoryTranslations();
```

Endpoints
---------

[](#endpoints)

Defined in [`AtsEndpoint`](src/Enums/AtsEndpoint.php):

CaseMethodPath`Translations`GET`/api/project/{projectId}/translations``TranslationsAll`GET`/api/project/{projectId}/translations/all``LangInfo`GET`/api/project/{projectId}/language/info``TranslationImport`POST`/api/project/{projectId}/import``MachineTranslation`POST`/api/machinetranslations/{projectId}/generate``MachineTranslationAll`POST`/api/machinetranslations/{projectId}/generate/all``MemoryTranslation`POST`/api/translationmemory/{projectId}/generate``MemoryTranslationAll`POST`/api/translationmemory/{projectId}/generate/all`Each case also declares its allowed query parameters via `AtsEndpoint::queryParams()`. Required parameters are enforced by the client before any HTTP call is made.

Exceptions
----------

[](#exceptions)

All exceptions extend the abstract [`AtsException`](src/Exceptions/AtsException.php)and live in `Ashampoo\AtsClient\Exceptions\`:

ExceptionWhen`MissingQueryParamException`Required query parameter not provided before the HTTP call.`MissingBodyException`Endpoint requires a JSON body but none was supplied.`UnresolvedPathPlaceholderException`A `{placeholder}` in the endpoint path was never substituted.`AtsRequestException`Server returned 4xx/5xx. `getResponse(): Response` exposes it.Typical handling:

```
use Ashampoo\AtsClient\Exceptions\AtsRequestException;
use Ashampoo\AtsClient\Exceptions\MissingQueryParamException;

try {
    $response = Ats::getTranslations('de');
} catch (MissingQueryParamException $e) {
    // caller bug — log, surface to user
} catch (AtsRequestException $e) {
    $status = $e->getResponse()->status();
    $body   = $e->getResponse()->json();
    // decide: retry, surface, escalate
}
```

Development
-----------

[](#development)

```
composer install       # dependencies
composer test          # PHPUnit
composer analyse       # PHPStan (Larastan), level 8
composer check         # analyse + test
```

Tests use `Http::fake()` throughout — no network calls.

License
-------

[](#license)

Proprietary. See [LICENSE](LICENSE).

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance93

Actively maintained with recent releases

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity50

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

Every ~6 days

Total

2

Last Release

35d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/aa0b84fc21aefcb86ba0598d2ec5fb47d96a340a131904ef3572d400c9bb656c?d=identicon)[ash-ts](/maintainers/ash-ts)

![](https://www.gravatar.com/avatar/664473b7b40db19f499c0ffdf1ac2200216cdad223aca8ae68821109a2bd9239?d=identicon)[phiLuee](/maintainers/phiLuee)

---

Top Contributors

[![phiLuee](https://avatars.githubusercontent.com/u/46539944?v=4)](https://github.com/phiLuee "phiLuee (9 commits)")

###  Code Quality

Static AnalysisPHPStan

### Embed Badge

![Health badge](/badges/ashampoo-ats-client/health.svg)

```
[![Health](https://phpackages.com/badges/ashampoo-ats-client/health.svg)](https://phpackages.com/packages/ashampoo-ats-client)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3325.1M337](/packages/psalm-plugin-laravel)[defstudio/telegraph

A laravel facade to interact with Telegram Bots

815320.5k3](/packages/defstudio-telegraph)[simplestats-io/laravel-client

Analytics for Laravel. Track visitors, registrations, and payments. Discover which channels actually drive revenue, not just traffic. Server-side, GDPR compliant, ad-blocker proof.

5019.3k](/packages/simplestats-io-laravel-client)[jasara/php-amzn-selling-partner-api

A fluent interface for Amazon's Selling Partner API in PHP

1348.1k1](/packages/jasara-php-amzn-selling-partner-api)

PHPackages © 2026

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