{
  "id": 5984222,
  "title": "I Wrapped Disney, SeaWorld and Universal's Booking APIs in One Laravel Package",
  "url": "https://urgent.news/2026/09/06/i-wrapped-disney-seaworld-and-universals-booking-apis-in-one-laravel",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-06T13:33:31.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/iabduul7/i-wrapped-disney-seaworld-and-universals-booking-apis-in-one-laravel-package-4f6a"
  },
  "original_language": "en",
  "account": "The article describes the development of a Laravel package called iabduul7/laravel-themepark-booking-adapters that simplifies booking APIs from Disney, SeaWorld, and Universal using adapters. The source material covers three design principles followed in creating the package:\n\n1. Avoid unifying APIs that are not compatible, instead defining different capabilities for each provider. Disney and SeaWorld have separate support classes for handling holds and events, while Universal only supports events. This approach allows for type-hinting the required interfaces, ensuring that developers can easily work with the specific functionality they need.\n\n2. Implement retry logic for read operations but not for write operations. Read requests, such as fetching product information, are retried when they encounter temporary issues like network timeouts. Writes, such as creating bookings, are never retried to prevent the duplication of holds, bookings, or orders. This distinction helps maintain the integrity of the booking process and avoids potential double charges.\n\n3. Ensure that serialized objects do not leak sensitive information, such as API keys, into queued jobs. The package includes a mechanism to exclude the adapter reference from the serialized DTO, preventing API keys from being exposed in Redis or other queue storage. This precaution protects the security of the application and prevents unauthorized access to sensitive data.\n\nThe package follows these principles, providing a clean and reusable interface for working with the different booking APIs. Developers can easily integrate the package into their Laravel applications by resolving a provider, fetching products, checking availability, creating holds or bookings, and retrieving ticket artifacts. The package also includes a fresh token caching mechanism for handling token invalidations from the Universal SmartOrder API.\n\nTo ensure the reliability of the package, the author has written 60 contract tests using PHPUnit and mock HTTP requests. These tests cover various scenarios and run against the live sandbox environments of Disney and Universal. While SeaWorld's sandbox lacks bookable inventory, the package still provides contract testing for its read operations. The author emphasizes the importance of testing and publishing the package to avoid similar issues in production.",
  "summary": "TL;DR: iabduul7/laravel-themepark-booking-adapters gives you drop-in Laravel adapters for Disney and SeaWorld (via Redeam) and Universal Orlando (via SmartOrder). Auth, retries and OAuth tokens are handled. Below are the three design decisions I'd reuse in any API-wrapper package. The problem If you sell theme park tickets online, you don't talk to Disney. You talk to a distributor called Redeam.…",
  "key_points": [
    "Three design principles guide the iabduul7/laravel-themepark-booking-adapters package",
    "Separate support classes for Disney, SeaWorld, and Universal to handle compatibility",
    "Prevent sensitive data leakage by excluding adapter reference from serialized DTO"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}