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

Bitbucket Laravel Package

graham-campbell/bitbucket

A Laravel/PHP package by Graham Campbell that provides a clean, configurable Bitbucket Cloud API v2 client, with service provider and facade integration for working with repositories, pull requests, users, webhooks, and related resources.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The package is a thin Laravel adapter over bitbucket/client: a service provider, a publishable config file, a Bitbucket facade, and container bindings. It introduces no persistence, no domain model, and no queue or cache opinions — it occupies the infrastructure-adapter layer and composes with the framework rather than competing with it. From a TPM lens that shape is the whole story: the contract our application depends on is a handful of container resolutions and facade calls, so the package is replaceable. The real coupling is to the upstream SDK, and v11.1.0 makes that coupling explicit by requiring bitbucket/client ^5.1. Treat the SDK, not the wrapper, as the dependency of record.

Integration feasibility. Greenfield is roughly half a day: composer require, publish config, populate env credentials, resolve from the container. Brownfield is where the planning cost lives. The SDK floor moves from the 4.x line to 5.x — a transitive major bump and the only materially risky line in these release notes. PHP 8.5 and Laravel 13 support are additive compatibility. The planning consequence is that an upgrade here is a code change with a dependency-review gate, not a lockfile refresh.

Technical risk.

  • SDK major bump (primary). bitbucket/client 4→5 can break client construction, exception hierarchy, pagination iterators, and resource namespaces. Any call site that catches SDK exceptions, type-hints SDK classes, or walks paginated results directly is exposed. The dangerous failure is silent behavioral drift — same call, different response shape — not the fatal that CI catches.
  • Weak adoption signal. Zero dependents and a low composite score mean almost no downstream validation of this exact version combination. The maintainer demonstrably tracks upstream (Laravel 13 and PHP 8.5 landed promptly), but that is not the same as the ecosystem exercising it. Budget for being an early adopter and price that into the estimate.
  • Support-matrix ambiguity. The release notes say what was added, not what was dropped. If Laravel 10/11 or PHP 8.1/8.2 fell out of support, this is a breaking release in minor-version clothing — and that affects upgrade planning more than the SDK bump does.
  • Tested versus widened constraints. Verify that Laravel 13 and PHP 8.5 are CI matrix entries rather than simply widened composer.json constraints. A widened-but-untested constraint is worse than an honest exclusion, because Composer resolves into an unverified combination without complaint.
  • Credential surface. OAuth consumer secrets and app passwords flow through config. Confirm no token logging in debug mode and that config:cache behavior is documented, since a cached config is a plaintext secret at rest.

Key questions.

  1. Does v11.1.0 only add PHP 8.5 / Laravel 13, or does it drop earlier versions? Where is the authoritative support matrix?
  2. What breaks between bitbucket/client 4.x and 5.x, and is there an upstream upgrade guide citable in the change record?
  3. Is Laravel 13 exercised in the package's CI, or only constrained?
  4. What is the minimum PHP for bitbucket/client 5.1, and does it conflict with our pinned Guzzle and PSR-7 versions?
  5. Does the package abstract the SDK well enough that application code never imports SDK classes — or is the SDK de facto public API? The answer sets the cost of the next bump.

Integration Approach

Stack fit. Laravel 11–13 on PHP 8.2–8.5 is the presumptive window, subject to the support-matrix check above. The decision to record is not "adopt this package" but "adopt it behind our own interface." One thin internal gateway — get repository, list pull requests, post commit status, read pipeline — makes the next SDK major a one-file change and keeps a vendor swap a realistic option instead of a rewrite. This is the single highest-leverage architectural instruction in the whole assessment, and it costs a day.

Migration path. For anyone already on 11.0.x, a routine composer update silently pulls a new SDK major. Sequence it as deliberate work:

  1. Inventory direct bitbucket/client usage — imports, catch blocks, instanceof checks, type hints, pagination loops. This inventory is the effort estimate; do it before committing a date.
  2. Map each upstream breaking change to identified call sites.
  3. Upgrade on a branch, run the suite, and diff behavior against a real, non-production Bitbucket workspace. Mocks will not catch shape changes.
  4. Only then let the lockfile move on shared branches.

Compatibility. Run composer why-not bitbucket/client ^5.1 before scheduling anything; blockers almost always come from Guzzle or PSR-7 pins elsewhere in the tree. If a blocker is genuinely immovable, pin the package to the last 4.x-compatible release and raise the SDK migration as its own backlog item — do not let one adapter hold the application's upgrade cadence hostage.

Sequencing.

  1. Confirm and record the support matrix in the dependency register. This gates everything downstream.
  2. Stand up a non-production Bitbucket workspace with representative repositories and permission scopes — cheap, and the only environment that surfaces behavioral drift.
  3. Upgrade the adapter; exercise OAuth refresh, app-password auth, pagination, and error mapping specifically.
  4. Canary one read-only consumer in production (a sync or reporting job) before touching any write path.
  5. Retire the old pin, update runbooks, and log the resolved SDK version in the dependency register for next year's review.

Operational Impact

Maintenance. Steady-state cost is near zero: small codebase, stable API, conventional Laravel idiom. But the cost is lumpy — it arrives whenever upstream ships an SDK major or a new Laravel line. Budget an annual SDK-migration spike and a v12 jump when Laravel 14 lands, and put both in the yearly dependency review rather than discovering them mid-framework-upgrade. Frame this for finance as a low, infrequent, predictable cost rather than a flat one.

Support. Community OSS, no SLA, effectively a single maintainer. That is the real exposure: one person sits between us and a business-critical API. Mitigations are cheap and worth funding explicitly — keep the internal wrapper thin, keep a fork-and-patch path warm, pin versions deliberately rather than floating, and avoid building on Bitbucket endpoints the package itself does not exercise.

Scaling. Throughput is bounded by Bitbucket's rate limits and pagination semantics, not by this package. The adapter will not queue, batch, cache, or back off for us. Any repository-scale enumeration must be designed as paginated, queued work with explicit 429 handling from day one; retrofitting that after a rate-limit incident is materially more expensive than building it in.

Failure modes.

  • Partial upgrade — class-not-found or signature fatals at boot. Caught by CI if the sequencing above is followed; catastrophic if a lockfile drifts on a shared branch.
  • Silent behavioral drift — pagination or error-shape changes that return successfully with different data. This is the failure mode that reaches users, and it is why the canary and the real-workspace diff are non-negotiable.
  • Credential leakage — secrets in cached config or debug logs. Mitigate with config review and log-scrubbing checks as part of the initial spike, not after.
  • Maintainer abandonment — no upstream release for a framework upgrade we need. Mitigate with the fork-ready patch path; the thin wrapper keeps this a day of work, not a quarter.

Ramp-up. Any Laravel developer can consume the facade productively in under a day, because there is nothing new to learn beyond the Bitbucket API surface itself. That is the package's core value proposition and should be the headline in the decision record: it converts an integration project into configuration plus mapping logic, maintainable by the team rather than by the one engineer who wrote it. The ramp-up risk sits with ops, not engineering — whoever owns secrets, rate limits, and the dependency register needs the runbook from step 5 above.

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.
novasa/laravel-language-center
opencage/geocode
adolfoholzer/parameters
livenetworks/ln-starter
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core