tagwalk/api-client-bundle
Tagwalk API Client Bundle integrates the Tagwalk API client into Symfony applications, providing service configuration, dependency injection, and ready-to-use HTTP client wiring so PHP projects can query Tagwalk endpoints with minimal setup.
Before you install anything, verify the package actually exists. The listing you're looking at has no stars, zero dependents, and a repository name (tag-walk/tagwalk-api-client) that does not match the package name (tagwalk/api-client-bundle). That mismatch is the single most important fact in this assessment: a library repo and a bundle repo are often separate, and it's plausible the bundle is unpublished or private. Run composer show tagwalk/api-client-bundle --all first. If it 404s, try tag-walk/tagwalk-api-client (likely the library) or vendor the repo via a VCS repository entry in composer.json.
Assuming it installs, the minimal path is standard Symfony bundle wiring:
composer require tagwalk/api-client-bundle
config/bundles.php (Flex does this automatically if the bundle ships a recipe; with zero dependents, assume it does not and add TagWalk\ApiClientBundle\TagWalkApiClientBundle::class => ['all' => true] manually).config/packages/tagwalk_api_client.yaml with the base URI and credentials. Read DependencyInjection/Configuration.php to get the real root key — it is usually the snake_case vendor name (tagwalk_api_client), not what the README claims.TAGWALK_API_KEY, TAGWALK_BASE_URI) rather than hardcoding them.Where to look first, in order: (1) the bundle class and its DependencyInjection/Extension.php for the config tree and service aliases; (2) Resources/config/services.yaml for the autowirable interface/alias; (3) the client class itself for auth handling and response shape; (4) the README last, since it drifts.
First use case: inject the client interface into a single service and make one read call — fetch an entity by ID and dump() the raw response. This confirms three things at once: autowiring works, auth headers are attached, and whether you get arrays, DTOs, or a PSR-7 response back. Do this before building anything on top.
*ClientInterface to the concrete service. Type-hint the interface so tests and future transport swaps are trivial.tagwalk service config block with base_uri, api_key, timeout. If the bundle exposes a scoped HTTP client, prefer that over hand-rolling headers per call.HttpClientInterface (many do via constructor injection), decorate it with RetryableHttpClient for 429/5xx and a rate-limiter. If it hardcodes its own transport, you'll need a compiler pass or a decorator on the client interface instead.cache.app with tags, short TTLs (5–15 min), and explicit invalidation on writes.MockHttpClient if the bundle exposes its transport). Register the stub in services_test.yaml so every consumer gets it automatically — this only works cleanly if you consistently inject the interface.tagwalk-api-client; the package is api-client-bundle. Confirm which artifact you actually installed (composer show) — you may have pulled a library that needs manual service registration, or a metapackage."tagwalk/api-client-bundle": "1.2.*" or a commit SHA), commit composer.lock, and read the source before trusting behavior. Budget time for reading, not googling.composer.json before promising a version bump. Unmaintained bundles frequently cap at ^5.4 or ^6.0 and will silently block your upgrade to Symfony 7.bin/console debug:config tagwalk_api_client (or whichever root name the extension declares). If it errors, the bundle isn't registered or the key is wrong — debug:container --tag=… and debug:container tagwalk will reveal the actual service IDs.base_uri combined with a relative path produces double or missing slashes. Test one call against a known-good curl invocation.readonly, nullable-heavy, or lack fromArray factories you'll end up writing.HttpClient defaults are generous; set explicit timeout/max_duration in config or you'll get hung workers under load.How can I help you explore Laravel packages today?