From 5e827aef0b4063b21e8ac99e74a0f18a5debf553 Mon Sep 17 00:00:00 2001 From: seferturan Date: Wed, 11 Feb 2026 16:42:14 +0100 Subject: [PATCH 1/2] feat(filter): adds support for adding and deleting filters Fixes https://github.com/trakt/trakt-api/issues/710 --- .../schema/request/addFilterRequestSchema.ts | 6 +++++ .../schema/request/filterIdParamsSchema.ts | 7 ++++++ .../response/addFilterResponseSchema.ts | 8 +++++++ .../src/contracts/users/subroutes/filters.ts | 22 ++++++++++++++++++- 4 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 projects/api/src/contracts/users/schema/request/addFilterRequestSchema.ts create mode 100644 projects/api/src/contracts/users/schema/request/filterIdParamsSchema.ts create mode 100644 projects/api/src/contracts/users/schema/response/addFilterResponseSchema.ts diff --git a/projects/api/src/contracts/users/schema/request/addFilterRequestSchema.ts b/projects/api/src/contracts/users/schema/request/addFilterRequestSchema.ts new file mode 100644 index 00000000..94b4d692 --- /dev/null +++ b/projects/api/src/contracts/users/schema/request/addFilterRequestSchema.ts @@ -0,0 +1,6 @@ +import { z } from '../../../_internal/z.ts'; + +export const addFilterRequestSchema = z.object({ + name: z.string(), + url: z.string(), +}); diff --git a/projects/api/src/contracts/users/schema/request/filterIdParamsSchema.ts b/projects/api/src/contracts/users/schema/request/filterIdParamsSchema.ts new file mode 100644 index 00000000..c69fd0f2 --- /dev/null +++ b/projects/api/src/contracts/users/schema/request/filterIdParamsSchema.ts @@ -0,0 +1,7 @@ +import { z } from '../../../_internal/z.ts'; + +export const filterIdParamsSchema = z.object({ + id: z.number().int().or(z.string()).describe( + 'ID of the saved filter', + ), +}); diff --git a/projects/api/src/contracts/users/schema/response/addFilterResponseSchema.ts b/projects/api/src/contracts/users/schema/response/addFilterResponseSchema.ts new file mode 100644 index 00000000..e471c07c --- /dev/null +++ b/projects/api/src/contracts/users/schema/response/addFilterResponseSchema.ts @@ -0,0 +1,8 @@ +import { z } from '../../../_internal/z.ts'; +import { addFilterRequestSchema } from '../request/addFilterRequestSchema.ts'; +import { filterResponseSchema } from './filterResponseSchema.ts'; + +export const addFilterResponseSchema = z.object({ + added: filterResponseSchema.array(), + skipped: addFilterRequestSchema.array(), +}); diff --git a/projects/api/src/contracts/users/subroutes/filters.ts b/projects/api/src/contracts/users/subroutes/filters.ts index 4466bce9..8ad6370a 100644 --- a/projects/api/src/contracts/users/subroutes/filters.ts +++ b/projects/api/src/contracts/users/subroutes/filters.ts @@ -1,7 +1,10 @@ import { builder } from '../../_internal/builder.ts'; import { pageQuerySchema } from '../../_internal/request/pageQuerySchema.ts'; -import type { z } from '../../_internal/z.ts'; +import { z } from '../../_internal/z.ts'; +import { addFilterRequestSchema } from '../schema/request/addFilterRequestSchema.ts'; +import { filterIdParamsSchema } from '../schema/request/filterIdParamsSchema.ts'; import { sectionParamsSchema } from '../schema/request/sectionParamsSchema.ts'; +import { addFilterResponseSchema } from '../schema/response/addFilterResponseSchema.ts'; import { filterResponseSchema } from '../schema/response/filterResponseSchema.ts'; export const filters = builder.router({ @@ -14,6 +17,23 @@ export const filters = builder.router({ 200: filterResponseSchema.array(), }, }, + add: { + path: '', + method: 'POST', + body: addFilterRequestSchema.array(), + responses: { + 201: addFilterResponseSchema, + }, + }, + delete: { + path: '/:id', + method: 'DELETE', + pathParams: filterIdParamsSchema, + responses: { + 204: z.undefined(), + 404: z.undefined(), + }, + }, }, { pathPrefix: '/saved_filters', }); From df1f32cd187eccacc9814e9220ae7f73e8f5a11b Mon Sep 17 00:00:00 2001 From: seferturan Date: Wed, 11 Feb 2026 16:42:53 +0100 Subject: [PATCH 2/2] chore: bump version to 0.3.7 --- projects/api/deno.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/api/deno.json b/projects/api/deno.json index 75b7d4a1..15231fe7 100644 --- a/projects/api/deno.json +++ b/projects/api/deno.json @@ -1,7 +1,7 @@ { "name": "@trakt/api", "exports": "./src/index.ts", - "version": "0.3.6", + "version": "0.3.7", "imports": { "@anatine/zod-openapi": "npm:@anatine/zod-openapi@^2.2.6", "@std/testing": "jsr:@std/testing@^1.0.5",