{"openapi":"3.1.0","info":{"version":"1.2.1","title":"MoviePedia API","description":"MoviePedia REST API is a web service that provides access to a vast collection of movie data. It allows users to search for movies, retrieve movie details, and perform various operations related to movies."},"components":{"schemas":{},"parameters":{}},"paths":{"/api/db/seed":{"post":{"description":"Seed the database with sample data","tags":["Database"],"responses":{"200":{"description":"Database seeded"}}}},"/api/movies":{"get":{"description":"Get all movies","tags":["Movies"],"parameters":[{"schema":{"type":"string"},"required":false,"name":"title","in":"query"},{"schema":{"type":"integer","minimum":1900,"maximum":2100},"required":false,"name":"year","in":"query"},{"schema":{"type":"string","enum":["movie","series"]},"required":false,"name":"type","in":"query"},{"schema":{"type":"string","enum":["title","year","createdAt","updatedAt"]},"required":false,"name":"sortBy","in":"query"},{"schema":{"type":"string","enum":["asc","desc"]},"required":false,"name":"sortOrder","in":"query"}],"responses":{"200":{"description":"List of movies"}}},"post":{"description":"Create a new movie","tags":["Movies"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1},"year":{"type":"integer","minimum":1900,"maximum":2100},"genres":{"type":"array","items":{"type":"integer","minimum":1}},"directors":{"type":"array","items":{"type":"integer","minimum":1}},"writers":{"type":"array","items":{"type":"integer","minimum":1}},"posterUrl":{"type":"string","format":"uri"},"type":{"type":"string","enum":["movie","series"]},"plot":{"type":"string","minLength":1},"actors":{"type":"array","items":{"type":"integer","minimum":1}}},"required":["title","year","posterUrl","type","plot"]}}}},"responses":{"201":{"description":"Movie created"}}},"delete":{"description":"Delete all movies","tags":["Movies"],"responses":{"200":{"description":"Movies deleted"}}}},"/api/movies/{id}":{"get":{"description":"Get movie by id","tags":["Movies"],"parameters":[{"schema":{"type":"integer","minimum":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Movie details"},"404":{"description":"Movie not found"}}},"delete":{"description":"Delete movie by id","tags":["Movies"],"parameters":[{"schema":{"type":"integer","minimum":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Movie deleted"},"404":{"description":"Movie not found"}}},"put":{"description":"Update movie by id","tags":["Movies"],"parameters":[{"schema":{"type":"integer","minimum":1},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1},"year":{"type":"integer","minimum":1900,"maximum":2100},"genres":{"type":"array","items":{"type":"integer","minimum":1}},"directors":{"type":"array","items":{"type":"integer","minimum":1}},"writers":{"type":"array","items":{"type":"integer","minimum":1}},"posterUrl":{"type":"string","format":"uri"},"type":{"type":"string","enum":["movie","series"]},"plot":{"type":"string","minLength":1},"actors":{"type":"array","items":{"type":"integer","minimum":1}}}}}}},"responses":{"200":{"description":"Movie updated"},"404":{"description":"Movie not found"}}}},"/api/genres":{"get":{"description":"Get all genres","tags":["Genres"],"parameters":[{"schema":{"type":"string"},"required":false,"name":"name","in":"query"},{"schema":{"type":"string","enum":["name","createdAt","updatedAt"]},"required":false,"name":"sortBy","in":"query"},{"schema":{"type":"string","enum":["asc","desc"]},"required":false,"name":"sortOrder","in":"query"}],"responses":{"200":{"description":"List of genres"}}},"post":{"description":"Create a new genre","tags":["Genres"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1}},"required":["name"]}}}},"responses":{"201":{"description":"Genre created"}}},"delete":{"description":"Delete all genres","tags":["Genres"],"responses":{"200":{"description":"genres deleted"}}}},"/api/genres/{id}":{"get":{"description":"Get genre by id","tags":["Genres"],"parameters":[{"schema":{"type":"integer","minimum":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Genre details"},"404":{"description":"Genre not found"}}},"delete":{"description":"Delete genre by id","tags":["Genres"],"parameters":[{"schema":{"type":"integer","minimum":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Genre deleted"},"404":{"description":"Genre not found"}}},"put":{"description":"Update genre by id","tags":["Genres"],"parameters":[{"schema":{"type":"integer","minimum":1},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1}},"required":["name"]}}}},"responses":{"200":{"description":"Genre updated"},"404":{"description":"Genre not found"}}}},"/api/directors":{"get":{"description":"Get all directors","tags":["Directors"],"parameters":[{"schema":{"type":"string"},"required":false,"name":"name","in":"query"},{"schema":{"type":"string","enum":["name","createdAt","updatedAt"]},"required":false,"name":"sortBy","in":"query"},{"schema":{"type":"string","enum":["asc","desc"]},"required":false,"name":"sortOrder","in":"query"}],"responses":{"200":{"description":"List of directors"}}},"post":{"description":"Create a new director","tags":["Directors"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1}},"required":["name"]}}}},"responses":{"201":{"description":"Director created"}}},"delete":{"description":"Delete all directors","tags":["Directors"],"responses":{"200":{"description":"directors deleted"}}}},"/api/directors/{id}":{"get":{"description":"Get director by id","tags":["Directors"],"parameters":[{"schema":{"type":"integer","minimum":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Director details"},"404":{"description":"Director not found"}}},"delete":{"description":"Delete director by id","tags":["Directors"],"parameters":[{"schema":{"type":"integer","minimum":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Director deleted"},"404":{"description":"Director not found"}}},"put":{"description":"Update director by id","tags":["Directors"],"parameters":[{"schema":{"type":"integer","minimum":1},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1}},"required":["name"]}}}},"responses":{"200":{"description":"Director updated"},"404":{"description":"Director not found"}}}},"/api/writers":{"get":{"description":"Get all writers","tags":["Writers"],"parameters":[{"schema":{"type":"string"},"required":false,"name":"name","in":"query"},{"schema":{"type":"string","enum":["name","createdAt","updatedAt"]},"required":false,"name":"sortBy","in":"query"},{"schema":{"type":"string","enum":["asc","desc"]},"required":false,"name":"sortOrder","in":"query"}],"responses":{"200":{"description":"List of writers"}}},"post":{"description":"Create a new writer","tags":["Writers"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1}},"required":["name"]}}}},"responses":{"201":{"description":"Writer created"}}},"delete":{"description":"Delete all writers","tags":["Writers"],"responses":{"200":{"description":"writers deleted"}}}},"/api/writers/{id}":{"get":{"description":"Get writer by id","tags":["Writers"],"parameters":[{"schema":{"type":"integer","minimum":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Writer details"},"404":{"description":"Writer not found"}}},"delete":{"description":"Delete writer by id","tags":["Writers"],"parameters":[{"schema":{"type":"integer","minimum":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Writer deleted"},"404":{"description":"Writer not found"}}},"put":{"description":"Update writer by id","tags":["Writers"],"parameters":[{"schema":{"type":"integer","minimum":1},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1}},"required":["name"]}}}},"responses":{"200":{"description":"Writer updated"},"404":{"description":"Writer not found"}}}},"/api/actors":{"get":{"description":"Get all actors","tags":["Actors"],"parameters":[{"schema":{"type":"string"},"required":false,"name":"name","in":"query"},{"schema":{"type":"string","enum":["name","createdAt","updatedAt"]},"required":false,"name":"sortBy","in":"query"},{"schema":{"type":"string","enum":["asc","desc"]},"required":false,"name":"sortOrder","in":"query"}],"responses":{"200":{"description":"List of actors"}}},"post":{"description":"Create a new actor","tags":["Actors"],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1}},"required":["name"]}}}},"responses":{"201":{"description":"Actor created"}}},"delete":{"description":"Delete all actors","tags":["Actors"],"responses":{"200":{"description":"actors deleted"}}}},"/api/actors/{id}":{"get":{"description":"Get actor by id","tags":["Actors"],"parameters":[{"schema":{"type":"integer","minimum":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Actor details"},"404":{"description":"Actor not found"}}},"delete":{"description":"Delete actor by id","tags":["Actors"],"parameters":[{"schema":{"type":"integer","minimum":1},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Actor deleted"},"404":{"description":"Actor not found"}}},"put":{"description":"Update actor by id","tags":["Actors"],"parameters":[{"schema":{"type":"integer","minimum":1},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1}},"required":["name"]}}}},"responses":{"200":{"description":"Actor updated"},"404":{"description":"Actor not found"}}}}},"webhooks":{}}