From c7befd225117158eb31daa3cfd0a363448303662 Mon Sep 17 00:00:00 2001 From: "t.munk (workhorse)" Date: Thu, 8 Oct 2026 13:39:06 +0000 Subject: [PATCH 1/2] fix(api): drop order[id] from the api configuration collection [*] The identifier is a random UUID v4; sorting by it has no meaning. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 6 +++++- src/Entity/ApiConfiguration.php | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f1a2351..73f430a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ - + # Changelog @@ -27,6 +27,10 @@ Secure storage and transport of the credentials in `configJson` ([Issue #8](http - `HealthProbeInterface` (Issue #9): a health check per type without the project-management client methods, autoconfigured. Schema-only types (no `ApiExtensionInterface`) answer the health route and command instead of "Unsupported API name"; a probe takes precedence over the client-based check. - `ApiConfigurationHealthChecker`: the health check shared by the health route, the health command and application dashboards. +### Changed + +- `GET /api/admin/api_configurations` no longer offers `order[id]`. The identifier is a random UUID v4, so sorting by it has no meaning; admin UIs that derive sortable columns from the offered `order[...]` parameters no longer show a sort control for it. Requests that still send `order[id]` are not sorted by it. + ### Fixed - `GET /api/admin/api_configurations/{id}/health` in JSON-LD returned `metadata` and `error` as `hydra:Collection` without their keys (Issue #9); the operation now normalizes nested arrays raw (`api_sub_level`). diff --git a/src/Entity/ApiConfiguration.php b/src/Entity/ApiConfiguration.php index e27a6a5..29ff28e 100644 --- a/src/Entity/ApiConfiguration.php +++ b/src/Entity/ApiConfiguration.php @@ -1,5 +1,5 @@ Date: Sat, 10 Oct 2026 10:38:48 +0000 Subject: [PATCH 2/2] docs: changelog and README for 0.5.0 [*] Dates the Unreleased section as 0.5.0 and notes what 0.5.0-beta1 already contained. The README lists the implemented features instead of the planned ones. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 10 +++++++--- README.md | 18 +++++++++--------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 73f430a..cda80e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,9 +2,11 @@ # Changelog -## Unreleased +All notable changes to this bundle. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions follow [SemVer](https://semver.org/) and come from the Git tags. -Secure storage and transport of the credentials in `configJson` ([Issue #8](https://github.com/dmstr/api-configuration-bundle/issues/8)) and a slimmer client contract ([Issue #9](https://github.com/dmstr/api-configuration-bundle/issues/9)). Release as a new minor version: the changes below break consumers in the ways listed under "Breaking changes". +## [0.5.0] - 2026-10-10 + +Secure storage and transport of the credentials in `configJson` ([Issue #8](https://github.com/dmstr/api-configuration-bundle/issues/8)) and a slimmer client contract ([Issue #9](https://github.com/dmstr/api-configuration-bundle/issues/9)). The changes break consumers in the ways listed under "Breaking changes". 0.5.0-beta1 contained everything below except the removal of `order[id]` ("Changed"). ### Breaking changes @@ -41,4 +43,6 @@ Secure storage and transport of the credentials in `configJson` ([Issue #8](http ## 0.4.0 and earlier -See git history. +See the git history. + +[0.5.0]: https://github.com/dmstr/api-configuration-bundle/compare/0.4.0...0.5.0 diff --git a/README.md b/README.md index 0a3140c..3634456 100644 --- a/README.md +++ b/README.md @@ -4,15 +4,15 @@ Manage external API connections as Doctrine entities. -## Features (planned) - -- `ApiConfiguration` entity — type, credentials (encrypted at rest, masked on read), endpoint config -- Custom operations: `health`, `authorize`, `test-connection` -- `ApiExtensionRegistry` — discoverable adapter pattern via tag -- `ApiExtensionInterface` / `AuthorizableExtensionInterface` — adapters - implement these to plug in -- OAuth callback controller for `authorize` flow -- CLI mirrors: `api-configuration:create`, `:health`, `:test-connection` +## Features + +- `ApiConfiguration` entity (`name`, `type`, `endpointType`, `configJson`, `active`) under `/api/admin/api_configurations`, `configJson` validated against the JSON schema of its type +- Secrets in `configJson` encrypted at rest and masked on read, see [Security](#security) +- Sub-resources `GET /api/admin/api_configurations/{id}/health` and `GET /api/admin/api_configurations/{id}/authorize`, OAuth callback at `/api/oauth/callback` +- `ApiExtensionRegistry`: extensions implement `ApiExtensionInterface` (and `AuthorizableExtensionInterface` for OAuth) and are registered by tag +- Console commands `app:api:create`, `app:api:test-connection`, `app:api:validate-file`, `app:api-configuration:health` and `app:api-configuration:encrypt-secrets` + +Changes per version are listed in [CHANGELOG.md](CHANGELOG.md). ## API clients