watch-party/backend/docs/swagger.yaml

491 lines
12 KiB
YAML

basePath: /
definitions:
httpapi.ArchiveResponse:
properties:
current_ep:
example: false
type: boolean
date_archived:
example: "2024-03-01T15:04:05Z"
type: string
date_created:
example: "2024-02-01T15:04:05Z"
type: string
ep_num:
example: 1
type: integer
ep_title:
example: Pilot
type: string
id:
example: 123
type: integer
playback_length:
example: "00:24:00"
type: string
season_name:
example: Season 1
type: string
start_time:
example: "10:00:00"
type: string
type: object
httpapi.CreateShowReq:
properties:
ep_num:
example: 1
type: integer
ep_title:
example: Pilot
type: string
playback_length:
example: "00:24:00"
type: string
season_name:
example: Season 1
type: string
start_time:
description: optional; defaults to 22:00:00
example: "10:00:00"
type: string
required:
- ep_num
- ep_title
- playback_length
- season_name
type: object
httpapi.CurrentResponse:
properties:
current_ep:
example: false
type: boolean
date_created:
example: "2024-02-01T15:04:05Z"
type: string
ep_num:
example: 1
type: integer
ep_title:
example: Pilot
type: string
id:
example: 123
type: integer
playback_length:
example: "00:24:00"
type: string
season_name:
example: Season 1
type: string
start_time:
example: "10:00:00"
type: string
type: object
httpapi.DanimeEpisodeResponse:
properties:
ep_num:
example: 21
type: integer
ep_title:
example: あったんだ。確かに
type: string
playback_length:
example: "00:23:50"
type: string
season_name:
example: フルーツバスケット 2nd season
type: string
type: object
httpapi.FirebaseAdminClaimReq:
properties:
uid:
example: abc123
type: string
required:
- uid
type: object
httpapi.FirebaseAdminClaimRes:
properties:
admin:
example: true
type: boolean
custom_claims:
additionalProperties: true
type: object
email:
example: user@example.com
type: string
uid:
example: abc123
type: string
type: object
httpapi.FirebaseOAuthReq:
properties:
id_token:
example: <firebase-id-token>
type: string
required:
- id_token
type: object
httpapi.FirebaseOAuthRes:
properties:
admin:
example: true
type: boolean
custom_claims:
additionalProperties: true
description: CustomClaims echoes back custom claims; only include non-sensitive
claims.
type: object
email:
example: user@example.com
type: string
expires:
example: 1700000000
type: integer
issuer:
example: https://securetoken.google.com/<project>
type: string
uid:
example: abc123
type: string
type: object
httpapi.HTTPError:
properties:
error:
example: invalid payload
type: string
type: object
httpapi.MoveReq:
properties:
id:
example: 123
type: integer
ids:
items:
type: integer
type: array
type: object
httpapi.MoveRes:
properties:
deleted:
type: integer
deleted_ids:
items:
type: integer
type: array
inserted:
type: integer
moved_ids:
items:
type: integer
type: array
skipped:
type: integer
skipped_ids:
items:
type: integer
type: array
type: object
httpapi.SetCurrentReq:
properties:
id:
example: 123
type: integer
start_time:
example: "21:00:00"
type: string
required:
- id
- start_time
type: object
host: localhost:8082
info:
contact: {}
description: Backend API for watch-party app.
title: Watch Party Backend API
version: "1.0"
paths:
/api/v1/archive:
get:
description: List all rows from `current_archive` (admin only).
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/httpapi.ArchiveResponse'
type: array
"403":
description: admin only
schema:
$ref: '#/definitions/httpapi.HTTPError'
"500":
description: list failed
schema:
$ref: '#/definitions/httpapi.HTTPError'
summary: List archive
tags:
- archive
post:
consumes:
- application/json
description: Move one or many IDs from `current` to `current_archive`.
parameters:
- description: IDs to move
in: body
name: body
required: true
schema:
$ref: '#/definitions/httpapi.MoveReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/httpapi.MoveRes'
"400":
description: empty ids
schema:
$ref: '#/definitions/httpapi.HTTPError'
"500":
description: move failed
schema:
$ref: '#/definitions/httpapi.HTTPError'
summary: Move shows to archive
tags:
- archive
/api/v1/current:
get:
description: Returns the current row from `current` table.
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/httpapi.CurrentResponse'
"404":
description: no current row found
schema:
$ref: '#/definitions/httpapi.HTTPError'
"500":
description: query failed
schema:
$ref: '#/definitions/httpapi.HTTPError'
summary: Get current show
tags:
- current
post:
consumes:
- application/json
description: Set the current show ID and start time.
parameters:
- description: Current show payload
in: body
name: body
required: true
schema:
$ref: '#/definitions/httpapi.SetCurrentReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/httpapi.CurrentResponse'
"400":
description: invalid payload or invalid time
schema:
$ref: '#/definitions/httpapi.HTTPError'
"404":
description: id not found
schema:
$ref: '#/definitions/httpapi.HTTPError'
"500":
description: update failed
schema:
$ref: '#/definitions/httpapi.HTTPError'
summary: Set current show
tags:
- current
/api/v1/danime:
get:
description: Fetch metadata from dアニメストア WS030101 by partId.
parameters:
- description: dアニメ partId
in: query
name: part_id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/httpapi.DanimeEpisodeResponse'
"400":
description: missing part_id
schema:
$ref: '#/definitions/httpapi.HTTPError'
"502":
description: scrape failed
schema:
$ref: '#/definitions/httpapi.HTTPError'
summary: Fetch dアニメ episode metadata
tags:
- scraper
/api/v1/oauth/firebase:
post:
consumes:
- application/json
description: Validate Firebase ID token and return basic claims.
parameters:
- description: Firebase ID token
in: body
name: body
required: true
schema:
$ref: '#/definitions/httpapi.FirebaseOAuthReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/httpapi.FirebaseOAuthRes'
"400":
description: invalid payload
schema:
$ref: '#/definitions/httpapi.HTTPError'
"401":
description: invalid token
schema:
$ref: '#/definitions/httpapi.HTTPError'
"503":
description: auth disabled
schema:
$ref: '#/definitions/httpapi.HTTPError'
summary: Verify Firebase ID token
tags:
- auth
/api/v1/oauth/firebase/claim-admin:
post:
consumes:
- application/json
description: Set the \"admin\" custom claim for the given Firebase UID.
parameters:
- description: Firebase UID
in: body
name: body
required: true
schema:
$ref: '#/definitions/httpapi.FirebaseAdminClaimReq'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/httpapi.FirebaseAdminClaimRes'
"400":
description: invalid payload
schema:
$ref: '#/definitions/httpapi.HTTPError'
"500":
description: claim failed
schema:
$ref: '#/definitions/httpapi.HTTPError'
"503":
description: auth disabled
schema:
$ref: '#/definitions/httpapi.HTTPError'
summary: Claim Firebase admin
tags:
- auth
/api/v1/shows:
delete:
description: Delete a row from `current_archive` by ID.
parameters:
- description: Show ID
format: int64
in: query
name: id
required: true
type: integer
produces:
- application/json
responses:
"204":
description: No Content
"400":
description: invalid id
schema:
$ref: '#/definitions/httpapi.HTTPError'
"404":
description: id not found
schema:
$ref: '#/definitions/httpapi.HTTPError'
"500":
description: delete failed
schema:
$ref: '#/definitions/httpapi.HTTPError'
summary: Delete archived show
tags:
- shows
get:
description: List all rows from `current` table.
produces:
- application/json
responses:
"200":
description: OK
schema:
items:
$ref: '#/definitions/httpapi.CurrentResponse'
type: array
"500":
description: list failed
schema:
$ref: '#/definitions/httpapi.HTTPError'
summary: List current shows
tags:
- shows
post:
consumes:
- application/json
description: Insert a new show into `current`.
parameters:
- description: New show payload
in: body
name: body
required: true
schema:
$ref: '#/definitions/httpapi.CreateShowReq'
produces:
- application/json
responses:
"201":
description: Created
schema:
$ref: '#/definitions/httpapi.CurrentResponse'
"400":
description: invalid payload or invalid time/duration
schema:
$ref: '#/definitions/httpapi.HTTPError'
"500":
description: create failed
schema:
$ref: '#/definitions/httpapi.HTTPError'
summary: Create show
tags:
- shows
schemes:
- http
- https
swagger: "2.0"