From 4439c91f426a8c8a13c4a84c8cb685ae67cc07e6 Mon Sep 17 00:00:00 2001 From: Mohamed Bassem Date: Sat, 4 Jan 2025 14:03:42 +0000 Subject: feat: Expose asset manipulation endpoints in the REST API --- packages/open-api/hoarder-openapi-spec.json | 163 ++++++++++++++++++++++++++++ 1 file changed, 163 insertions(+) (limited to 'packages/open-api/hoarder-openapi-spec.json') diff --git a/packages/open-api/hoarder-openapi-spec.json b/packages/open-api/hoarder-openapi-spec.json index fecea0c2..92088f48 100644 --- a/packages/open-api/hoarder-openapi-spec.json +++ b/packages/open-api/hoarder-openapi-spec.json @@ -25,6 +25,10 @@ } }, "schemas": { + "AssetId": { + "type": "string", + "example": "ieidlxygmwj87oxz5hxttoc8" + }, "BookmarkId": { "type": "string", "example": "ieidlxygmwj87oxz5hxttoc8" @@ -435,6 +439,14 @@ } }, "parameters": { + "AssetId": { + "schema": { + "$ref": "#/components/schemas/AssetId" + }, + "required": true, + "name": "assetId", + "in": "path" + }, "BookmarkId": { "schema": { "$ref": "#/components/schemas/BookmarkId" @@ -1008,6 +1020,157 @@ } } }, + "/bookmarks/{bookmarkId}/assets": { + "post": { + "description": "Attach a new asset to a bookmark", + "summary": "Attach asset", + "tags": [ + "Bookmarks" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/BookmarkId" + } + ], + "requestBody": { + "description": "The asset to attach", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "assetType": { + "type": "string", + "enum": [ + "screenshot", + "bannerImage", + "fullPageArchive", + "video", + "bookmarkAsset", + "unknown" + ] + } + }, + "required": [ + "id", + "assetType" + ] + } + } + } + }, + "responses": { + "201": { + "description": "The attached asset", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "assetType": { + "type": "string", + "enum": [ + "screenshot", + "bannerImage", + "fullPageArchive", + "video", + "bookmarkAsset", + "unknown" + ] + } + }, + "required": [ + "id", + "assetType" + ] + } + } + } + } + } + } + }, + "/bookmarks/{bookmarkId}/assets/{assetId}": { + "put": { + "description": "Replace an existing asset with a new one", + "summary": "Replace asset", + "tags": [ + "Bookmarks" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/BookmarkId" + }, + { + "$ref": "#/components/parameters/AssetId" + } + ], + "requestBody": { + "description": "The new asset to replace with", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "assetId": { + "type": "string" + } + }, + "required": [ + "assetId" + ] + } + } + } + }, + "responses": { + "204": { + "description": "No content - asset was replaced successfully" + } + } + }, + "delete": { + "description": "Detach an asset from a bookmark", + "summary": "Detach asset", + "tags": [ + "Bookmarks" + ], + "security": [ + { + "bearerAuth": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/BookmarkId" + }, + { + "$ref": "#/components/parameters/AssetId" + } + ], + "responses": { + "204": { + "description": "No content - asset was detached successfully" + } + } + } + }, "/lists": { "get": { "description": "Get all lists", -- cgit v1.2.3-70-g09d2