openapi: 3.0.3 info: title: AMC Theatres API description: |- The AMC Theatres API is a public REST API published by AMC Entertainment Holdings that exposes data and transactional capabilities for AMC theatres, movies, showtimes, locations, loyalty, concessions, orders, refunds, media, and webhooks. It is intended for partner integrations such as movie discovery, ticket sales, dine-in / express pickup concession ordering, AMC Stubs loyalty integrations, and entertainment listings on third-party sites and apps. Authentication is performed by sending a vendor API key in the `X-AMC-Vendor-Key` request header. Responses follow a HAL-style envelope (`pageSize`, `pageNumber`, `count`, `_embedded`, `_links`) for collections. This OpenAPI definition was reconstructed from the public AMC Developer Portal documentation (developers.amctheatres.com) and known integrations. The dev portal blocks automated retrieval, so this spec was assembled from third-party mirrors of the AMC documentation and verified against open-source AMC API clients. version: "v2" contact: name: AMC Theatres Developer Portal url: https://developers.amctheatres.com termsOfService: https://www.amctheatres.com/legal/terms-of-use license: name: AMC Theatres API Terms of Use url: https://www.amctheatres.com/legal/terms-of-use externalDocs: description: AMC Theatres Developer Portal url: https://developers.amctheatres.com servers: - url: https://api.amctheatres.com description: AMC Theatres production API tags: - name: Theatres description: AMC theatre locations, attributes, and metadata. - name: Movies description: AMC movies, including now-playing, advance, coming-soon, and on-demand. - name: Showtimes description: Theatre showtimes for movies, including embargoed and proximity-based searches. - name: Locations description: Geographic helpers for finding theatres by state, city, name, or coordinates. - name: Markets description: AMC market areas grouping theatres by region. - name: States description: U.S. states served by AMC. - name: Media description: Images and videos for movies, theatres, and attributes. - name: Attributes description: Movie, showtime, and theatre attribute taxonomy. - name: Seating description: Seating layouts and seat selection. - name: Orders description: Order creation, payment, fulfillment, and management. - name: Concessions description: Concessions ordering, categories, delivery and pickup logistics. - name: Loyalty description: AMC Stubs loyalty accounts, cards, redemptions, and registrations. - name: Refunds description: Order refunds, refund reasons, and fee waivers. - name: Barcodes description: Ticket and loyalty QR codes and Code 128 barcodes. - name: Webhooks description: Vendor webhook subscription and management. - name: Wallet description: AMC account wallets for external billers. - name: MovieConfirmations description: Movie ticket confirmation lookups. paths: /v2/theatres: get: summary: List All Active Theatres description: Returns a paginated list of active AMC theatres, optionally filtered by attributes, market, state/city, brand, or name. operationId: listTheatres tags: [Theatres] parameters: - $ref: '#/components/parameters/IncludeAttributes' - $ref: '#/components/parameters/ExcludeAttributes' - $ref: '#/components/parameters/AttributeOperator' - name: ids in: query description: Comma-delimited list of theatre ids to filter by. schema: { type: string } - name: name in: query description: Filter theatres whose name contains the specified text. schema: { type: string } - name: market in: query description: Filter theatres in the specified market. schema: { type: string } - name: state in: query description: Filter theatres in the specified state (required when `city` is given). schema: { type: string } - name: city in: query description: Filter theatres in the specified city (requires `state`). schema: { type: string } - name: brand in: query description: Filter theatres by brand abbreviation. schema: { type: string } - name: include in: query description: Set to `closed` to include closed theatres. schema: type: string enum: [closed] - $ref: '#/components/parameters/PageNumber' - $ref: '#/components/parameters/PageSize' responses: '200': description: A paged list of theatres. content: application/json: schema: { $ref: '#/components/schemas/TheatreCollection' } /v2/theatres/{idOrSlug}: get: summary: Get a Theatre by Id or Slug description: Returns a single theatre matched by numeric id or url-friendly slug. operationId: getTheatre tags: [Theatres] parameters: - name: idOrSlug in: path required: true description: The theatre id (integer) or theatre slug. schema: { type: string } responses: '200': description: Theatre representation. content: application/json: schema: { $ref: '#/components/schemas/Theatre' } '404': $ref: '#/components/responses/NotFound' /v2/theatres/views/now-playing/wwm-release-number/{wwm-release-number}: get: summary: List Theatres Now Playing a WWM Release description: Returns theatres now playing the specified West World Media release number. operationId: listTheatresByWwmRelease tags: [Theatres] parameters: - name: wwm-release-number in: path required: true schema: { type: string } - $ref: '#/components/parameters/PageNumber' - $ref: '#/components/parameters/PageSize' responses: '200': description: Theatres playing the release. content: application/json: schema: { $ref: '#/components/schemas/TheatreCollection' } /v2/theatres/{theatre-number}/showtimes: get: summary: List Showtimes for a Theatre description: Returns all future showtimes for the specified theatre. operationId: listTheatreShowtimes tags: [Showtimes] parameters: - $ref: '#/components/parameters/TheatreNumber' - name: movie-id in: query schema: { type: integer } description: Filter to showtimes for a specific movie id. - $ref: '#/components/parameters/IncludeAttributes' - $ref: '#/components/parameters/ExcludeAttributes' - $ref: '#/components/parameters/AttributeOperator' - $ref: '#/components/parameters/PageNumber' - $ref: '#/components/parameters/PageSize' responses: '200': description: Showtimes collection. content: application/json: schema: { $ref: '#/components/schemas/ShowtimeCollection' } /v2/theatres/{theatre-number}/showtimes/{date}: get: summary: List Showtimes for a Theatre on a Date description: Returns all showtimes for the specified theatre on the specified date that meet the supplied search criteria. operationId: listTheatreShowtimesByDate tags: [Showtimes] parameters: - $ref: '#/components/parameters/TheatreNumber' - name: date in: path required: true schema: { type: string, format: date } description: Date in ISO-8601 (YYYY-MM-DD) format. - $ref: '#/components/parameters/IncludeAttributes' - $ref: '#/components/parameters/ExcludeAttributes' - $ref: '#/components/parameters/AttributeOperator' - $ref: '#/components/parameters/PageNumber' - $ref: '#/components/parameters/PageSize' responses: '200': description: Showtimes collection. content: application/json: schema: { $ref: '#/components/schemas/ShowtimeCollection' } /v2/theatres/{theatre-number}/showtimes/{date}/views/embargoed: get: summary: List Embargoed Showtimes for a Theatre on a Date description: Returns all embargoed showtimes for the specified theatre and date. operationId: listEmbargoedShowtimes tags: [Showtimes] parameters: - $ref: '#/components/parameters/TheatreNumber' - name: date in: path required: true schema: { type: string, format: date } - $ref: '#/components/parameters/PageNumber' - $ref: '#/components/parameters/PageSize' responses: '200': description: Embargoed showtimes. content: application/json: schema: { $ref: '#/components/schemas/ShowtimeCollection' } /v2/theatres/{theatre-number}/movies/{movie-id}/earliest-showtime: get: summary: Get Earliest Showtime For Movie at Theatre description: Returns the earliest showtime for a specific movie id at the specified theatre. operationId: getEarliestShowtime tags: [Showtimes] parameters: - $ref: '#/components/parameters/TheatreNumber' - name: movie-id in: path required: true schema: { type: integer } responses: '200': description: Showtime representation. content: application/json: schema: { $ref: '#/components/schemas/Showtime' } /v2/theatres/{theatre-number}/seating-layouts: get: summary: List Seating Layouts For an Auditorium description: Returns the seating layouts available at the specified theatre auditorium. operationId: listTheatreSeatingLayouts tags: [Seating] parameters: - $ref: '#/components/parameters/TheatreNumber' responses: '200': description: Seating layouts. content: application/json: schema: { $ref: '#/components/schemas/SeatingLayoutCollection' } /v2/showtimes/{id}: get: summary: Get Showtime By Id description: Returns the showtime with the specified id. operationId: getShowtime tags: [Showtimes] parameters: - name: id in: path required: true schema: { type: integer } responses: '200': description: Showtime representation. content: application/json: schema: { $ref: '#/components/schemas/Showtime' } '404': $ref: '#/components/responses/NotFound' /v2/showtimes/views/current-location/{date}/{latitude}/{longitude}: get: summary: List Showtimes Near a Location description: Returns all showtimes in proximity to the supplied latitude and longitude on the specified date. operationId: listShowtimesByLocation tags: [Showtimes] parameters: - name: date in: path required: true schema: { type: string, format: date } - name: latitude in: path required: true schema: { type: number, format: double } - name: longitude in: path required: true schema: { type: number, format: double } - $ref: '#/components/parameters/PageNumber' - $ref: '#/components/parameters/PageSize' responses: '200': description: Showtimes near the location. content: application/json: schema: { $ref: '#/components/schemas/ShowtimeCollection' } /v2/movies: get: summary: List All Movies description: Returns a paginated list of AMC movies. operationId: listMovies tags: [Movies] parameters: - name: name in: query schema: { type: string } description: Filter movies whose name contains the supplied text. - $ref: '#/components/parameters/PageNumber' - $ref: '#/components/parameters/PageSize' responses: '200': description: Movies collection. content: application/json: schema: { $ref: '#/components/schemas/MovieCollection' } /v2/movies/views/now-playing: get: summary: List Now Playing Movies operationId: listMoviesNowPlaying tags: [Movies] parameters: - $ref: '#/components/parameters/PageNumber' - $ref: '#/components/parameters/PageSize' responses: '200': description: Now playing movies. content: application/json: schema: { $ref: '#/components/schemas/MovieCollection' } /v2/movies/views/advance: get: summary: List Advance Ticket Movies operationId: listMoviesAdvance tags: [Movies] parameters: - $ref: '#/components/parameters/PageNumber' - $ref: '#/components/parameters/PageSize' responses: '200': description: Advance ticket movies. content: application/json: schema: { $ref: '#/components/schemas/MovieCollection' } /v2/movies/views/coming-soon: get: summary: List Coming Soon Movies operationId: listMoviesComingSoon tags: [Movies] parameters: - $ref: '#/components/parameters/PageNumber' - $ref: '#/components/parameters/PageSize' responses: '200': description: Coming soon movies. content: application/json: schema: { $ref: '#/components/schemas/MovieCollection' } /v2/movies/views/active: get: summary: List Active Movies operationId: listMoviesActive tags: [Movies] responses: '200': description: Active movies. content: application/json: schema: { $ref: '#/components/schemas/MovieCollection' } /v2/movies/views/all/active: get: summary: List All Active and On-Demand Movies operationId: listMoviesAllActive tags: [Movies] responses: '200': description: All active and digital on-demand movies. content: application/json: schema: { $ref: '#/components/schemas/MovieCollection' } /v2/movies/views/on-demand: get: summary: List Digital On-Demand Movies operationId: listMoviesOnDemand tags: [Movies] responses: '200': description: On-demand movies. content: application/json: schema: { $ref: '#/components/schemas/MovieCollection' } /v2/movies/{idOrSlug}: get: summary: Get a Movie by Id or Slug operationId: getMovie tags: [Movies] parameters: - name: idOrSlug in: path required: true schema: { type: string } responses: '200': description: Movie representation. content: application/json: schema: { $ref: '#/components/schemas/Movie' } '404': $ref: '#/components/responses/NotFound' /v2/movies/{id}/on-demand/similar: get: summary: List Similar On-Demand Movies operationId: listSimilarOnDemandMovies tags: [Movies] parameters: - name: id in: path required: true schema: { type: integer } responses: '200': description: Similar movies. content: application/json: schema: { $ref: '#/components/schemas/MovieCollection' } /v2/movies/internal-release/{id}: get: summary: Get a Movie by Internal Release Id operationId: getMovieByInternalRelease tags: [Movies] parameters: - name: id in: path required: true schema: { type: integer } responses: '200': description: Movie representation. content: application/json: schema: { $ref: '#/components/schemas/Movie' } /v2/locations/states/{state-name}: get: summary: Get Locations in a State operationId: listLocationsByState tags: [Locations] parameters: - name: state-name in: path required: true schema: { type: string } responses: '200': description: Locations in the state. content: application/json: schema: { $ref: '#/components/schemas/LocationCollection' } /v2/locations/theatres/{theatre-name}: get: summary: Get Locations Matching Theatre Name operationId: listLocationsByTheatreName tags: [Locations] parameters: - name: theatre-name in: path required: true schema: { type: string } responses: '200': description: Matching locations. content: application/json: schema: { $ref: '#/components/schemas/LocationCollection' } /v2/location-suggestions: get: summary: List Location Suggestions description: Suggest locations by zip code, city, state, theatre name, etc. operationId: listLocationSuggestions tags: [Locations] parameters: - name: query in: query schema: { type: string } description: The user-entered text to suggest locations for. responses: '200': description: Location suggestions. content: application/json: schema: { $ref: '#/components/schemas/LocationSuggestionCollection' } /v1/markets: get: summary: List All Markets operationId: listMarkets tags: [Markets] responses: '200': description: All markets. content: application/json: schema: { $ref: '#/components/schemas/MarketCollection' } /v1/states: get: summary: List All States operationId: listStates tags: [States] responses: '200': description: All states. content: application/json: schema: { $ref: '#/components/schemas/StateCollection' } /v1/states/{state-slug}: get: summary: Get State By Slug operationId: getState tags: [States] parameters: - name: state-slug in: path required: true schema: { type: string } responses: '200': description: State representation. content: application/json: schema: { $ref: '#/components/schemas/State' } /v2/seating-layouts/{theatre-number}/{performance-number}: get: summary: Get Seating Layout For Performance operationId: getSeatingLayoutForPerformance tags: [Seating] parameters: - $ref: '#/components/parameters/TheatreNumber' - name: performance-number in: path required: true schema: { type: integer } responses: '200': description: Seating layout. content: application/json: schema: { $ref: '#/components/schemas/SeatingLayout' } /v2/media/{media-type}/{media-id}: get: summary: Get Media By Type and Id operationId: getMediaItem tags: [Media] parameters: - name: media-type in: path required: true schema: { type: string } - name: media-id in: path required: true schema: { type: string } responses: '200': description: Media representation. content: application/json: schema: { $ref: '#/components/schemas/MediaItem' } /v2/media/{resource-type}/{resource-id}/{media-type}: get: summary: List Media for a Resource operationId: listMediaForResource tags: [Media] parameters: - name: resource-type in: path required: true schema: { type: string, enum: [movies, theatres, attributes] } - name: resource-id in: path required: true schema: { type: string } - name: media-type in: path required: true schema: { type: string, enum: [images, videos] } responses: '200': description: Media collection. content: application/json: schema: { $ref: '#/components/schemas/MediaCollection' } /v2/media/images/content-types: get: summary: List Image Content Types operationId: listImageContentTypes tags: [Media] responses: '200': description: Available image content types. content: application/json: schema: { type: array, items: { type: string } } /v2/media/videos/content-types: get: summary: List Video Content Types operationId: listVideoContentTypes tags: [Media] responses: '200': description: Available video content types. content: application/json: schema: { type: array, items: { type: string } } /v2/images/sizes: get: summary: List Image Sizes operationId: listImageSizes tags: [Media] responses: '200': description: Available image sizes. content: application/json: schema: { type: array, items: { type: string } } /v3/orders: post: summary: Create Order operationId: createOrder tags: [Orders] requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/OrderCreate' } responses: '201': description: Order created. content: application/json: schema: { $ref: '#/components/schemas/Order' } /v3/orders/record: post: summary: Record Completed Order operationId: recordOrder tags: [Orders] requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/OrderRecord' } responses: '201': description: Order recorded. /v3/orders/{order-id}: parameters: - $ref: '#/components/parameters/OrderId' get: summary: Get Order By Id operationId: getOrder tags: [Orders] responses: '200': description: Order representation. content: application/json: schema: { $ref: '#/components/schemas/Order' } put: summary: Update Order Contact Info operationId: updateOrderContact tags: [Orders] requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/OrderContact' } responses: '200': description: Order updated. delete: summary: Delete Order By Id operationId: deleteOrder tags: [Orders] responses: '204': description: Order deleted. /v3/orders/token-{token}: get: summary: Get Order By Token operationId: getOrderByToken tags: [Orders] parameters: - name: token in: path required: true schema: { type: string } responses: '200': description: Order representation. content: application/json: schema: { $ref: '#/components/schemas/Order' } /v3/orders/{order-id}/email-{email}/: get: summary: Lookup Order By Id and Email operationId: getOrderByIdAndEmail tags: [Orders] parameters: - $ref: '#/components/parameters/OrderId' - name: email in: path required: true schema: { type: string, format: email } responses: '200': description: Order representation. content: application/json: schema: { $ref: '#/components/schemas/Order' } /v3/orders/{order-id}/products: parameters: - $ref: '#/components/parameters/OrderId' post: summary: Add Product To Order operationId: addOrderProduct tags: [Orders] requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/OrderProductAdd' } responses: '201': description: Product added. /v3/orders/{order-id}/products/{line-number}: parameters: - $ref: '#/components/parameters/OrderId' - name: line-number in: path required: true schema: { type: integer } put: summary: Update Product in Order operationId: updateOrderProduct tags: [Orders] requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/OrderProductUpdate' } responses: '200': description: Product updated. patch: summary: Patch Product Delivery Info description: Update delivery information for concessions and gift card products. operationId: patchOrderProduct tags: [Orders] requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/OrderProductPatch' } responses: '200': description: Product patched. delete: summary: Delete Product From Order operationId: deleteOrderProduct tags: [Orders] responses: '204': description: Product removed. /v3/orders/{order-id}/products/{line-number}/sms-ticket-confirmation/{phone-number}: post: summary: Send Ticket Confirmation SMS operationId: sendTicketConfirmationSms tags: [Orders] parameters: - $ref: '#/components/parameters/OrderId' - name: line-number in: path required: true schema: { type: integer } - name: phone-number in: path required: true schema: { type: string } responses: '202': description: SMS queued. /v3/orders/{order-id}/payments: post: summary: Add Payment To Order operationId: addOrderPayment tags: [Orders] parameters: - $ref: '#/components/parameters/OrderId' requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/Payment' } responses: '201': description: Payment added. /v3/orders/{order-id}/payments/{line-number}: delete: summary: Delete Payment From Order operationId: deleteOrderPayment tags: [Orders] parameters: - $ref: '#/components/parameters/OrderId' - name: line-number in: path required: true schema: { type: integer } responses: '204': description: Payment removed. /v3/orders/{order-id}/refresh-expiration: post: summary: Refresh Order Expiration operationId: refreshOrderExpiration tags: [Orders] parameters: - $ref: '#/components/parameters/OrderId' responses: '200': description: Expiration refreshed. /v3/orders/{order-id}/loyalty-rewards-application: parameters: - $ref: '#/components/parameters/OrderId' post: summary: Apply Loyalty Rewards To Order operationId: applyLoyaltyRewards tags: [Orders, Loyalty] responses: '200': description: Rewards applied. delete: summary: Remove Loyalty Rewards From Order operationId: removeLoyaltyRewards tags: [Orders, Loyalty] responses: '204': description: Rewards removed. /v3/orders/{order-id}/failed-payment-auths: post: summary: Record Failed Payment Authorization operationId: recordFailedPaymentAuth tags: [Orders] parameters: - $ref: '#/components/parameters/OrderId' requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/FailedPaymentAuth' } responses: '201': description: Failure recorded. /v3/amc-accounts/{account-id}/orders/: get: summary: List Orders For AMC Account operationId: listAccountOrders tags: [Orders] parameters: - $ref: '#/components/parameters/AccountId' - $ref: '#/components/parameters/PageNumber' - $ref: '#/components/parameters/PageSize' responses: '200': description: Orders for account. content: application/json: schema: { $ref: '#/components/schemas/OrderCollection' } /v1/theatres/{theatre-id}/concessions: get: summary: List Concessions For a Theatre operationId: listTheatreConcessions tags: [Concessions] parameters: - name: theatre-id in: path required: true schema: { type: integer } responses: '200': description: Concessions for theatre. content: application/json: schema: { $ref: '#/components/schemas/ConcessionCollection' } /v1/theatres/{theatre-id}/concessions/{concession-id}: get: summary: Get Concession By Theatre and Concession Id operationId: getConcession tags: [Concessions] parameters: - name: theatre-id in: path required: true schema: { type: integer } - name: concession-id in: path required: true schema: { type: integer } responses: '200': description: Concession representation. content: application/json: schema: { $ref: '#/components/schemas/Concession' } /v1/concessions/{theatre-product-assignment-id}: get: summary: Get Concession By Theatre Product Assignment Id operationId: getConcessionByAssignment tags: [Concessions] parameters: - name: theatre-product-assignment-id in: path required: true schema: { type: integer } responses: '200': description: Concession representation. content: application/json: schema: { $ref: '#/components/schemas/Concession' } /v1/theatres/{theatre-id}/concessions/categories: get: summary: List Concession Categories For a Theatre operationId: listConcessionCategories tags: [Concessions] parameters: - name: theatre-id in: path required: true schema: { type: integer } responses: '200': description: Categories list. content: application/json: schema: type: array items: { $ref: '#/components/schemas/ConcessionCategory' } /v1/theatres/{theatre-id}/concessions/delivery-locations/{year}/{month}/{day}: get: summary: List Concession Delivery Locations operationId: listConcessionDeliveryLocations tags: [Concessions] parameters: - name: theatre-id in: path required: true schema: { type: integer } - name: year in: path required: true schema: { type: integer } - name: month in: path required: true schema: { type: integer } - name: day in: path required: true schema: { type: integer } responses: '200': description: Delivery locations. /v1/theatres/{theatre-id}/concessions/pickup-times/{year}/{month}/{day}: get: summary: List Concession Pickup Times operationId: listConcessionPickupTimes tags: [Concessions] parameters: - name: theatre-id in: path required: true schema: { type: integer } - name: year in: path required: true schema: { type: integer } - name: month in: path required: true schema: { type: integer } - name: day in: path required: true schema: { type: integer } responses: '200': description: Pickup times. /v1/showtimes/{id}/concession-delivery-times: get: summary: List Concession Delivery Times For Showtime operationId: listShowtimeConcessionDeliveryTimes tags: [Concessions] parameters: - name: id in: path required: true schema: { type: integer } responses: '200': description: Delivery times for the showtime. /v1/showtimes/{showtime-id}/concession-pickup-times: get: summary: List Concession Pickup Times For Showtime operationId: listShowtimeConcessionPickupTimes tags: [Concessions] parameters: - name: showtime-id in: path required: true schema: { type: integer } responses: '200': description: Pickup times for the showtime. /v4/loyalty-accounts/{loyalty-account-id}: get: summary: Get Loyalty Account By Id operationId: getLoyaltyAccount tags: [Loyalty] parameters: - name: loyalty-account-id in: path required: true schema: { type: string } responses: '200': description: Loyalty account. content: application/json: schema: { $ref: '#/components/schemas/LoyaltyAccount' } /v4/loyalty-accounts/email-{email-address}: get: summary: Get Loyalty Account By Email operationId: getLoyaltyAccountByEmail tags: [Loyalty] parameters: - name: email-address in: path required: true schema: { type: string, format: email } responses: '200': description: Loyalty account. content: application/json: schema: { $ref: '#/components/schemas/LoyaltyAccount' } /v4/loyalty-accounts/email-{email-address}/{campaign}/registration: post: summary: Register For Loyalty Campaign By Email operationId: registerLoyaltyByEmail tags: [Loyalty] parameters: - name: email-address in: path required: true schema: { type: string, format: email } - name: campaign in: path required: true schema: { type: string } responses: '201': description: Registered. /v4/loyalty-accounts/card-{card-number}: get: summary: Get Loyalty Account By Card operationId: getLoyaltyAccountByCard tags: [Loyalty] parameters: - name: card-number in: path required: true schema: { type: string } responses: '200': description: Loyalty account. content: application/json: schema: { $ref: '#/components/schemas/LoyaltyAccount' } /v4/loyalty-accounts/card-{card-number}/{campaign}/registration: post: summary: Register For Loyalty Campaign By Card operationId: registerLoyaltyByCard tags: [Loyalty] parameters: - name: card-number in: path required: true schema: { type: string } - name: campaign in: path required: true schema: { type: string } responses: '201': description: Registered. /v4/loyalty-accounts/phone-{phone}: get: summary: Get Loyalty Account By Phone operationId: getLoyaltyAccountByPhone tags: [Loyalty] parameters: - name: phone in: path required: true schema: { type: string } responses: '200': description: Loyalty account. content: application/json: schema: { $ref: '#/components/schemas/LoyaltyAccount' } /v4/amc-accounts/{amc-account-id}/loyalty: delete: summary: Unlink Loyalty Account From AMC Account operationId: unlinkLoyaltyAccount tags: [Loyalty] parameters: - name: amc-account-id in: path required: true schema: { type: string } responses: '204': description: Unlinked. /v4/loyalty-cards/{card-number}: get: summary: Get Loyalty Card operationId: getLoyaltyCard tags: [Loyalty] parameters: - name: card-number in: path required: true schema: { type: string } responses: '200': description: Loyalty card. content: application/json: schema: { $ref: '#/components/schemas/LoyaltyCard' } /v4/loyalty-accounts/{loyalty-account-id}/redemptions: post: summary: Create Loyalty Points Redemption operationId: createLoyaltyRedemption tags: [Loyalty] parameters: - name: loyalty-account-id in: path required: true schema: { type: string } requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/RedemptionCreate' } responses: '201': description: Redemption created. /v4/amc-accounts/{account-id}/wallet/views/on-demand: get: summary: Get External Wallet description: Get a version of the external wallet for use by external billers. operationId: getExternalWallet tags: [Wallet] parameters: - $ref: '#/components/parameters/AccountId' responses: '200': description: Wallet representation. /v3/qr-codes/{encrypted-reference-id}: get: summary: Get Ticket QR Code description: Returns the referenceId as a QR Code for the given encrypted product/reference id combination. operationId: getTicketQrCode tags: [Barcodes] parameters: - name: encrypted-reference-id in: path required: true schema: { type: string } responses: '200': description: QR code image. content: image/png: schema: type: string format: binary /v3/code128/{encrypted-reference-id}: get: summary: Get Ticket Code 128 Barcode operationId: getTicketCode128Barcode tags: [Barcodes] parameters: - name: encrypted-reference-id in: path required: true schema: { type: string } responses: '200': description: Code 128 image. content: image/png: schema: type: string format: binary /v3/amc-accounts/{account-id}/loyalty/qr-code: get: summary: Get Loyalty Card QR Code operationId: getLoyaltyQrCode tags: [Barcodes, Loyalty] parameters: - $ref: '#/components/parameters/AccountId' responses: '200': description: QR code image. content: image/png: schema: type: string format: binary /v1/movies/{movie-id}/confirmation-check/{confirmation-code}: get: summary: Get Movie Confirmation Check description: Returns the number of tickets associated with a given confirmation code for a particular movie. operationId: getMovieConfirmationCheck tags: [MovieConfirmations] parameters: - name: movie-id in: path required: true schema: { type: integer } - name: confirmation-code in: path required: true schema: { type: string } responses: '200': description: Confirmation check. /v1/fee-waiver: post: summary: Get Fee Waiver For Order operationId: getFeeWaiver tags: [Refunds] requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/FeeWaiverRequest' } responses: '200': description: Fee waiver result. /v1/webhook-events: get: summary: List Available Webhook Events operationId: listWebhookEvents tags: [Webhooks] responses: '200': description: Available events. content: application/json: schema: type: array items: { $ref: '#/components/schemas/WebhookEvent' } /v1/webhooks: get: summary: List Subscribed Webhooks operationId: listWebhooks tags: [Webhooks] responses: '200': description: Subscriptions. content: application/json: schema: type: array items: { $ref: '#/components/schemas/WebhookSubscription' } post: summary: Subscribe To Webhook Event operationId: subscribeWebhook tags: [Webhooks] requestBody: required: true content: application/json: schema: { $ref: '#/components/schemas/WebhookSubscriptionCreate' } responses: '201': description: Subscribed. /v1/webhooks/{webhook-token-id}: delete: summary: Unsubscribe From Webhook operationId: unsubscribeWebhook tags: [Webhooks] parameters: - name: webhook-token-id in: path required: true schema: { type: string } responses: '204': description: Unsubscribed. /v1/webhooks/{webhook-token-id}/test: post: summary: Test Webhook Subscription operationId: testWebhook tags: [Webhooks] parameters: - name: webhook-token-id in: path required: true schema: { type: string } responses: '200': description: Test sent. components: securitySchemes: VendorKey: type: apiKey in: header name: X-AMC-Vendor-Key description: AMC vendor API key issued via the AMC Theatres developer portal. parameters: PageNumber: name: page-number in: query description: Page number to retrieve. Defaults to 1. schema: type: integer minimum: 1 default: 1 PageSize: name: page-size in: query description: Results per page (max 100). Defaults to 10. schema: type: integer minimum: 1 maximum: 100 default: 10 IncludeAttributes: name: include-attributes in: query description: Comma-delimited list of attributes that results must have. schema: { type: string } ExcludeAttributes: name: exclude-attributes in: query description: Comma-delimited list of attributes that results must not have. schema: { type: string } AttributeOperator: name: attribute-operator in: query description: Whether the include/exclude attribute filter is `and` (all) or `or` (any). schema: type: string enum: [and, or] TheatreNumber: name: theatre-number in: path required: true description: The theatre number / id. schema: { type: integer } OrderId: name: order-id in: path required: true schema: { type: string } AccountId: name: account-id in: path required: true schema: { type: string } responses: NotFound: description: Resource not found. content: application/json: schema: { $ref: '#/components/schemas/ApiError' } schemas: PagedCollection: type: object properties: pageSize: { type: integer } pageNumber: { type: integer } count: { type: integer } _links: { $ref: '#/components/schemas/HalLinks' } HalLinks: type: object additionalProperties: type: object properties: href: { type: string } templated: { type: boolean } ApiError: type: object properties: statusCode: { type: integer } message: { type: string } errorCode: { type: string } moreInfo: { type: string } Theatre: type: object description: An AMC Theatre representation. properties: id: { type: integer, description: The theatre id. } name: { type: string, description: The name of the theatre. } longName: { type: string, description: The long name of the theatre. } secondaryLongName: { type: string } showtimesPhoneNumber: { type: string } guestServicesPhoneNumber: { type: string } utcOffset: { type: string } timezone: { type: string } timezoneAbbreviation: { type: string } slug: { type: string } facebookUrl: { type: string, format: uri } outageDescription: { type: string } websiteUrl: { type: string, format: uri } directionsUrl: { type: string, format: uri } loyaltyVersion: { type: string } isClosed: { type: boolean } closures: type: array items: { type: object } lastBusinessDate: { type: string, format: date } attributes: type: array items: { $ref: '#/components/schemas/Attribute' } location: type: object properties: addressLine1: { type: string } addressLine2: { type: string } city: { type: string } postalCode: { type: string } state: { type: string } stateName: { type: string } country: { type: string } latitude: { type: number, format: double } longitude: { type: number, format: double } marketName: { type: string } marketId: { type: integer } media: type: object properties: theatreImageIcon: { type: string, format: uri } theatreImageStandard: { type: string, format: uri } theatreImageThumbnail: { type: string, format: uri } theatreImageLarge: { type: string, format: uri } heroDesktopDynamic: { type: string, format: uri } heroMobileDynamic: { type: string, format: uri } interiorDynamic: { type: string, format: uri } exteriorDynamic: { type: string, format: uri } promotionDynamic: { type: string, format: uri } redemptionMethods: type: array items: { type: string } westWorldMediaTheatreNumber: { type: integer } concessionsDeliveryOptions: type: array items: { type: string, enum: [DeliveryToSeat, ExpressPickup] } convenienceFeeTaxPercent: { type: number } convenienceFeeTaxFlatAmount: { type: number } brand: { type: string, description: 'AMC brand abbreviation (AMC, DIT, Classic, etc.).' } productSubscriptionUsageLevel: { type: string } onlineConcessions: { type: boolean } hasMultipleKitchens: { type: boolean } estimatedConcessionsOrderFees: type: object _links: { $ref: '#/components/schemas/HalLinks' } TheatreCollection: allOf: - $ref: '#/components/schemas/PagedCollection' - type: object properties: _embedded: type: object properties: theatres: type: array items: { $ref: '#/components/schemas/Theatre' } Movie: type: object properties: id: { type: integer } name: { type: string } sortableName: { type: string } slug: { type: string } synopsis: { type: string } synopsisTagLine: { type: string } productionCompany: { type: string } starringActors: { type: string } directors: { type: string } genre: { type: string } mpaaRating: { type: string } runTime: { type: integer } releaseDateUtc: { type: string, format: date-time } earliestShowingUtc: { type: string, format: date-time } hasScheduledShowtimes: { type: boolean } websiteUrl: { type: string, format: uri } showtimesUrl: { type: string, format: uri } media: type: object additionalProperties: type: string format: uri attributes: type: array items: { $ref: '#/components/schemas/Attribute' } _links: { $ref: '#/components/schemas/HalLinks' } MovieCollection: allOf: - $ref: '#/components/schemas/PagedCollection' - type: object properties: _embedded: type: object properties: movies: type: array items: { $ref: '#/components/schemas/Movie' } Showtime: type: object properties: id: { type: integer } movieId: { type: integer } movieName: { type: string } showDateTimeUtc: { type: string, format: date-time } showDateTimeLocal: { type: string, format: date-time } utcOffset: { type: string } theatreId: { type: integer } auditorium: { type: integer } layoutId: { type: integer } wamc: { type: string } sortableMovieName: { type: string } movieSlug: { type: string } runTime: { type: integer } mpaaRating: { type: string } genre: { type: string } purchaseUrl: { type: string, format: uri } mobilePurchaseUrl: { type: string, format: uri } ticketPrices: type: array items: { $ref: '#/components/schemas/TicketPrice' } utcSession: { type: string } isAlmostSoldOut: { type: boolean } isSoldOut: { type: boolean } isCanceled: { type: boolean } isPrivateRental: { type: boolean } isDiscountMatineePriced: { type: boolean } attributes: type: array items: { $ref: '#/components/schemas/Attribute' } media: type: object _links: { $ref: '#/components/schemas/HalLinks' } ShowtimeCollection: allOf: - $ref: '#/components/schemas/PagedCollection' - type: object properties: _embedded: type: object properties: showtimes: type: array items: { $ref: '#/components/schemas/Showtime' } TicketPrice: type: object properties: priceType: { type: string } sku: { type: string } price: { type: number, format: double } tax: { type: number, format: double } formattedPrice: { type: string } formattedTax: { type: string } Attribute: type: object properties: id: { type: integer } code: { type: string } name: { type: string } shortDescription: { type: string } longDescription: { type: string } url: { type: string, format: uri } sort: { type: integer } appliesToMovie: { type: boolean } appliesToShowtime: { type: boolean } appliesToTheatre: { type: boolean } media: type: object _links: { $ref: '#/components/schemas/HalLinks' } Location: type: object properties: id: { type: integer } name: { type: string } slug: { type: string } latitude: { type: number, format: double } longitude: { type: number, format: double } addressLine1: { type: string } city: { type: string } state: { type: string } postalCode: { type: string } LocationCollection: allOf: - $ref: '#/components/schemas/PagedCollection' - type: object properties: _embedded: type: object properties: locations: type: array items: { $ref: '#/components/schemas/Location' } LocationSuggestion: type: object properties: type: { type: string, enum: [Theatre, City, State, Postal, Market] } text: { type: string } url: { type: string, format: uri } LocationSuggestionCollection: type: object properties: suggestions: type: array items: { $ref: '#/components/schemas/LocationSuggestion' } Market: type: object properties: id: { type: integer } name: { type: string } slug: { type: string } MarketCollection: allOf: - $ref: '#/components/schemas/PagedCollection' - type: object properties: _embedded: type: object properties: markets: type: array items: { $ref: '#/components/schemas/Market' } State: type: object properties: name: { type: string } abbreviation: { type: string } slug: { type: string } StateCollection: type: object properties: states: type: array items: { $ref: '#/components/schemas/State' } SeatingLayout: type: object properties: layoutId: { type: integer } name: { type: string } rows: type: array items: type: object properties: name: { type: string } seats: type: array items: { $ref: '#/components/schemas/Seat' } SeatingLayoutCollection: allOf: - $ref: '#/components/schemas/PagedCollection' - type: object properties: _embedded: type: object properties: seatingLayouts: type: array items: { $ref: '#/components/schemas/SeatingLayout' } Seat: type: object properties: seatId: { type: string } seatType: { type: string, enum: [Standard, Wheelchair, Companion, Recliner, Premium, LoveSeat, Couple] } isAvailable: { type: boolean } row: { type: string } column: { type: integer } MediaItem: type: object properties: id: { type: string } url: { type: string, format: uri } contentType: { type: string } width: { type: integer } height: { type: integer } MediaCollection: type: object properties: items: type: array items: { $ref: '#/components/schemas/MediaItem' } Order: type: object properties: orderId: { type: string } token: { type: string } amcAccountId: { type: string } status: { type: string } createdUtc: { type: string, format: date-time } expirationUtc: { type: string, format: date-time } totalAmount: { type: number, format: double } totalTax: { type: number, format: double } totalConvenienceFees: { type: number, format: double } contact: { $ref: '#/components/schemas/OrderContact' } products: type: array items: { $ref: '#/components/schemas/OrderProduct' } payments: type: array items: { $ref: '#/components/schemas/Payment' } _links: { $ref: '#/components/schemas/HalLinks' } OrderCollection: allOf: - $ref: '#/components/schemas/PagedCollection' - type: object properties: _embedded: type: object properties: orders: type: array items: { $ref: '#/components/schemas/Order' } OrderCreate: type: object required: [theatreId] properties: theatreId: { type: integer } contact: { $ref: '#/components/schemas/OrderContact' } amcAccountId: { type: string } OrderRecord: type: object properties: orderId: { type: string } externalOrderId: { type: string } OrderContact: type: object properties: firstName: { type: string } lastName: { type: string } email: { type: string, format: email } phone: { type: string } zipCode: { type: string } OrderProduct: type: object properties: lineNumber: { type: integer } sku: { type: string } productType: { type: string, enum: [Ticket, Concession, GiftCard, Other] } quantity: { type: integer } unitPrice: { type: number, format: double } totalPrice: { type: number, format: double } showtimeId: { type: integer } seatIds: type: array items: { type: string } deliveryLocationId: { type: integer } pickupTime: { type: string, format: date-time } deliveryTime: { type: string, format: date-time } OrderProductAdd: type: object required: [sku, quantity] properties: sku: { type: string } quantity: { type: integer } showtimeId: { type: integer } seatIds: type: array items: { type: string } OrderProductUpdate: allOf: - $ref: '#/components/schemas/OrderProductAdd' OrderProductPatch: type: object properties: deliveryLocationId: { type: integer } pickupTime: { type: string, format: date-time } deliveryTime: { type: string, format: date-time } Payment: type: object properties: lineNumber: { type: integer } type: { type: string, enum: [CreditCard, GiftCard, AppleyPay, GooglePay, Loyalty] } amount: { type: number, format: double } creditCard: type: object properties: tokenizedNumber: { type: string } expiration: { type: string } cardType: { type: string } zipCode: { type: string } FailedPaymentAuth: type: object properties: gateway: { type: string } responseCode: { type: string } message: { type: string } Concession: type: object properties: id: { type: integer } theatreProductAssignmentId: { type: integer } sku: { type: string } name: { type: string } description: { type: string } price: { type: number, format: double } categoryId: { type: integer } category: { type: string } isAvailable: { type: boolean } deliveryOptions: type: array items: { type: string, enum: [DeliveryToSeat, ExpressPickup] } ConcessionCollection: allOf: - $ref: '#/components/schemas/PagedCollection' - type: object properties: _embedded: type: object properties: concessions: type: array items: { $ref: '#/components/schemas/Concession' } ConcessionCategory: type: object properties: id: { type: integer } name: { type: string } sort: { type: integer } LoyaltyAccount: type: object properties: id: { type: string } amcAccountId: { type: string } cardNumber: { type: string } email: { type: string, format: email } firstName: { type: string } lastName: { type: string } loyaltyTier: { type: string, enum: [Insider, Premiere, A-List] } pointsBalance: { type: integer } rewards: type: array items: { type: object } registrations: type: array items: { type: object } LoyaltyCard: type: object properties: cardNumber: { type: string } accountId: { type: string } loyaltyTier: { type: string } memberSince: { type: string, format: date } RedemptionCreate: type: object required: [points] properties: points: { type: integer } rewardSku: { type: string } orderId: { type: string } FeeWaiverRequest: type: object properties: orderId: { type: string } reason: { type: string } WebhookEvent: type: object properties: name: { type: string } description: { type: string } WebhookSubscription: type: object properties: webhookTokenId: { type: string } eventName: { type: string } url: { type: string, format: uri } active: { type: boolean } WebhookSubscriptionCreate: type: object required: [eventName, url] properties: eventName: { type: string } url: { type: string, format: uri } security: - VendorKey: []