devincrossman/mindbody-php-api
A PHP client for the Mindbody API with Laravel integration. Query scheduling, class, appointment, client, and staff endpoints through a clean, expressive interface, with configurable authentication and request handling built in.
Architecture fit. This is not a Laravel package; it is a plain PHP wrapper class around Mindbody's SOAP endpoint. There is no service provider, facade, config file, contract, or test suite implied by the description. In a Laravel codebase it would land as a vendor dependency invoked directly from controllers or jobs, which is a poor architectural fit: no dependency injection boundary, no swap-ability, no framework-native configuration or credential management. It can be made to fit only behind a thin adapter of our own.
Integration feasibility. Technically trivial to install and call — SOAP calls via a WSDL are straightforward from PHP's ext-soap. The friction is not installation, it is everything around it: SOAP envelope/XML handling, WSDL retrieval and caching, authentication (source credentials plus staff user credentials plus site ID), and error semantics that are expressed as SOAP faults rather than HTTP status codes. Mindbody's public API strategy has moved toward a REST/OpenAPI v6 surface; a SOAP wrapper is therefore a legacy-era artifact and its long-term viability is the central question, not its code quality.
Technical risk. High, concentrated in three areas:
ext-soap, WSDL fetching can fail or be slow, PHP 8 compatibility is unverified, and there is no typed API surface, so misuse fails late at runtime rather than at analysis time.Key questions.
Stack fit. PHP/Laravel is compatible at the language level; the package offers no Laravel integration. Plan to treat it as an infrastructure detail behind an application-owned interface (e.g., MindbodyClient contract) so the underlying library is replaceable. Bind it through a service provider, move source credentials and site ID into config/services.php and .env, and never call the wrapper class directly from controllers.
Migration path. Do not adopt as-is. Two viable paths:
Decide between these in a short spike before committing engineering time.
Compatibility. Verify ext-soap availability across local, CI, and production containers; confirm PHP version support; confirm the package's SOAP client is configured for TLS and does not disable certificate verification. Check that Mindbody's rate limits and request size limits are respected by the wrapper's call patterns.
Sequencing.
Maintenance. Ongoing maintenance will fall to us, not upstream. Budget for owning a fork: dependency pinning, PHP upgrade testing, and eventual replacement. The MIT license is operationally friendly (no copyleft, no commercial terms to track), but a single-maintainer, low-signal project is a supply-chain concern; pin the commit hash and review before any update.
Support. There is no vendor support channel for this wrapper. Mindbody support will not troubleshoot third-party libraries, and SOAP fault messages are often opaque. Expect internal runbooks and a named owner. Community help will be thin given the star count.
Scaling. SOAP is chatty and heavyweight relative to REST. Calls are synchronous, so high-volume flows (syncing large client lists, nightly reconciliation) must go through queued jobs with backoff and rate limiting, plus caching of stable reference data (locations, staff, service catalog). Without an application-level cache and rate limiter, we will hit Mindbody throttling under load. Plan for horizontal workers, but note the bottleneck is external API throughput, not our app tier.
Failure modes.
Each needs explicit handling: typed exceptions, structured logging with correlation IDs, dead-letter queues, and alerting on error rate.
Ramp-up. Initial ramp-up is low — a developer can call an endpoint in an afternoon. Realistic ramp-up to production quality is one to two weeks, because the hard parts are not in the wrapper: SOAP error semantics, credential lifecycle, retry/idempotency design, observability, and the strategic decision about SOAP versus REST. Documentation is effectively absent, so onboarding depends on the spike output and the internal adapter we write.
Recommendation. Treat this package as a stopgap, not a foundation. Validate SOAP's support horizon first; if REST v6 covers our needs, build on an official client and skip this dependency. If SOAP is unavoidable short-term, contain it behind an internal interface, fork with observability and retry hardening, and schedule a replacement review within two quarters.
How can I help you explore Laravel packages today?