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

Mindbodyonline Api Bundle Laravel Package

wmds/mindbodyonline-api-bundle

Symfony bundle that integrates the Mindbody Online API into your PHP application, offering ready-made services and configuration for booking, scheduling, and client data access. Simplifies authentication and API calls so you can connect to Mindbody faster.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — the headline risk. Despite being catalogued here as a Laravel/PHP package, this is a Symfony 2 bundle, not a Laravel package. It ships a Bundle subclass, DI extension, and YAML service definitions that only the Symfony 2 kernel can load. Laravel has no equivalent container-compilation or bundle-registration mechanism, so the package cannot be installed and used as-is. The reusable asset is the inner client layer — the code that speaks to MindBody — and even that is likely entangled with Symfony's EventDispatcher, DependencyInjection, and configuration tree.

API-surface risk. The bundle targets the MindBody SOAP-era API (WSDL-generated client via ext-soap). MindBody has since moved to a REST Public API with OAuth2 source credentials, and legacy SOAP endpoints have been progressively sunset. There is a real possibility the wire protocol this package implements is no longer served at all — which would make the client code a historical reference rather than a functioning integration.

Technical risk summary (high). Four compounding factors: (1) Symfony 2 reached end-of-life in November 2018; (2) 4 stars and 0 dependents means no downstream testing, no issue traffic, and no community to lean on; (3) PHP 5.x/7.0-era code will fight PHP 8.x on dynamic properties, ext-soap typing, and Guzzle major-version conflicts; (4) the underlying vendor API contract has moved. Any one of these is manageable; together they argue strongly against adopting it as a dependency.

Key questions to resolve in a timeboxed spike (2–3 days, not more):

  • Does the package's client target an API version MindBody still serves for our site/partner tier?
  • Is the MindBody-facing code cleanly separable from Symfony DI, or is the transport woven through service definitions?
  • What are our actual use cases — catalog reads (services, staff, locations) versus booking/member writes? Read-only substantially lowers the risk profile.
  • Do we already hold MindBody partner/source credentials and a sandbox site, or is that procurement on the critical path?

Integration Approach

Stack fit. Do not attempt to bridge Symfony's container into Laravel. Treat the repository as a reference implementation: mine it for endpoint shapes, request/response field mappings, and domain modeling (appointments, clients, staff, services), then reimplement against a Laravel-native transport.

Recommended shape. A first-party packages/mindbody module inside the monorepo:

  • config/mindbody.php for source credentials, site ID, base URI, and timeout/retry policy.
  • A MindBodyServiceProvider binding a typed client singleton, with credentials pulled from env and never from committed config.
  • Laravel's Http client for REST (retry, timeout, middleware) — this also gives you clean test doubles via Http::fake().
  • Domain-level services (e.g. CatalogService, BookingService) that return DTOs, so vendor payload churn stays in one layer.

Migration path. Two-track decision tree:

  1. If the spike confirms the SOAP endpoints still serve our account: extract the WSDL-client code into a small standalone class behind a Laravel binding, pin ext-soap, and wrap it. Fastest to first data, but you inherit an interface with no future.
  2. If (more likely) the legacy endpoints are dead or deprecated: build a thin REST client against MindBody's Public API v6 with OAuth2 token issuance and refresh. This is roughly 3–5 days of work for read paths and is the only durable option.

Compatibility notes. Laravel 10/11 run PHP 8.1+, so Symfony 2 code will not load; Guzzle 5/6 constraints from that era conflict with Laravel's HTTP stack. Plan on zero code reuse at the transport layer regardless of which track you choose — the value being extracted is domain knowledge, not executable code.

Sequencing.

  1. Credential and sandbox access (often the longest lead item — start immediately).
  2. Auth spike: obtain a token and read one catalog endpoint end-to-end.
  3. Read-only catalog: services, staff, locations — cache aggressively.
  4. Booking/appointment writes, with idempotency keys and explicit duplicate-booking guards.
  5. Webhooks or polling for subscription-style sync, if the product needs it.
  6. Only then delete the reference checkout from the repo.

Operational Impact

Maintenance. Effectively zero upstream. With 0 dependents and a Symfony 2 target, expect no fixes, no security patches, and no responsiveness from maintainers. If we vendor any of this code, we own it outright and should document it as a fork with a named owner. Budget a standing line item for API-version tracking, since the vendor contract — not the package — is the thing most likely to break us.

Support. No usable documentation beyond the repository, no vendor support path for third-party wrappers, and MindBody partner support is gated on account tier. Internal ramp-up requires familiarity with SOAP/XML debugging and the MindBody data model simultaneously, which narrows the pool of engineers who can pick this up cold.

Scaling. MindBody enforces per-site rate limits and offers no meaningful batching on the legacy interface, so a naive "call on every page load" design will degrade quickly. Mitigations: cache catalog reads with a TTL measured in minutes-to-hours, queue write operations rather than performing them in the request cycle, and instrument call counts per endpoint from day one. Booking endpoints are the throughput bottleneck, not catalog reads.

Failure modes to design for explicitly:

  • WSDL fetch or ext-soap extension absent in a container image — fails at boot, not at call time.
  • Silent auth expiry mid-session producing opaque SOAP faults rather than clean 401s.
  • Duplicate bookings on client retry or timeout — the highest-severity failure; requires an idempotency key or a read-back reconciliation step.
  • Partial writes where the vendor accepted the request but the response was lost; always reconcile on timeout rather than assuming failure.
  • Timezone and locale drift between our app and the site's configured timezone, which corrupts appointment slot computation.
  • Sandbox versus production credential crossover — enforce distinct config namespaces and fail closed.

Ramp-up realism. Expect one engineer, roughly one week, to reach a confident go/no-go on API viability, plus 1–2 weeks for a production-grade read path. The package itself saves perhaps a day of domain discovery. Frame the decision to stakeholders accordingly: we are not adopting a dependency, we are evaluating an abandoned reference implementation against a live vendor API — and the value is bounded, the risk is not.

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.
unabomber/timezone
delatbabel/contacts
astritzeqiri/g-recaptcha
kevinongko/laravel-genode
developeruz/laravel-analytics
robbiep/afterthedeadline
frankkessler/incontact-laravel-oauth2-rest
jlxh/laravel-userlog
davidmgilo/timetables
qylinfly/role-permission
reflect-digital/conduit
takashato/laravel-vietqr
aitor24/laralang
kraenzle-ritter/entity-relations
dindigital/din-image
pomirleanu/image-colors
sawmainek/laravel-api-generator
delatbabel/jsonresponses
mouhamedfd/permissions-generator
eduplus/qr