diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 2391096..2ef09f7 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -337,12 +337,28 @@ module.exports = { to: '/video', children: [ { - title: 'Show', - to: '/video/show/', + title: 'Destroy', + to: '/video/destroy/' + }, + { + title: 'Force Delete', + to: '/video/forceDelete/' }, { title: 'Index', to: '/video/index/' + }, + { + title: 'Show', + to: '/video/show/', + }, + { + title: 'Store', + to: '/video/store/', + }, + { + title: 'Update', + to: '/video/update/', } ] }, diff --git a/docs/video/README.md b/docs/video/README.md index 24f1036..31af47b 100644 --- a/docs/video/README.md +++ b/docs/video/README.md @@ -41,10 +41,26 @@ For example, the video Bakemonogatari-OP1.webm represents the WebM of the Bakemo ### Endpoints +**[Video Destroy](/video/destroy/)** + +The video destroy endpoint soft deletes a video and returns the deleted video resource. + +**[Video Force Delete](/video/forceDelete/)** + +The video force delete endpoint hard deletes a video and returns a confirmation message. + +**[Video Index](/video/index/)** + +The video index endpoint displays a listing of video resources. + **[Video Show](/video/show/)** The video show endpoint returns a video resource. -**[Video Index](/video/index/)** +**[Video Store](/video/store/)** -The video index endpoint displays a listing of video resources. \ No newline at end of file +The video store endpoint creates a new video and returns the new video resource. + +**[Video Update](/video/update/)** + +The video update endpoint updates a video and returns the updated video resource. \ No newline at end of file diff --git a/docs/video/destroy/README.md b/docs/video/destroy/README.md new file mode 100644 index 0000000..0788a49 --- /dev/null +++ b/docs/video/destroy/README.md @@ -0,0 +1,66 @@ +--- +title: Video Destroy +--- + + + +# Video Destroy Endpoint + +The video destroy endpoint soft deletes a video and returns the deleted video resource. + +For example, the `/api/video/Bakemonogatari-OP1.webm` endpoint will soft delete the Bakemonogatari-OP1.webm video and return the deleted Bakemonogatari-OP1.webm resource. + +## URL + +```sh +DELETE /api/video/{basename} +``` + +## Authentication + +**Required Permission**: delete video + +**Roles with Permission**: Admin + +## Parameters + +None + +## Response + +```json +{ + video: { + id: id, + basename: "basename", + filename: "filename", + path: "path", + size: size, + mimetype: "mimetype", + resolution: resolution, + nc: nc, + subbed: subbed, + lyrics: lyrics, + uncen: uncen, + source: "source", + overlap: "overlap", + created_at: "created_at", + updated_at: "updated_at", + deleted_at: "deleted_at", + tags: "tags", + link: "link" + } +} +``` + + + + +```bash +curl -X DELETE -H "Authorization: Bearer {token}" https://api.animethemes.moe/video/Bakemonogatari-OP1.webm +``` + + + + + \ No newline at end of file diff --git a/docs/video/forceDelete/README.md b/docs/video/forceDelete/README.md new file mode 100644 index 0000000..4cc0efd --- /dev/null +++ b/docs/video/forceDelete/README.md @@ -0,0 +1,47 @@ +--- +title: Video Force Delete +--- + + + +# Video Force Delete Endpoint + +The video force delete endpoint hard deletes a video and returns a confirmation message. + +For example, the `/api/forceDelete/video/Bakemonogatari-OP1.webm` endpoint will hard delete the Bakemonogatari-OP1.webm video and return a confirmation message. + +## URL + +```sh +DELETE /api/forceDelete/video/{basename} +``` + +## Authentication + +**Required Permission**: force delete video + +**Roles with Permission**: Admin + +## Parameters + +None + +## Response + +```json +{ + message: "The Video 'Bakemonogatari-OP1.webm' was deleted.", +} +``` + + + + +```bash +curl -X DELETE -H "Authorization: Bearer {token}" https://api.animethemes.moe/forceDelete/video/Bakemonogatari-OP1.webm +``` + + + + + \ No newline at end of file diff --git a/docs/video/show/README.md b/docs/video/show/README.md index 57f6d4f..69afe8f 100644 --- a/docs/video/show/README.md +++ b/docs/video/show/README.md @@ -8,7 +8,7 @@ title: Video Show The video show endpoint returns a video resource. -For example, `/api/video/Bakemonogatari-OP1.webm` endpoint will return the video for the Bakemonogatari OP1 theme. +For example, `/api/video/Bakemonogatari-OP1.webm` endpoint will return the Bakemonogatari-OP1.webm video. ## URL diff --git a/docs/video/store/README.md b/docs/video/store/README.md new file mode 100644 index 0000000..4b7cd13 --- /dev/null +++ b/docs/video/store/README.md @@ -0,0 +1,79 @@ +--- +title: Video Store +--- + + + +# Video Store Endpoint + +The video store endpoint creates a new video and returns the new video resource. + +For example, the `/api/video?basename=Bakemonogatari-OP1.webm&filename=Bakemonogatari-OP1&mimetype=video/webm&path=2009/Summer/Bakemonogatari-OP1.webm&size=50602649` endpoint will create a new Bakemonogatari-OP1.webm video and return the new Bakemonogatari-OP1.webm resource. + +## URL + +```sh +POST /api/video +``` + +## Authentication + +**Required Permission**: create video + +**Roles with Permission**: Admin + +## Parameters + +| Name | Required | Rules | +| :--------: | :------: | :------------------------------------- | +| basename | Yes | string, max:192 | +| filename | Yes | string, max:192 | +| path | Yes | string, max:192 | +| size | Yes | integer, min:0 | +| mimetype | Yes | string, max:192 | +| resolution | No | integer, min:360, max:1080 | +| nc | No | boolean | +| subbed | No | boolean | +| lyrics | No | boolean | +| uncen | No | boolean | +| overlap | No | EnumValue {None, Trans, Over} | +| source | No | EnumValue {Web, RAW, BD, DVD, VHS, LD} | + +## Response + +```json +{ + video: { + id: id, + basename: "basename", + filename: "filename", + path: "path", + size: size, + mimetype: "mimetype", + resolution: resolution, + nc: nc, + subbed: subbed, + lyrics: lyrics, + uncen: uncen, + source: "source", + overlap: "overlap", + created_at: "created_at", + updated_at: "updated_at", + deleted_at: "deleted_at", + tags: "tags", + link: "link" + } +} +``` + + + + +```bash +curl -X POST -H "Authorization: Bearer {token}" https://api.animethemes.moe/video/ +``` + + + + + \ No newline at end of file diff --git a/docs/video/update/README.md b/docs/video/update/README.md new file mode 100644 index 0000000..2729323 --- /dev/null +++ b/docs/video/update/README.md @@ -0,0 +1,74 @@ +--- +title: Video Update +--- + + + +# Video Update Endpoint + +The video update endpoint updates a video and returns the updated video resource. + +For example, the `/api/video/Bakemonogatari-OP1.webm?resolution=1080` endpoint will update the Bakemonogatari-OP1.webm video resolution attribute and return the updated Bakemonogatari-OP1.webm resource. + +## URL + +```sh +PUT|PATCH /api/video/{basename} +``` + +## Authentication + +**Required Permission**: update video + +**Roles with Permission**: Wiki Editor, Admin + +## Parameters + +| Name | Required | Rules | +| :--------: | :------: | :------------------------------------- | +| resolution | No | integer, min:360, max:1080 | +| nc | No | boolean | +| subbed | No | boolean | +| lyrics | No | boolean | +| uncen | No | boolean | +| overlap | No | EnumValue {None, Trans, Over} | +| source | No | EnumValue {Web, RAW, BD, DVD, VHS, LD} | + +## Response + +```json +{ + video: { + id: id, + basename: "basename", + filename: "filename", + path: "path", + size: size, + mimetype: "mimetype", + resolution: resolution, + nc: nc, + subbed: subbed, + lyrics: lyrics, + uncen: uncen, + source: "source", + overlap: "overlap", + created_at: "created_at", + updated_at: "updated_at", + deleted_at: "deleted_at", + tags: "tags", + link: "link" + } +} +``` + + + + +```bash +curl -X PATCH -H "Authorization: Bearer {token}" https://api.animethemes.moe/video/Bakemonogatari-OP1.webm +``` + + + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index ba8b80d..12770cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5703,9 +5703,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.145", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.145.tgz", - "integrity": "sha512-g4VQCi61gA0t5fJHsalxAc8NpvxC/CEwLAGLfJ+DmkRXTEyntJA7H01771uVD6X6nnViv3GToPgb0QOVA8ivOQ==", + "version": "1.4.146", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.146.tgz", + "integrity": "sha512-4eWebzDLd+hYLm4csbyMU2EbBnqhwl8Oe9eF/7CBDPWcRxFmqzx4izxvHH+lofQxzieg8UbB8ZuzNTxeukzfTg==", "dev": true }, "node_modules/elliptic": { @@ -19496,9 +19496,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.145", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.145.tgz", - "integrity": "sha512-g4VQCi61gA0t5fJHsalxAc8NpvxC/CEwLAGLfJ+DmkRXTEyntJA7H01771uVD6X6nnViv3GToPgb0QOVA8ivOQ==", + "version": "1.4.146", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.146.tgz", + "integrity": "sha512-4eWebzDLd+hYLm4csbyMU2EbBnqhwl8Oe9eF/7CBDPWcRxFmqzx4izxvHH+lofQxzieg8UbB8ZuzNTxeukzfTg==", "dev": true }, "elliptic": {