Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Rest Laravel Package

ibexa/rest

Adds a REST remote API to Ibexa DXP and Ibexa Open Source, letting applications manage content, users, and repositories over HTTP. Useful for building integrations, headless frontends, and third-party clients against Ibexa.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

ibexa/rest is not a general-purpose library — it is a Symfony bundle that registers a REST server surface on top of an existing Ibexa DXP (or Ibexa Open Source) installation. Its architectural role is the HTTP contract layer over the Ibexa Content Repository: controllers, input parsers (criteria, sort clauses), output visitors, media-type negotiation, and the authentication firewall for /api/ibexa/v2/*. Evaluate it as a platform capability, not as an integration dependency. The correct architectural question is never "should we adopt this package?" but "should we expose our Ibexa content repository over REST at all, and via this bundle versus GraphQL or direct PHP API." Fit is strong only where the consuming systems are non-PHP (mobile apps, iPaaS, middleware, partner integrations) or where you need synchronous CRUD/trash/version workflows rather than read-optimised delivery.

Integration feasibility

Feasible with low technical effort and high organisational effort. Installation is a single Composer requirement plus bundle registration inside a host Ibexa app; there is no greenfield integration surface to build. The friction is entirely in the surrounding decisions: license entitlement, version-line pinning (4.6 and 5.0 are maintained in parallel and are not interchangeable), and client-side contract work. Note the 5.x line requires PHP 8.3 and now tracks Symfony 7.4 LTS, so the real constraint is your host platform's PHP/Symfony baseline, not this package.

Technical risk

  • Licensing is the dominant risk. The package is dual-licensed under the Ibexa Business Use License (requires an active DXP subscription) and GPLv2. The NOASSERTION SPDX result reflects this ambiguity. Under GPLv2 the copyleft obligations are material for any distributed product. Legal review before any code touches a shipped artifact is non-negotiable.
  • Near-zero independent adoption signal. 5 stars and 0 dependents is not a quality signal — it is an artefact of this being a split-out repository of a commercial monorepo. Do not read it as either endorsement or abandonment; read it as "no community safety net." Support comes from Ibexa, via commercial channels.
  • Contract churn. The 5.0 changelog is dominated by OpenAPI-alignment work (openapi-compatible publish, move, copy, swap, trash endpoints) alongside renamed routes, dropped class_alias BC layers, and deprecated parsers. Legacy and OpenAPI-compatible shapes coexist. Any client you build will be pinned to a specific minor and will need re-verification at each upgrade.
  • Framework coupling. A regexp regression after a Symfony 7.3.8 patch release, and the Symfony authenticator rework under a separate firewall, show the bundle is sensitive to framework-internal changes within patch-level upgrades. Budget for regression testing on framework updates you would otherwise consider routine.
  • Payload hygiene. A fixed defect where ENCODER_CONTEXT leaked into responses for nested objects is a reminder that output visitors are security-adjacent; response shape verification belongs in test, not in production discovery.

Key questions

  1. Do we hold a valid Ibexa DXP subscription, and under which license branch will we consume this — BUL or GPLv2?
  2. Which Ibexa version line are we on (4.6 vs 5.0), and what is its support horizon?
  3. Is our need genuinely HTTP/REST, or is GraphQL or direct PHP API access a better fit for the consumers?
  4. Who owns the API contract — us or Ibexa — and what is our policy when routes are renamed or media types change?
  5. Do we require stateless token auth only, or do we need session semantics?

Integration Approach

Stack fit

Assumes an existing Ibexa DXP application. Required baseline: PHP 8.3 for the 5.x line, Symfony 7.4 LTS on 5.x, and a compatible ibexa/* core set. Auth is handled by a dedicated Symfony authenticator-based firewall, with token-based authentication as a first-class service (added in 5.0) and session routes available including a check-session route that supersedes the deprecated refresh-session route. Clients are any HTTP-capable system. There is no meaningful stack fit for a non-Ibexa PHP application.

Migration path

Treat this as an exposure decision, not a migration. Sequence:

  1. Entitlement and license clearance — confirm subscription status and obtain written position on BUL vs GPLv2 for each consuming product.
  2. Baseline audit — inventory host platform version, PHP and Symfony versions, and existing firewall configuration; the 5.x authenticator rework changes how REST auth attaches to the security stack.
  3. Scope the surface — enumerate exactly which endpoints the integration needs. The bundle is broad (content, content types, type groups, locations, trash, users, user groups, roles, languages, URL aliases, sessions); enabling it wholesale expands attack surface and your regression matrix for no benefit.
  4. Contract capture — generate and freeze the OpenAPI reference for your pinned version. Where legacy and OpenAPI-compatible variants of the same operation exist, choose one and record the choice.
  5. Client build against the frozen contract, with contract tests as the gate.
  6. Progressive exposure — internal consumers first, external partners after a soak period.

Compatibility

Pin to an exact patch, not a floating constraint. Dual-branch maintenance (4.6.x and 5.0.x receiving the same fixes, e.g. the logout token removal and CI changes landing in both) means fixes are available on both lines — but it also means you must consciously choose a line and track its deprecations. 5.0 dropped class-alias BC layers and deprecated RequestParser implementations; if any custom extension code exists, migration to the newer parser and base-processor abstractions is prerequisite work. Media-type granulation is configurable, so verify the negotiated content types your clients send and accept match what the deployment enables — a supported_media_types flag now governs accepted request media types.

Sequencing

License → version pin → auth model → endpoint scope → contract freeze → client build → contract test → soak → external exposure. Do not parallelise license clearance with client development; a GPLv2 finding late invalidates work.

Operational Impact

Maintenance

Low code maintenance, moderate upgrade maintenance. You are not maintaining a fork; Ibexa ships patches (the visible cadence shows frequent patch releases across both lines, including routine CI and dependency bumps). Your cost is verifying each Ibexa upgrade against your frozen contract, plus re-testing after Symfony patch upgrades given the demonstrated regexp regression. Assign explicit ownership of the version-pin bump decision — this is the most common place such integrations silently rot.

Support

Commercial, gated behind subscription. There is no independent community to fall back on: 0 dependents, 5 stars, and a README that defers entirely to Ibexa's official documentation and a separate REST API reference site. If the subscription lapses, you have GPLv2 code and no vendor. Model this as a vendor-support dependency in the risk register, not an OSS dependency.

Scaling

Inherits the host Ibexa application's scaling profile — REST adds HTTP overhead, request parsing, and serialisation on top of repository operations that already dominate cost. The dominant scaling concerns are per-request authentication cost (favour token auth over session creation per request), content search query cost through the criteria parser path, and rate limiting at the edge. There is no separate scaling story here; if the platform's repository tier does not scale, the REST layer will not either. Cache read-heavy endpoints at the gateway rather than expecting the bundle to absorb load.

Failure modes

  • Auth/session failures — the authenticator rework under a separate firewall means misconfiguration surfaces as 401/403 storms rather than obvious errors; the logout token-removal fix indicates token lifecycle edge cases were live.
  • Redirect loops — a fixed infinite redirect in the content relations controller is a class of bug that, if reintroduced, manifests as client hangs and thread exhaustion rather than clean errors. Monitor 3xx rates.
  • Contract breaks on patch upgrades — renamed routes, changed response codes to match spec, and criterion parser prefixing all shipped as "improvements." Treat every patch release note as a potential client-visible change.
  • Response shape drift — nested-object encoder leakage shows payloads can change in ways schema validation catches but naive clients do not. Enforce response schema validation in CI.
  • Media-type negotiation failures — mismatched Content-Type or unsupported media types produce request rejections that look like client bugs.

Ramp-up

Fast for a PHP/Symfony team already on Ibexa — days, not weeks, for a first endpoint. Slow for everyone else: the learning curve is Ibexa content model concepts (content types, type groups, locations, versions, trash, criteria and sort-clause grammar) and the REST media-type conventions, not the bundle itself. Budget for one engineer to own the contract and one to own client-side integration. The absence of in-repo documentation beyond a pointer means onboarding depends on external docs and, realistically, a subscription-backed support channel.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
adachsoft/php-code-style