Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,6 @@ export const mediaFilterParamsSchema = z.object({
start_date: z.string().nullish(),
end_date: z.string().nullish(),
runtimes: z.string().nullish(),
countries: z.string().nullish(),
certifications: z.string().nullish(),
});
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { z } from '../z.ts';

const sentimentResponseSchema = z.object({
sentiment: z.string(),
comment_ids: z.array(z.number().int()),
comment_ids: z.array(z.number().int()).nullish(),
});

export const sentimentsResponseSchema = z.object({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ export const translationResponseSchema = z.array(
overview: z.string().nullish(),
tagline: z.string().nullish(),
language: z.string(),
country: z.string(),
country: z.string().nullish(),
}),
);
21 changes: 14 additions & 7 deletions projects/api/src/contracts/calendars/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,15 @@ import type { z } from '../_internal/z.ts';
import { calendarRequestParamsSchema } from './schema/request/calendarParamsSchema.ts';
import { calendarMovieResponseSchema } from './schema/response/calendarMovieResponseSchema.ts';
import { calendarShowResponseSchema } from './schema/response/calendarShowListResponseSchema.ts';
import { ignoreQuerySchema } from "../_internal/request/ignoreQuerySchema.ts";

export const calendars = builder.router({
shows: {
method: 'GET',
path: '/:target/shows/:start_date/:days',
query: extendedMediaQuerySchema
.merge(mediaFilterParamsSchema),
.merge(mediaFilterParamsSchema)
.merge(ignoreQuerySchema),
pathParams: calendarRequestParamsSchema,
responses: {
200: calendarShowResponseSchema.array(),
Expand All @@ -21,7 +23,8 @@ export const calendars = builder.router({
method: 'GET',
path: '/:target/shows/new/:start_date/:days',
query: extendedMediaQuerySchema
.merge(mediaFilterParamsSchema),
.merge(mediaFilterParamsSchema)
.merge(ignoreQuerySchema),
pathParams: calendarRequestParamsSchema,
responses: {
200: calendarShowResponseSchema.array(),
Expand All @@ -31,7 +34,8 @@ export const calendars = builder.router({
method: 'GET',
path: '/:target/shows/premieres/:start_date/:days',
query: extendedMediaQuerySchema
.merge(mediaFilterParamsSchema),
.merge(mediaFilterParamsSchema)
.merge(ignoreQuerySchema),
pathParams: calendarRequestParamsSchema,
responses: {
200: calendarShowResponseSchema.array(),
Expand All @@ -41,7 +45,8 @@ export const calendars = builder.router({
method: 'GET',
path: '/:target/shows/finales/:start_date/:days',
query: extendedMediaQuerySchema
.merge(mediaFilterParamsSchema),
.merge(mediaFilterParamsSchema)
.merge(ignoreQuerySchema),
pathParams: calendarRequestParamsSchema,
responses: {
200: calendarShowResponseSchema.array(),
Expand All @@ -51,7 +56,8 @@ export const calendars = builder.router({
method: 'GET',
path: '/:target/movies/:start_date/:days',
query: extendedMediaQuerySchema
.merge(mediaFilterParamsSchema),
.merge(mediaFilterParamsSchema)
.merge(ignoreQuerySchema),
pathParams: calendarRequestParamsSchema,
responses: {
200: calendarMovieResponseSchema.array(),
Expand All @@ -61,13 +67,14 @@ export const calendars = builder.router({
method: 'GET',
path: '/:target/dvd/:start_date/:days',
query: extendedMediaQuerySchema
.merge(mediaFilterParamsSchema),
.merge(mediaFilterParamsSchema)
.merge(ignoreQuerySchema),
pathParams: calendarRequestParamsSchema,
responses: {
200: calendarMovieResponseSchema.array(),
},
},
}, { pathPrefix: '/calendars' });
}, {pathPrefix: '/calendars'});

export { calendarRequestParamsSchema };
export type CalendarParams = z.infer<typeof calendarRequestParamsSchema>;
Expand Down
8 changes: 7 additions & 1 deletion projects/api/src/contracts/lists/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,16 @@ import { listResponseSchema } from '../_internal/response/listResponseSchema.ts'
import { z } from '../_internal/z.ts';
import { listReportRequestSchema } from './schema/listReportRequestSchema.ts';
import { prominentListResponseSchema } from './schema/prominentListResponseSchema.ts';
import { ignoreQuerySchema } from "../_internal/request/ignoreQuerySchema.ts";

const ENTITY_LEVEL = builder.router({
summary: {
path: '',
method: 'GET',
pathParams: idParamsSchema,
query: extendedProfileQuerySchema
.merge(mediaFilterParamsSchema),
.merge(mediaFilterParamsSchema)
.merge(ignoreQuerySchema),
responses: {
200: listResponseSchema,
},
Expand All @@ -38,6 +40,7 @@ const ENTITY_LEVEL = builder.router({
query: extendedMediaQuerySchema
.merge(sortQuerySchema)
.merge(mediaFilterParamsSchema)
.merge(ignoreQuerySchema)
.merge(pageQuerySchema)
.merge(limitlessQuerySchema),
responses: {
Expand All @@ -51,6 +54,7 @@ const ENTITY_LEVEL = builder.router({
query: extendedMediaQuerySchema
.merge(sortQuerySchema)
.merge(mediaFilterParamsSchema)
.merge(ignoreQuerySchema)
.merge(pageQuerySchema)
.merge(limitlessQuerySchema),
responses: {
Expand All @@ -64,6 +68,7 @@ const ENTITY_LEVEL = builder.router({
query: extendedMediaQuerySchema
.merge(sortQuerySchema)
.merge(mediaFilterParamsSchema)
.merge(ignoreQuerySchema)
.merge(pageQuerySchema)
.merge(limitlessQuerySchema),
responses: {
Expand All @@ -77,6 +82,7 @@ const ENTITY_LEVEL = builder.router({
query: extendedMediaQuerySchema
.merge(sortQuerySchema)
.merge(mediaFilterParamsSchema)
.merge(ignoreQuerySchema)
.merge(pageQuerySchema)
.merge(limitlessQuerySchema),
responses: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export const peopleShowCreditsResponseSchema = z.object({
cast: z.array(
z.object({
show: showResponseSchema,
episode_count: z.number().int(),
episode_count: z.number().int().nullish(),
series_regular: z.boolean(),
}).merge(characterResponseSchema),
).nullish(),
Expand All @@ -17,7 +17,7 @@ export const peopleShowCreditsResponseSchema = z.object({
z.array(
z.object({
show: showResponseSchema,
episode_count: z.number().int(),
episode_count: z.number().int().nullish(),
}).merge(jobsResponseSchema),
),
).nullish(),
Expand Down
3 changes: 3 additions & 0 deletions projects/api/src/contracts/sync/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import { movieProgressResponseSchema } from './schema/response/movieProgressResp
import { ratingsSyncResponseSchema } from './schema/response/ratingsResponseSchema.ts';
import { removeRatingsResponseSchema } from './schema/response/removeRatingsResponseSchema.ts';
import { upNextResponseSchema } from './schema/response/upNextResponseSchema.ts';
import { mediaFilterParamsSchema } from "../_internal/request/mediaFilterParamsSchema.ts";

const progress = builder.router({
upNext: {
Expand All @@ -53,6 +54,7 @@ const progress = builder.router({
method: 'GET',
path: '/progress/up_next_nitro',
query: pageQuerySchema
.merge(mediaFilterParamsSchema)
.merge(sortQuerySchema)
.merge(upNextIntentQuerySchema),
responses: {
Expand All @@ -64,6 +66,7 @@ const progress = builder.router({
method: 'GET',
path: '/playback/movies',
query: extendedQuerySchemaFactory<['full', 'images', 'available_on']>()
.merge(mediaFilterParamsSchema)
.merge(pageQuerySchema)
.merge(progressParamsSchema),
responses: {
Expand Down
4 changes: 4 additions & 0 deletions projects/api/src/contracts/users/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ import { requests } from './subroutes/requests.ts';
import { userLists } from './subroutes/userLists.ts';
import { watched } from './subroutes/watched.ts';
import { watchlist } from './subroutes/watchlist.ts';
import { mediaFilterParamsSchema } from "../_internal/request/mediaFilterParamsSchema.ts";
import { ignoreQuerySchema } from "../_internal/request/ignoreQuerySchema.ts";

const GLOBAL_LEVEL = builder.router({
settings: {
Expand Down Expand Up @@ -139,6 +141,8 @@ const ENTITY_LEVEL = builder.router({
method: 'GET',
pathParams: profileParamsSchema.merge(socialActivityParamsSchema),
query: extendedMediaQuerySchema
.merge(mediaFilterParamsSchema)
.merge(ignoreQuerySchema)
.merge(pageQuerySchema),
responses: {
200: socialActivityResponseSchema.array(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ import { typedShowResponseSchema } from '../../../_internal/response/showRespons
import { z } from '../../../_internal/z.ts';

export const hiddenShowResponseSchema = z.object({
hidden_at: z.string().datetime(),
hidden_at: z.string().datetime().nullish(),
}).merge(typedShowResponseSchema);
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ const activitySchema = z.object({
activity_at: z.string().datetime(),
action: asString(z.enum(['scrobble', 'watch', 'checkin'])),
user: profileResponseSchema,
user_rating: z.number().int().nullish(),
});

const socialEpisodeResponseSchema = z.object({
Expand Down
4 changes: 4 additions & 0 deletions projects/api/src/contracts/users/subroutes/history.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { activityHistoryResponseSchema } from '../schema/response/activityHistor
import { episodeActivityHistoryResponseSchema } from '../schema/response/episodeActivityHistoryResponseSchema.ts';
import { movieActivityHistoryResponseSchema } from '../schema/response/movieActivityHistoryResponseSchema.ts';
import { showActivityHistoryResponseSchema } from '../schema/response/showActivityHistoryResponseSchema.ts';
import { mediaFilterParamsSchema } from "../../_internal/request/mediaFilterParamsSchema.ts";

export const history = builder.router({
all: {
Expand All @@ -27,6 +28,7 @@ export const history = builder.router({
method: 'GET',
pathParams: profileParamsSchema,
query: extendedMediaQuerySchema
.merge(mediaFilterParamsSchema)
.merge(dateRangeParamsSchema)
.merge(pageQuerySchema),
responses: {
Expand All @@ -38,6 +40,7 @@ export const history = builder.router({
method: 'GET',
pathParams: profileParamsSchema,
query: extendedMediaQuerySchema
.merge(mediaFilterParamsSchema)
.merge(dateRangeParamsSchema)
.merge(pageQuerySchema),
responses: {
Expand All @@ -49,6 +52,7 @@ export const history = builder.router({
method: 'GET',
pathParams: profileParamsSchema,
query: extendedMediaQuerySchema
.merge(mediaFilterParamsSchema)
.merge(dateRangeParamsSchema)
.merge(pageQuerySchema),
responses: {
Expand Down
5 changes: 5 additions & 0 deletions projects/api/src/contracts/users/subroutes/userLists.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import { profileParamsSchema } from '../schema/request/profileParamsSchema.ts';
import { reorderRequestSchema } from '../schema/request/reorderRequestSchema.ts';
import { reorderListResponseSchema } from '../schema/response/reorderListResponseSchema.ts';
import { reorderListsResponseSchema } from '../schema/response/reorderListsResponseSchema.ts';
import { ignoreQuerySchema } from "../../_internal/request/ignoreQuerySchema.ts";

const list = builder.router({
summary: {
Expand Down Expand Up @@ -63,6 +64,7 @@ const list = builder.router({
query: extendedMediaQuerySchema
.merge(sortQuerySchema)
.merge(mediaFilterParamsSchema)
.merge(ignoreQuerySchema)
.merge(pageQuerySchema)
.merge(limitlessQuerySchema),
responses: {
Expand All @@ -76,6 +78,7 @@ const list = builder.router({
query: extendedMediaQuerySchema
.merge(sortQuerySchema)
.merge(mediaFilterParamsSchema)
.merge(ignoreQuerySchema)
.merge(pageQuerySchema)
.merge(limitlessQuerySchema),
responses: {
Expand All @@ -90,6 +93,7 @@ const list = builder.router({
query: extendedMediaQuerySchema
.merge(sortQuerySchema)
.merge(mediaFilterParamsSchema)
.merge(ignoreQuerySchema)
.merge(pageQuerySchema)
.merge(limitlessQuerySchema),
responses: {
Expand All @@ -104,6 +108,7 @@ const list = builder.router({
query: extendedMediaQuerySchema
.merge(sortQuerySchema)
.merge(mediaFilterParamsSchema)
.merge(ignoreQuerySchema)
.merge(pageQuerySchema)
.merge(limitlessQuerySchema),
responses: {
Expand Down
Loading