@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api TVmaze user API
@base https://api.tvmaze.com/v1
@version 1.0
@auth basic
@endpoints 42
@hint download_for_search
@toc user(35), scrobble(4), auth(3)

@group user
@endpoint GET /user/episodes
@optional {show_id: any}
@returns(200)

@endpoint GET /user/episodes/{episode_id}
@returns(200)
@errors {404}

@endpoint PUT /user/episodes/{episode_id}
@optional {body: map}
@returns(200)
@errors {404, 422}

@endpoint DELETE /user/episodes/{episode_id}
@returns(200)
@errors {404}

@endpoint GET /user/follows/shows
@optional {embed: any}
@returns(200)

@endpoint GET /user/follows/shows/{show_id}
@returns(200)
@errors {404}

@endpoint PUT /user/follows/shows/{show_id}
@returns(200)
@errors {404}

@endpoint DELETE /user/follows/shows/{show_id}
@returns(200)
@errors {404}

@endpoint GET /user/follows/people
@optional {embed: any}
@returns(200)

@endpoint GET /user/follows/people/{person_id}
@returns(200)
@errors {404}

@endpoint PUT /user/follows/people/{person_id}
@returns(200)
@errors {404}

@endpoint DELETE /user/follows/people/{person_id}
@returns(200)
@errors {404}

@endpoint GET /user/follows/networks
@optional {embed: any}
@returns(200)

@endpoint GET /user/follows/networks/{network_id}
@returns(200)
@errors {404}

@endpoint PUT /user/follows/networks/{network_id}
@returns(200)
@errors {404}

@endpoint DELETE /user/follows/networks/{network_id}
@returns(200)
@errors {404}

@endpoint GET /user/follows/webchannels
@optional {embed: any}
@returns(200)

@endpoint GET /user/follows/webchannels/{webchannel_id}
@returns(200)
@errors {404}

@endpoint PUT /user/follows/webchannels/{webchannel_id}
@returns(200)
@errors {404}

@endpoint DELETE /user/follows/webchannels/{webchannel_id}
@returns(200)
@errors {404}

@endpoint GET /user/tags
@returns(200)

@endpoint POST /user/tags
@optional {body: map}
@returns(200)
@errors {422}

@endpoint DELETE /user/tags/{tag_id}
@required {tag_id: any}
@returns(200)
@errors {404}

@endpoint PATCH /user/tags/{tag_id}
@required {tag_id: any}
@optional {body: map}
@returns(200)
@errors {404, 422}

@endpoint GET /user/tags/{tag_id}/shows
@required {tag_id: any}
@optional {embed: any}
@returns(200)
@errors {404}

@endpoint PUT /user/tags/{tag_id}/shows/{show_id}
@required {tag_id: any, show_id: any}
@returns(200)
@errors {404}

@endpoint DELETE /user/tags/{tag_id}/shows/{show_id}
@required {tag_id: any, show_id: any}
@returns(200)
@errors {404}

@endpoint GET /user/votes/shows
@optional {embed: any}
@returns(200)

@endpoint GET /user/votes/shows/{show_id}
@returns(200)
@errors {404}

@endpoint PUT /user/votes/shows/{show_id}
@optional {body: map}
@returns(200)
@errors {404, 422}

@endpoint DELETE /user/votes/shows/{show_id}
@returns(200)
@errors {404}

@endpoint GET /user/votes/episodes
@returns(200)

@endpoint GET /user/votes/episodes/{episode_id}
@returns(200)
@errors {404}

@endpoint PUT /user/votes/episodes/{episode_id}
@optional {body: map}
@returns(200)
@errors {404, 422}

@endpoint DELETE /user/votes/episodes/{episode_id}
@returns(200)
@errors {404}

@endgroup

@group scrobble
@endpoint GET /scrobble/shows/{show_id}
@returns(200)

@endpoint PUT /scrobble/episodes/{episode_id}
@optional {body: map}
@returns(200)
@errors {404, 422}

@endpoint POST /scrobble/shows
@optional {tvmaze_id: any, thetvdb_id: any, imdb_id: any, episodes: [map]}
@returns(200)
@returns(207)
@errors {422}

@endpoint POST /scrobble/episodes
@optional {episodes: [map]}
@returns(200)
@returns(207)
@errors {422}

@endgroup

@group auth
@endpoint POST /auth/start
@required {body: map}
@returns(200)
@errors {401, 404, 429}

@endpoint POST /auth/poll
@required {body: map}
@returns(200)
@errors {403, 404, 429}

@endpoint GET /auth/validate
@returns(200)
@errors {401}

@endgroup

@end
