{"openapi":"3.1.0","info":{"title":"Laravel","version":"0.0.1"},"servers":[{"url":"http://127.0.0.1:8000/api"}],"paths":{"/v1/register":{"post":{"operationId":"auth.register","tags":["Auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"User registered successfully"},"access_token":{"type":"string"},"token_type":{"type":"string","const":"bearer"},"expires_in":{"type":"string"},"user":{"$ref":"#/components/schemas/User"},"status":{"type":"integer","const":1}},"required":["message","access_token","token_type","expires_in","user","status"]}}}},"422":{"$ref":"#/components/responses/ValidationException"}}}},"/v1/login":{"post":{"operationId":"auth.login","tags":["Auth"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"access_token":{"type":"string"},"token_type":{"type":"string","const":"bearer"},"expires_in":{"type":"string"}},"required":["access_token","token_type","expires_in"]}}}},"401":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Invalid credentials"},"status":{"type":"integer"}},"required":["message","status"]}}}},"422":{"$ref":"#/components/responses/ValidationException"}}}},"/v1/logout":{"post":{"operationId":"auth.logout","tags":["Auth"],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Logged out successfully"},"status":{"type":"integer","const":1}},"required":["message","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"}}}},"/v1/refresh":{"post":{"operationId":"auth.refresh","tags":["Auth"],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"access_token":{"type":"string"},"token_type":{"type":"string","const":"bearer"},"expires_in":{"type":"string"}},"required":["access_token","token_type","expires_in"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"}}}},"/v1/me":{"get":{"operationId":"auth.me","tags":["Auth"],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":"string"},"status":{"type":"integer","const":1}},"required":["user","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"}}}},"/v1/categories":{"get":{"operationId":"category.index","summary":"Display a listing of the resource","tags":["Category"],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"categories fetched successfully"},"status":{"type":"integer","const":1},"data":{"type":"array","items":{"$ref":"#/components/schemas/CategoryResource"}}},"required":["message","status","data"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"}}},"post":{"operationId":"categories.store","summary":"Store a newly created resource in storage","tags":["Category"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":255},"description":{"type":"string"}},"required":["name","description"]}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"category created successfully"},"status":{"type":"integer","const":1},"data":{"$ref":"#/components/schemas/Category"}},"required":["message","status","data"]}}}},"400":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"validation error"},"status":{"type":"integer"},"data":{"type":"string"}},"required":["message","status","data"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"422":{"$ref":"#/components/responses/ValidationException"}}}},"/v1/categories/{id}":{"get":{"operationId":"category.show_0","summary":"Display the specified resource","tags":["Category"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"category fetched successfully"},"status":{"type":"integer","const":1},"data":{"$ref":"#/components/schemas/CategoryResource"}},"required":["message","status","data"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"category doesn't exist"},"status":{"type":"integer"}},"required":["message","status"]}}}}}},"put":{"operationId":"categories.update","summary":"Update the specified resource in storage","tags":["Category"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":255},"description":{"type":"string","maxLength":500}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"category updated successfully"},"status":{"type":"integer","const":1},"data":{"$ref":"#/components/schemas/CategoryResource"}},"required":["message","status","data"]}}}},"400":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"validation error"},"status":{"type":"integer"},"data":{"type":"string"}},"required":["message","status","data"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"category doesn't exist"},"status":{"type":"integer"}},"required":["message","status"]}}}},"422":{"$ref":"#/components/responses/ValidationException"}}},"delete":{"operationId":"categories.destroy","summary":"Remove the specified resource from storage","tags":["Category"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"category deleted successfully"},"status":{"type":"integer","const":1},"data":{"type":"string"}},"required":["message","status","data"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"category doesn't exists"},"status":{"type":"integer"}},"required":["message","status"]}}}}}}},"/v1/categories/{id}/movies":{"get":{"operationId":"category.movies","tags":["Category"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"movies fetched successfully"},"status":{"type":"integer","const":1},"data":{"type":"array","items":{"$ref":"#/components/schemas/MovieResource"}}},"required":["message","status","data"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"category doesn't exist"},"status":{"type":"integer"}},"required":["message","status"]}}}}}}},"/v1/movies/{id}/categories/{category}":{"get":{"operationId":"category.show_0","summary":"Display the specified resource","tags":["Category"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"category","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"category fetched successfully"},"status":{"type":"integer","const":1},"data":{"$ref":"#/components/schemas/CategoryResource"}},"required":["message","status","data"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"category doesn't exist"},"status":{"type":"integer"}},"required":["message","status"]}}}}}}},"/v1/cinemas":{"get":{"operationId":"cinema.index","summary":"Display a listing of the resource","tags":["Cinema"],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"cinemas fetched successfully"},"status":{"type":"integer","const":1},"data":{"type":"array","items":{"$ref":"#/components/schemas/CinemaResource"}}},"required":["message","status","data"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"}}},"post":{"operationId":"cinemas.store","summary":"Store a newly created resource in storage","tags":["Cinema"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCinemaRequest"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Cinema created"},"status":{"type":"integer","const":1},"data":{"$ref":"#/components/schemas/Cinema"}},"required":["message","status","data"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"422":{"$ref":"#/components/responses/ValidationException"}}}},"/v1/cinemas/{id}":{"get":{"operationId":"cinema.show","summary":"Display the specified resource","tags":["Cinema"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"cineam fetched successfully"},"status":{"type":"integer","const":1},"data":{"type":"string"}},"required":["message","status","data"]}}}},"400":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"cinema doesn't exist"},"status":{"type":"integer"}},"required":["message","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"}}},"put":{"operationId":"cinemas.update","summary":"Update the specified resource in storage","tags":["Cinema"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCinemaRequest"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"cineam updated successfully"},"status":{"type":"integer","const":1},"data":{"type":"string"}},"required":["message","status","data"]}}}},"400":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"cinema doesn't exist"},"status":{"type":"integer"}},"required":["message","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"422":{"$ref":"#/components/responses/ValidationException"}}},"delete":{"operationId":"cinemas.destroy","summary":"Remove the specified resource from storage","tags":["Cinema"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"cinema deleted successfully"},"status":{"type":"integer","const":1},"data":{"type":"string"}},"required":["message","status","data"]}}}},"400":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"cinema doesn't exist"},"status":{"type":"integer"}},"required":["message","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"}}}},"/v1/cinemas/{cinema}/halls":{"get":{"operationId":"hall.index","summary":"Display a listing of the resource","tags":["Hall"],"parameters":[{"name":"cinema","in":"path","required":true,"description":"The cinema ID","schema":{"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"halls fetched successfully"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Hall"}},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"$ref":"#/components/responses/ModelNotFoundException"}}},"post":{"operationId":"cinemas.halls.store","summary":"Store a newly created resource in storage","tags":["Hall"],"parameters":[{"name":"cinema","in":"path","required":true,"description":"The cinema ID","schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateHallRequest"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Hall created successfully"},"data":{"$ref":"#/components/schemas/Hall"},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"$ref":"#/components/responses/ModelNotFoundException"},"422":{"$ref":"#/components/responses/ValidationException"}}}},"/v1/cinemas/{cinema}/halls/{hall}":{"get":{"operationId":"hall.show","summary":"Display the specified resource","tags":["Hall"],"parameters":[{"name":"cinema","in":"path","required":true,"description":"The cinema ID","schema":{"type":"integer"}},{"name":"hall","in":"path","required":true,"description":"The hall ID","schema":{"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Hall fetched successfully"},"data":{"$ref":"#/components/schemas/Hall"},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"$ref":"#/components/responses/ModelNotFoundException"}}}},"/v1/halls/{hall}":{"put":{"operationId":"halls.update","summary":"Update the specified resource in storage","tags":["Hall"],"parameters":[{"name":"hall","in":"path","required":true,"description":"The hall ID","schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"number":{"type":"integer","minimum":1},"name":{"type":"string","maxLength":255},"is_vip":{"type":"boolean"}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Hall updated successfully"},"data":{"$ref":"#/components/schemas/Hall"},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"$ref":"#/components/responses/ModelNotFoundException"},"422":{"$ref":"#/components/responses/ValidationException"}}},"delete":{"operationId":"halls.destroy","summary":"Remove the specified resource from storage","tags":["Hall"],"parameters":[{"name":"hall","in":"path","required":true,"description":"The hall ID","schema":{"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Hall deleted successfully"},"data":{"$ref":"#/components/schemas/Hall"},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"$ref":"#/components/responses/ModelNotFoundException"}}}},"/v1/locations":{"get":{"operationId":"locations.index","summary":"Display a listing of the resource","tags":["Location"],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Locations fetched successfully"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Location"}},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"}}},"post":{"operationId":"locations.store","summary":"Store a newly created resource in storage","tags":["Location"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"street":{"type":"string","maxLength":255},"city":{"type":"string","maxLength":255},"state":{"type":"string","maxLength":255}},"required":["street","city","state"]}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Location created successfully"},"data":{"$ref":"#/components/schemas/Location"},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"422":{"$ref":"#/components/responses/ValidationException"}}}},"/v1/locations/{location}":{"get":{"operationId":"locations.show","summary":"Display the specified resource","tags":["Location"],"parameters":[{"name":"location","in":"path","required":true,"description":"The location ID","schema":{"type":"integer"}}],"responses":{"200":{"description":"get one location","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Location fetched successfully"},"data":{"$ref":"#/components/schemas/Location"},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"$ref":"#/components/responses/ModelNotFoundException"}}},"delete":{"operationId":"locations.destroy","summary":"Remove the specified resource from storage","tags":["Location"],"parameters":[{"name":"location","in":"path","required":true,"description":"The location ID","schema":{"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Location deleted successfully"},"data":{"$ref":"#/components/schemas/Location"},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"$ref":"#/components/responses/ModelNotFoundException"}}}},"/v1/locations/{id}":{"put":{"operationId":"locations.update","summary":"Update the specified resource in storage","tags":["Location"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"street":{"type":"string","maxLength":255},"city":{"type":"string","maxLength":255},"state":{"type":"string","maxLength":255}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Location updated successfully"},"data":{"type":"string"},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Location not found"},"status":{"type":"integer"}},"required":["message","status"]}}}},"422":{"$ref":"#/components/responses/ValidationException"}}}},"/v1/movies":{"get":{"operationId":"movie.index","summary":"Display a listing of the resource","tags":["Movie"],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Movies fetched successfully"},"data":{"type":"array","items":{"$ref":"#/components/schemas/MovieResource"}},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"}}},"post":{"operationId":"movies.store","summary":"Store a newly created resource in storage","tags":["Movie"],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"title":{"type":"string","maxLength":255},"description":{"type":"string"},"poster_image":{"type":"string","format":"binary","contentMediaType":"application/octet-stream","maxLength":2048}},"required":["title","description","poster_image"]}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Movie created successfully"},"data":{"$ref":"#/components/schemas/Movie"},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"422":{"$ref":"#/components/responses/ValidationException"}}}},"/v1/movies/{id}":{"get":{"operationId":"movie.show_0","summary":"Display the specified resource","tags":["Movie"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Movie fetched successfully"},"data":{"$ref":"#/components/schemas/MovieResource"},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Movie not found"},"status":{"type":"integer"}},"required":["message","status"]}}}}}},"put":{"operationId":"movies.update","summary":"Update the specified resource in storage","tags":["Movie"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"title":{"type":"string","maxLength":255},"description":{"type":"string"},"poster_image":{"type":"string","format":"binary","contentMediaType":"application/octet-stream","maxLength":2048}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Movie updated successfully"},"data":{"type":"string"},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"400":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"No data provided for update"},"status":{"type":"integer"}},"required":["message","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Movie not found"},"status":{"type":"integer"}},"required":["message","status"]}}}},"422":{"$ref":"#/components/responses/ValidationException"}}},"delete":{"operationId":"movies.destroy","summary":"Remove the specified resource from storage","tags":["Movie"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Movie deleted successfully"},"data":{"type":"string"},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Movie not found"},"status":{"type":"integer"}},"required":["message","status"]}}}}}}},"/v1/movies/{id}/categories":{"get":{"operationId":"movie.categories","tags":["Movie"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"categories fetched successfully"},"status":{"type":"integer","const":1},"data":{"type":"array","items":{"$ref":"#/components/schemas/CategoryResource"}}},"required":["message","status","data"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"movie doesn't exist"},"status":{"type":"integer"}},"required":["message","status"]}}}}}},"post":{"operationId":"movie.addCategory","tags":["Movie"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"category_id":{"type":"integer"}},"required":["category_id"]}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Category added to movie successfully"},"status":{"type":"integer","const":1}},"required":["message","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Movie not found"},"status":{"type":"integer"}},"required":["message","status"]}}}},"422":{"$ref":"#/components/responses/ValidationException"}}}},"/v1/categories/{id}/movies/{movie}":{"get":{"operationId":"movie.show_0","summary":"Display the specified resource","tags":["Movie"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"movie","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Movie fetched successfully"},"data":{"$ref":"#/components/schemas/MovieResource"},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Movie not found"},"status":{"type":"integer"}},"required":["message","status"]}}}}}}},"/v1/movies/{movie}/categories/{category}":{"delete":{"operationId":"movie.removeCategory","tags":["Movie"],"parameters":[{"name":"movie","in":"path","required":true,"description":"The movie ID","schema":{"type":"integer"}},{"name":"category","in":"path","required":true,"description":"The category ID","schema":{"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Category removed successfully"},"status":{"type":"integer","const":1}},"required":["message","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"$ref":"#/components/responses/ModelNotFoundException"}}}},"/v1/reservations":{"get":{"operationId":"reservations.index","tags":["Reservation"],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Reservations fetched"},"data":{"type":"string"},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"}}},"post":{"operationId":"reservations.store","tags":["Reservation"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreReservationRequest"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Reservation created. Pay within 15 minutes."},"data":{"type":"object"},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"409":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"One or more seats are already booked"},"status":{"type":"integer"}},"required":["message","status"]}}}},"422":{"$ref":"#/components/responses/ValidationException"}}}},"/v1/reservations/{reservation}":{"get":{"operationId":"reservations.show","tags":["Reservation"],"parameters":[{"name":"reservation","in":"path","required":true,"description":"The reservation ID","schema":{"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Reservation fetched"},"data":{"type":"object"},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"403":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Unauthorized"},"status":{"type":"integer"}},"required":["message","status"]}}}},"404":{"$ref":"#/components/responses/ModelNotFoundException"}}}},"/v1/reservations/{reservation}/confirm":{"post":{"operationId":"reservation.confirm","tags":["Reservation"],"parameters":[{"name":"reservation","in":"path","required":true,"description":"The reservation ID","schema":{"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Reservation confirmed"},"data":{"type":"object"},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"400":{"description":"","content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"message":{"type":"string","const":"Reservation expired"},"status":{"type":"integer"}},"required":["message","status"]},{"type":"object","properties":{"message":{"type":"string","const":"Reservation is not pending"},"status":{"type":"integer"}},"required":["message","status"]}]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"403":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Unauthorized"},"status":{"type":"integer"}},"required":["message","status"]}}}},"404":{"$ref":"#/components/responses/ModelNotFoundException"}}}},"/v1/reservations/{reservation}/cancel":{"post":{"operationId":"reservation.cancel","tags":["Reservation"],"parameters":[{"name":"reservation","in":"path","required":true,"description":"The reservation ID","schema":{"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Reservation cancelled"},"status":{"type":"integer","const":1}},"required":["message","status"]}}}},"400":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Cannot cancel this reservation"},"status":{"type":"integer"}},"required":["message","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"403":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Unauthorized"},"status":{"type":"integer"}},"required":["message","status"]}}}},"404":{"$ref":"#/components/responses/ModelNotFoundException"}}}},"/v1/halls/{hall}/seats":{"get":{"operationId":"seat.index","tags":["Seat"],"parameters":[{"name":"hall","in":"path","required":true,"description":"The hall ID","schema":{"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Seats fetched successfully"},"data":{"type":"array","items":{"$ref":"#/components/schemas/SeatResource"}},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"$ref":"#/components/responses/ModelNotFoundException"}}},"post":{"operationId":"halls.seats.store","tags":["Seat"],"parameters":[{"name":"hall","in":"path","required":true,"description":"The hall ID","schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSeatRequest"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Seat created successfully"},"data":{"$ref":"#/components/schemas/Seat"},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"$ref":"#/components/responses/ModelNotFoundException"},"422":{"$ref":"#/components/responses/ValidationException"}}}},"/v1/seats/{seat}":{"get":{"operationId":"seat.show","tags":["Seat"],"parameters":[{"name":"seat","in":"path","required":true,"description":"The seat ID","schema":{"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Seat fetched successfully"},"data":{"$ref":"#/components/schemas/Seat"},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"$ref":"#/components/responses/ModelNotFoundException"}}},"put":{"operationId":"seats.update","tags":["Seat"],"parameters":[{"name":"seat","in":"path","required":true,"description":"The seat ID","schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSeatRequest"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Seat updated successfully"},"data":{"$ref":"#/components/schemas/Seat"},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"$ref":"#/components/responses/ModelNotFoundException"},"422":{"$ref":"#/components/responses/ValidationException"}}},"delete":{"operationId":"seats.destroy","tags":["Seat"],"parameters":[{"name":"seat","in":"path","required":true,"description":"The seat ID","schema":{"type":"integer"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Seat deleted successfully"},"data":{"$ref":"#/components/schemas/Seat"},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"$ref":"#/components/responses/ModelNotFoundException"}}}},"/v1/halls/{hall}/seats/bulk":{"post":{"operationId":"seat.bulkStore","tags":["Seat"],"parameters":[{"name":"hall","in":"path","required":true,"description":"The hall ID","schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBulkSeatsRequest"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Seats created successfully"},"status":{"type":"integer","const":1}},"required":["message","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"$ref":"#/components/responses/ModelNotFoundException"},"422":{"$ref":"#/components/responses/ValidationException"}}}},"/v1/showtimes":{"get":{"operationId":"showtime.index","summary":"Display a listing of the resource","tags":["Showtime"],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Showtimes retrieved successfully"},"status":{"type":"integer","const":1},"data":{"type":"array","items":{"$ref":"#/components/schemas/ShowtimeResource"}}},"required":["message","status","data"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"}}},"post":{"operationId":"showtimes.store","summary":"Store a newly created resource in storage","tags":["Showtime"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"movie_id":{"type":"integer"},"hall_id":{"type":"integer"},"start_time":{"type":"string","format":"date-time"},"end_time":{"type":"string","format":"date-time"},"price":{"type":"number","minimum":0},"language":{"type":"string","enum":["original","dubbed","subbed"]},"status":{"type":"string","enum":["completed","cancelled","scheduled"]}},"required":["movie_id","hall_id","start_time","end_time","price","language","status"]}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Showtime created successfully"},"status":{"type":"integer","const":1},"data":{"$ref":"#/components/schemas/Showtime"}},"required":["message","status","data"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"422":{"$ref":"#/components/responses/ValidationException"}}}},"/v1/showtimes/{id}":{"get":{"operationId":"showtime.show","summary":"Display the specified resource","tags":["Showtime"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Showtime retrieved successfully"},"status":{"type":"integer","const":1},"data":{"$ref":"#/components/schemas/ShowtimeResource"}},"required":["message","status","data"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Showtime not found"},"status":{"type":"integer"}},"required":["message","status"]}}}}}},"put":{"operationId":"showtimes.update","summary":"Update the specified resource in storage","tags":["Showtime"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"movie_id":{"type":"integer"},"hall_id":{"type":"integer"},"start_time":{"type":"string","format":"date-time"},"end_time":{"type":"string","format":"date-time"},"price":{"type":"number","minimum":0},"language":{"type":"string","enum":["original","dubbed","subbed"]},"status":{"type":"string","enum":["completed","cancelled","scheduled"]}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Showtime updated successfully"},"status":{"type":"integer","const":1},"data":{"type":"string"}},"required":["message","status","data"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Showtime not found"},"status":{"type":"integer"}},"required":["message","status"]}}}},"422":{"$ref":"#/components/responses/ValidationException"}}},"delete":{"operationId":"showtimes.destroy","summary":"Remove the specified resource from storage","tags":["Showtime"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Showtime deleted successfully"},"data":{"type":"string"},"status":{"type":"integer","const":1}},"required":["message","data","status"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Showtime not found"},"status":{"type":"integer"}},"required":["message","status"]}}}}}}},"/v1/users":{"get":{"operationId":"user.index","summary":"Display a listing of the resource","tags":["User"],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"401":{"$ref":"#/components/responses/AuthenticationException"}}}},"/v1/users/{id}":{"get":{"operationId":"user.show","summary":"Display the specified resource","tags":["User"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"User found"},"status":{"type":"integer","const":200},"data":{"type":"string"}},"required":["message","status","data"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"User not found"},"status":{"type":"integer","const":404}},"required":["message","status"]}}}}}},"put":{"operationId":"users.update","summary":"Update the specified resource in storage","tags":["User"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string","maxLength":255},"email":{"type":"string","format":"email","maxLength":255},"password":{"type":"string","minLength":8}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"user updated successfully"},"status":{"type":"integer","const":1},"data":{"type":"string"}},"required":["message","status","data"]}}}},"400":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"validation failed"},"status":{"type":"integer"},"errors":{"type":"string"}},"required":["message","status","errors"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"user not found"},"status":{"type":"integer"},"data":{"type":"null"}},"required":["message","status","data"]}}}},"422":{"$ref":"#/components/responses/ValidationException"}}},"delete":{"operationId":"users.destroy","summary":"Remove the specified resource from storage","tags":["User"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"user deleted successfully"},"status":{"type":"integer","const":1},"data":{"type":"string"}},"required":["message","status","data"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"404":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"user doesn't exists"},"status":{"type":"integer"}},"required":["message","status"]}}}}}}}},"components":{"schemas":{"Category":{"type":"object","properties":{"id":{"type":"integer"},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"},"name":{"type":"string"},"description":{"type":"string"}},"required":["id","created_at","updated_at","name","description"],"title":"Category"},"CategoryResource":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"}},"required":["id","name","description"],"title":"CategoryResource"},"Cinema":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"rating":{"type":"integer"}},"required":["id","name","rating"],"title":"Cinema"},"CinemaResource":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"location":{"type":"object","properties":{"street":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"}},"required":["street","city","state"]}},"required":["id","name","location"],"title":"CinemaResource"},"CreateBulkSeatsRequest":{"type":"object","properties":{"seats":{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer","minimum":1},"number":{"type":"integer","minimum":1},"is_vip":{"type":"boolean"}},"required":["row","number"]},"minItems":1}},"required":["seats"],"title":"CreateBulkSeatsRequest"},"CreateCinemaRequest":{"type":"object","properties":{"name":{"type":"string","description":"cinema","maxLength":255},"rating":{"type":"integer","minimum":1,"maximum":5},"location_id":{"type":"integer"}},"required":["name","rating","location_id"],"title":"CreateCinemaRequest"},"CreateHallRequest":{"type":"object","properties":{"number":{"type":"integer","minimum":1},"name":{"type":"string","maxLength":255},"is_vip":{"type":"boolean"}},"required":["number","name","is_vip"],"title":"CreateHallRequest"},"CreateSeatRequest":{"type":"object","properties":{"row":{"type":"integer","minimum":1},"number":{"type":"integer","minimum":1},"is_vip":{"type":"boolean"}},"required":["row","number","is_vip"],"title":"CreateSeatRequest"},"Hall":{"type":"object","properties":{"id":{"type":"integer"},"number":{"type":"integer"},"name":{"type":"string"},"is_vip":{"type":"string"}},"required":["id","number","name","is_vip"],"title":"Hall"},"Location":{"type":"object","properties":{"id":{"type":"integer"},"street":{"type":"string"},"city":{"type":"string"},"state":{"type":"string"}},"required":["id","street","city","state"],"title":"Location"},"LoginRequest":{"type":"object","properties":{"email":{"type":"string","format":"email"},"password":{"type":"string"}},"required":["email","password"],"title":"LoginRequest"},"Movie":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"description":{"type":"string"},"poster_image":{"type":["string","null"]}},"required":["id","title","description","poster_image"],"title":"Movie"},"MovieResource":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"description":{"type":"string"},"poster_image":{"type":["string","null"]},"categories":{"type":"array","items":{}},"showtimes":{"type":"array","items":{"type":"object","properties":{"start_time":{"type":"string"},"end_time":{"type":"string"},"price":{"type":"string"},"language":{"type":"string"},"status":{"type":"string"},"hall":{"type":"string"},"cinema":{"type":"string"}},"required":["start_time","end_time","price","language","status","hall","cinema"]}}},"required":["id","title","description","poster_image"],"title":"MovieResource"},"RegisterRequest":{"type":"object","properties":{"username":{"type":"string","maxLength":255},"email":{"type":"string","format":"email"},"password":{"type":"string","minLength":8},"password_confirmation":{"type":"string","minLength":8}},"required":["username","email","password","password_confirmation"],"title":"RegisterRequest"},"Seat":{"type":"object","properties":{"id":{"type":"integer"},"row":{"type":"integer"},"number":{"type":"integer"},"is_vip":{"type":"string"}},"required":["id","row","number","is_vip"],"title":"Seat"},"SeatResource":{"type":"object","properties":{"row":{"type":"integer"},"number":{"type":"integer"},"is_vip":{"type":"string"}},"required":["row","number","is_vip"],"title":"SeatResource"},"Showtime":{"type":"object","properties":{"id":{"type":"integer"},"movie_id":{"type":"integer"},"hall_id":{"type":"integer"},"start_time":{"type":"string"},"end_time":{"type":"string"},"price":{"type":"string"},"language":{"type":"string"},"status":{"type":"string"}},"required":["id","movie_id","hall_id","start_time","end_time","price","language","status"],"title":"Showtime"},"ShowtimeResource":{"type":"object","properties":{"id":{"type":"integer"},"movie":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"]},"hall":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"cinema":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"]}},"required":["id","name"]},"start_time":{"type":"string"},"end_time":{"type":"string"}},"required":["id","start_time","end_time"],"title":"ShowtimeResource"},"StoreReservationRequest":{"type":"object","properties":{"showtime_id":{"type":"integer"},"seat_ids":{"type":"array","items":{"type":"integer"},"minItems":1}},"required":["showtime_id","seat_ids"],"title":"StoreReservationRequest"},"UpdateCinemaRequest":{"type":"object","properties":{"name":{"type":"string"},"rating":{"type":"integer"}},"title":"UpdateCinemaRequest"},"UpdateSeatRequest":{"type":"object","properties":{"row":{"type":"integer","minimum":1},"number":{"type":"integer","minimum":1},"is_vip":{"type":"boolean"}},"title":"UpdateSeatRequest"},"User":{"type":"object","properties":{"id":{"type":"integer"},"username":{"type":"string"},"email":{"type":"string"},"email_verified_at":{"type":["string","null"],"format":"date-time"},"profile_picture":{"type":["string","null"]},"created_at":{"type":["string","null"],"format":"date-time"},"updated_at":{"type":["string","null"],"format":"date-time"}},"required":["id","username","email","email_verified_at","profile_picture","created_at","updated_at"],"title":"User"}},"responses":{"ValidationException":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Errors overview."},"errors":{"type":"object","description":"A detailed description of each field that failed validation.","additionalProperties":{"type":"array","items":{"type":"string"}}}},"required":["message","errors"]}}}},"AuthenticationException":{"description":"Unauthenticated","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview."}},"required":["message"]}}}},"ModelNotFoundException":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview."}},"required":["message"]}}}}}}}