ops-talent/apibundle
ops-talent/apibundle is a Laravel/PHP package for organizing API endpoints into a reusable bundle, helping teams keep routes, controllers, and responses consistent while centralizing API logic and reducing duplication across Laravel applications.
Before writing any code, verify this package is actually the right tool: last release was July 2019, it has a single GitHub star and zero dependents, and it targets the Symfony 3.x/4.x era (FOSUserBundle/FOSOAuthServerBundle style OAuth2 wiring). On any current Symfony (5.4+, 6.x, 7.x) expect dependency resolution failures before you even reach composer install. If you're on a Laravel codebase, note that this is a Symfony bundle, not a Laravel package — there is no service provider, no config publishing, and nothing designed for Eloquent. You would be integrating it as a sidecar, not as a Composer library.
Minimal steps if you are committed:
composer.json first — it is the fastest way to see the pinned Symfony/FOS versions and whether your project can even satisfy them.*Bundle.php) and DependencyInjection/ — this tells you which services, listeners, and config keys are auto-registered. There is no README-level documentation worth relying on; the DI extension is your spec.Controller/, Entity/, and Resources/config/ to find the REST resource pattern and the security/voter wiring for OAuth2.friendsofsymfony/oauth-server-bundle, which is itself abandoned). If not, this bundle provides no usable auth on its own.First use case: stand up one read-only endpoint (e.g. GET /api/items) using whatever controller base class or resource convention the bundle ships, behind the bundle's security config, to prove the wiring works end-to-end before you invest in writes, pagination, or token issuance.
Realistically, the first use case for most teams is: read it as a reference implementation for how to structure a RESTful API with OAuth2 in Symfony, then reimplement the parts you need against maintained packages (lexik/jwt-authentication-bundle, nelmio/api-doc-bundle, API Platform). Treat it as a teaching artifact, not a dependency.
The bundle follows the classic Symfony "API bundle" shape, so the patterns you'll see are:
config/packages/*.yaml under the bundle's root key. Keep all of your bundle config in one dedicated file (e.g. config/packages/opstalent_api.yaml) — the DI extension is the only reliable documentation you'll have, so you want it isolated and diffable.oauth2 firewall with a token endpoint, resource-server protection on the API firewall, and (typically) a password or client-credentials grant for machine clients. If you're adapting this to a modern app, map those grants onto JWT: client-credentials → lexik/jwt with a machine user, password grant → discouraged, prefer authorization-code + PKCE.#[Groups] attributes plus #[Ignore] on anything sensitive./api/v1/...) — copy this even if you drop the bundle. It's the one cheap decision from this era worth keeping.composer.json.A safe workflow if you're mining it: extract entity → extract controller patterns → extract security firewall config → replace the abandoned OAuth2 lib with JWT → add OpenAPI via nelmio/api-doc-bundle. That sequence gives you a working API with the same shape and none of the dependency risk.
friendsofsymfony/oauth-server-bundle, which is itself abandoned and was superseded by league/oauth2-server / oauth2-server-bundle. Check composer.lock after install; if FOS is in there, you have two unmaintained libs, not one.Resources/config/, and the security config. Use bin/console debug:router, debug:container --tag=..., and debug:config <bundle_alias> to see what the bundle actually registered — these three commands will save you hours.Configuration.php (->children()->scalarNode(...)), not just present in a YAML file you copied from a blog post.api before oauth_token (or vice versa) produces 401s that look like token bugs. Check security.yaml ordering first when tokens mysteriously fail.v1 route prefix, the serializer-group discipline, and the "security firewall owns auth, controllers own data" separation. Those are cheap and portable; the concrete code is not.lexik/jwt-authentication-bundle + nelmio/api-doc-bundle). If you're on Laravel, the equivalent stack is Laravel Sanctum or Passport + API Resources + Scribe — this bundle offers you nothing there.How can I help you explore Laravel packages today?