From b476e91918706e2534916446889d5fa8da866f05 Mon Sep 17 00:00:00 2001 From: Mohamed Bassem Date: Sun, 20 Oct 2024 18:32:36 +0000 Subject: [PATCH] api: Add tag ids and support variable baseURL --- packages/open-api/hoarder-openapi-spec.json | 68 ++++++++++++++++++++- packages/open-api/index.ts | 12 +++- packages/open-api/lib/bookmarks.ts | 7 +++ packages/open-api/lib/lists.ts | 8 +++ packages/open-api/lib/tags.ts | 5 ++ 5 files changed, 98 insertions(+), 2 deletions(-) diff --git a/packages/open-api/hoarder-openapi-spec.json b/packages/open-api/hoarder-openapi-spec.json index ab875818..00452bfb 100644 --- a/packages/open-api/hoarder-openapi-spec.json +++ b/packages/open-api/hoarder-openapi-spec.json @@ -7,7 +7,13 @@ }, "servers": [ { - "url": "v1" + "url": "{address}/api/v1", + "variables": { + "address": { + "default": "https://try.hoarder.app", + "description": "The address of the hoarder server" + } + } } ], "components": { @@ -368,6 +374,9 @@ "get": { "description": "Get all bookmarks", "summary": "Get all bookmarks", + "tags": [ + "Bookmarks" + ], "security": [ { "bearerAuth": [] @@ -423,6 +432,9 @@ "post": { "description": "Create a new bookmark", "summary": "Create a new bookmark", + "tags": [ + "Bookmarks" + ], "security": [ { "bearerAuth": [] @@ -584,6 +596,9 @@ "get": { "description": "Get bookmark by its id", "summary": "Get a single bookmark", + "tags": [ + "Bookmarks" + ], "security": [ { "bearerAuth": [] @@ -610,6 +625,9 @@ "delete": { "description": "Delete bookmark by its id", "summary": "Delete a bookmark", + "tags": [ + "Bookmarks" + ], "security": [ { "bearerAuth": [] @@ -629,6 +647,9 @@ "patch": { "description": "Update bookmark by its id", "summary": "Update a bookmark", + "tags": [ + "Bookmarks" + ], "security": [ { "bearerAuth": [] @@ -725,6 +746,9 @@ "post": { "description": "Attach tags to a bookmark", "summary": "Attach tags to a bookmark", + "tags": [ + "Bookmarks" + ], "security": [ { "bearerAuth": [] @@ -791,6 +815,9 @@ "delete": { "description": "Detach tags from a bookmark", "summary": "Detach tags from a bookmark", + "tags": [ + "Bookmarks" + ], "security": [ { "bearerAuth": [] @@ -859,6 +886,9 @@ "get": { "description": "Get all lists", "summary": "Get all lists", + "tags": [ + "Lists" + ], "security": [ { "bearerAuth": [] @@ -891,6 +921,9 @@ "post": { "description": "Create a new list", "summary": "Create a new list", + "tags": [ + "Lists" + ], "security": [ { "bearerAuth": [] @@ -942,6 +975,9 @@ "get": { "description": "Get list by its id", "summary": "Get a single list", + "tags": [ + "Lists" + ], "security": [ { "bearerAuth": [] @@ -968,6 +1004,9 @@ "delete": { "description": "Delete list by its id", "summary": "Delete a list", + "tags": [ + "Lists" + ], "security": [ { "bearerAuth": [] @@ -989,6 +1028,9 @@ "patch": { "description": "Update list by its id", "summary": "Update a list", + "tags": [ + "Lists" + ], "security": [ { "bearerAuth": [] @@ -1041,6 +1083,9 @@ "get": { "description": "Get the bookmarks in a list", "summary": "Get a bookmarks in a list", + "tags": [ + "Lists" + ], "security": [ { "bearerAuth": [] @@ -1085,6 +1130,9 @@ "put": { "description": "Add the bookmarks to a list", "summary": "Add a bookmark to a list", + "tags": [ + "Lists" + ], "security": [ { "bearerAuth": [] @@ -1107,6 +1155,9 @@ "delete": { "description": "Remove the bookmarks from a list", "summary": "Remove a bookmark from a list", + "tags": [ + "Lists" + ], "security": [ { "bearerAuth": [] @@ -1131,6 +1182,9 @@ "get": { "description": "Get all tags", "summary": "Get all tags", + "tags": [ + "Tags" + ], "security": [ { "bearerAuth": [] @@ -1165,6 +1219,9 @@ "get": { "description": "Get tag by its id", "summary": "Get a single tag", + "tags": [ + "Tags" + ], "security": [ { "bearerAuth": [] @@ -1191,6 +1248,9 @@ "delete": { "description": "Delete tag by its id", "summary": "Delete a tag", + "tags": [ + "Tags" + ], "security": [ { "bearerAuth": [] @@ -1210,6 +1270,9 @@ "patch": { "description": "Update tag by its id", "summary": "Update a tag", + "tags": [ + "Tags" + ], "security": [ { "bearerAuth": [] @@ -1253,6 +1316,9 @@ "get": { "description": "Get the bookmarks with the tag", "summary": "Get a bookmarks with the tag", + "tags": [ + "Tags" + ], "security": [ { "bearerAuth": [] diff --git a/packages/open-api/index.ts b/packages/open-api/index.ts index 8682c208..97aa259f 100644 --- a/packages/open-api/index.ts +++ b/packages/open-api/index.ts @@ -26,7 +26,17 @@ function getOpenApiDocumentation() { title: "Hoarder API", description: "The API for the Hoarder app", }, - servers: [{ url: "v1" }], + servers: [ + { + url: "{address}/api/v1", + variables: { + address: { + default: "https://try.hoarder.app", + description: "The address of the hoarder server", + }, + }, + }, + ], }); } diff --git a/packages/open-api/lib/bookmarks.ts b/packages/open-api/lib/bookmarks.ts index 28ef7e0d..0ddf921e 100644 --- a/packages/open-api/lib/bookmarks.ts +++ b/packages/open-api/lib/bookmarks.ts @@ -38,6 +38,7 @@ registry.registerPath({ path: "/bookmarks", description: "Get all bookmarks", summary: "Get all bookmarks", + tags: ["Bookmarks"], security: [{ [BearerAuth.name]: [] }], request: { query: z @@ -64,6 +65,7 @@ registry.registerPath({ path: "/bookmarks", description: "Create a new bookmark", summary: "Create a new bookmark", + tags: ["Bookmarks"], security: [{ [BearerAuth.name]: [] }], request: { body: { @@ -91,6 +93,7 @@ registry.registerPath({ path: "/bookmarks/{bookmarkId}", description: "Get bookmark by its id", summary: "Get a single bookmark", + tags: ["Bookmarks"], security: [{ [BearerAuth.name]: [] }], request: { params: z.object({ bookmarkId: BookmarkIdSchema }), @@ -112,6 +115,7 @@ registry.registerPath({ path: "/bookmarks/{bookmarkId}", description: "Delete bookmark by its id", summary: "Delete a bookmark", + tags: ["Bookmarks"], security: [{ [BearerAuth.name]: [] }], request: { params: z.object({ bookmarkId: BookmarkIdSchema }), @@ -128,6 +132,7 @@ registry.registerPath({ path: "/bookmarks/{bookmarkId}", description: "Update bookmark by its id", summary: "Update a bookmark", + tags: ["Bookmarks"], security: [{ [BearerAuth.name]: [] }], request: { params: z.object({ bookmarkId: BookmarkIdSchema }), @@ -158,6 +163,7 @@ registry.registerPath({ path: "/bookmarks/{bookmarkId}/tags", description: "Attach tags to a bookmark", summary: "Attach tags to a bookmark", + tags: ["Bookmarks"], security: [{ [BearerAuth.name]: [] }], request: { params: z.object({ bookmarkId: BookmarkIdSchema }), @@ -187,6 +193,7 @@ registry.registerPath({ path: "/bookmarks/{bookmarkId}/tags", description: "Detach tags from a bookmark", summary: "Detach tags from a bookmark", + tags: ["Bookmarks"], security: [{ [BearerAuth.name]: [] }], request: { params: z.object({ bookmarkId: BookmarkIdSchema }), diff --git a/packages/open-api/lib/lists.ts b/packages/open-api/lib/lists.ts index 27f458fc..aa5d57f3 100644 --- a/packages/open-api/lib/lists.ts +++ b/packages/open-api/lib/lists.ts @@ -34,6 +34,7 @@ registry.registerPath({ path: "/lists", description: "Get all lists", summary: "Get all lists", + tags: ["Lists"], security: [{ [BearerAuth.name]: [] }], request: {}, responses: { @@ -55,6 +56,7 @@ registry.registerPath({ path: "/lists", description: "Create a new list", summary: "Create a new list", + tags: ["Lists"], security: [{ [BearerAuth.name]: [] }], request: { body: { @@ -82,6 +84,7 @@ registry.registerPath({ path: "/lists/{listId}", description: "Get list by its id", summary: "Get a single list", + tags: ["Lists"], security: [{ [BearerAuth.name]: [] }], request: { params: z.object({ listId: ListIdSchema }), @@ -103,6 +106,7 @@ registry.registerPath({ path: "/lists/{listId}", description: "Delete list by its id", summary: "Delete a list", + tags: ["Lists"], security: [{ [BearerAuth.name]: [] }], request: { params: z.object({ listId: ListIdSchema }), @@ -119,6 +123,7 @@ registry.registerPath({ path: "/list/{listId}", description: "Update list by its id", summary: "Update a list", + tags: ["Lists"], security: [{ [BearerAuth.name]: [] }], request: { params: z.object({ listId: ListIdSchema }), @@ -149,6 +154,7 @@ registry.registerPath({ path: "/lists/{listId}/bookmarks", description: "Get the bookmarks in a list", summary: "Get a bookmarks in a list", + tags: ["Lists"], security: [{ [BearerAuth.name]: [] }], request: { params: z.object({ listId: ListIdSchema }), @@ -171,6 +177,7 @@ registry.registerPath({ path: "/lists/{listId}/bookmarks/{bookmarkId}", description: "Add the bookmarks to a list", summary: "Add a bookmark to a list", + tags: ["Lists"], security: [{ [BearerAuth.name]: [] }], request: { params: z.object({ listId: ListIdSchema, bookmarkId: BookmarkIdSchema }), @@ -187,6 +194,7 @@ registry.registerPath({ path: "/lists/{listId}/bookmarks/{bookmarkId}", description: "Remove the bookmarks from a list", summary: "Remove a bookmark from a list", + tags: ["Lists"], security: [{ [BearerAuth.name]: [] }], request: { params: z.object({ listId: ListIdSchema, bookmarkId: BookmarkIdSchema }), diff --git a/packages/open-api/lib/tags.ts b/packages/open-api/lib/tags.ts index e13b7c60..10e49d82 100644 --- a/packages/open-api/lib/tags.ts +++ b/packages/open-api/lib/tags.ts @@ -33,6 +33,7 @@ registry.registerPath({ path: "/tags", description: "Get all tags", summary: "Get all tags", + tags: ["Tags"], security: [{ [BearerAuth.name]: [] }], request: {}, responses: { @@ -54,6 +55,7 @@ registry.registerPath({ path: "/tags/{tagId}", description: "Get tag by its id", summary: "Get a single tag", + tags: ["Tags"], security: [{ [BearerAuth.name]: [] }], request: { params: z.object({ tagId: TagIdSchema }), @@ -75,6 +77,7 @@ registry.registerPath({ path: "/tags/{tagId}", description: "Delete tag by its id", summary: "Delete a tag", + tags: ["Tags"], security: [{ [BearerAuth.name]: [] }], request: { params: z.object({ tagId: TagIdSchema }), @@ -91,6 +94,7 @@ registry.registerPath({ path: "/tags/{tagId}", description: "Update tag by its id", summary: "Update a tag", + tags: ["Tags"], security: [{ [BearerAuth.name]: [] }], request: { params: z.object({ tagId: TagIdSchema }), @@ -121,6 +125,7 @@ registry.registerPath({ path: "/tags/{tagId}/bookmarks", description: "Get the bookmarks with the tag", summary: "Get a bookmarks with the tag", + tags: ["Tags"], security: [{ [BearerAuth.name]: [] }], request: { params: z.object({ tagId: TagIdSchema }),