Add new Swagger Doc for the pusher
This commit is contained in:
@@ -1,46 +1,69 @@
|
||||
import { z } from "zod";
|
||||
import {extendApi} from "@anatine/zod-openapi";
|
||||
|
||||
/*
|
||||
* WARNING! The original file is in /messages/JsonMessages.
|
||||
* All other files are automatically copied from this file on container startup / build
|
||||
*/
|
||||
|
||||
export const isErrorApiErrorData = z.object({
|
||||
export const isErrorApiErrorData = extendApi(
|
||||
// @ts-ignore
|
||||
type: z.literal("error"),
|
||||
code: z.string(),
|
||||
title: z.string(),
|
||||
subtitle: z.string(),
|
||||
details: z.string(),
|
||||
image: z.string(),
|
||||
});
|
||||
z.object({
|
||||
type: z.literal("error"),
|
||||
code: extendApi(z.string(), {description: 'The system code of an error, it must be in SCREAMING_SNAKE_CASE.', example: 'ROOM_NOT_FOUND'}),
|
||||
title: extendApi(z.string(), {description: "Big title displayed on the error screen.", example: "ERROR"}),
|
||||
subtitle: extendApi(z.string(), {description: "Subtitle displayed to let the user know what is the main subject of the error.", example: "The room was not found."}),
|
||||
details: extendApi(z.string(), {description: "Some others details on what the user can do if he don't understand the error.", example: "If you would like more information, you can contact the administrator or us at example@workadventu.re."}),
|
||||
image: extendApi(z.string(), {description: "The URL of the image displayed just under the logo in the error screen.", example: 'https://example.com/error.png'}),
|
||||
}),
|
||||
{
|
||||
description: 'This is an error that can be returned by the API, its type must be equal to "error".\n If such an error is caught, an error screen will be displayed.',
|
||||
}
|
||||
);
|
||||
|
||||
export const isErrorApiRetryData = z.object({
|
||||
type: z.literal("retry"),
|
||||
code: z.string(),
|
||||
title: z.string(),
|
||||
subtitle: z.string(),
|
||||
details: z.string(),
|
||||
image: z.string(),
|
||||
buttonTitle: z.optional(z.nullable(z.string())),
|
||||
timeToRetry: z.number(),
|
||||
canRetryManual: z.boolean(),
|
||||
});
|
||||
export const isErrorApiRetryData = extendApi(
|
||||
z.object({
|
||||
type: z.literal("retry"),
|
||||
code: extendApi(z.string(), {description: 'The system code of an error, it must be in SCREAMING_SNAKE_CASE. \n It will not be displayed to the user.', example: 'WORLD_FULL'}),
|
||||
title: extendApi(z.string(), {description: "Big title displayed on the error screen.", example: "ERROR"}),
|
||||
subtitle: extendApi(z.string(), {description: "Subtitle displayed to let the user know what is the main subject of the error.", example: "Too successful, your WorkAdventure world is full!"}),
|
||||
details: extendApi(z.string(), {description: "Some others details on what the user can do if he don't understand the error.", example: "New automatic attempt in 30 seconds"}),
|
||||
image: extendApi(z.string(), {description: "The URL of the image displayed just under the logo in the waiting screen.", example: 'https://example.com/wait.png'}),
|
||||
buttonTitle: extendApi(z.optional(z.nullable(z.string())), {description: "If this is not defined the button and the parameter canRetryManual is set to true, the button will be not displayed at all.", example: "Retry"}),
|
||||
timeToRetry: extendApi(z.number(), {description: "This is the time (in millisecond) between the next auto refresh of the page.", example: 30_000}),
|
||||
canRetryManual: extendApi(z.boolean(), {description: "This boolean show or hide the button to let the user refresh manually the current page.", example: true}),
|
||||
}),
|
||||
{
|
||||
description: 'This is an error that can be returned by the API, its type must be equal to "retry".\n' +
|
||||
'If such an error is caught, a waiting screen will be displayed.',
|
||||
}
|
||||
);
|
||||
|
||||
export const isErrorApiRedirectData = z.object({
|
||||
type: z.literal("redirect"),
|
||||
urlToRedirect: z.string(),
|
||||
});
|
||||
export const isErrorApiRedirectData = extendApi(
|
||||
z.object({
|
||||
type: z.literal("redirect"),
|
||||
urlToRedirect: extendApi(z.string(), {description: 'A URL specified to redirect the user onto it directly', example: '/contact-us'}),
|
||||
}),
|
||||
{
|
||||
description: 'This is an error that can be returned by the API, its type must be equal to "redirect".\n' +
|
||||
'If such an error is caught, the user will be automatically redirected to urlToRedirect.',
|
||||
}
|
||||
);
|
||||
|
||||
export const isErrorApiUnauthorizedData = z.object({
|
||||
type: z.literal("unauthorized"),
|
||||
code: z.string(),
|
||||
title: z.string(),
|
||||
subtitle: z.string(),
|
||||
details: z.string(),
|
||||
image: z.string(),
|
||||
buttonTitle: z.optional(z.nullable(z.string())),
|
||||
});
|
||||
export const isErrorApiUnauthorizedData = extendApi(
|
||||
z.object({
|
||||
type: z.literal("unauthorized"),
|
||||
code: extendApi(z.string(), {description: "This is the system code of an error, it must be in SCREAMING_SNAKE_CASE.", example: "USER_ACCESS_FORBIDDEN"}),
|
||||
title: extendApi(z.string(), {description: "Big title displayed on the error screen.", example: "ERROR"}),
|
||||
subtitle: extendApi(z.string(), {description: "Subtitle displayed to let the user know what is the main subject of the error.", example: "You can't access this place."}),
|
||||
details: extendApi(z.string(), {description: "Some others details on what the user can do if he don't understand the error.", example: "If you would like more information, you can contact the administrator or us at example@workadventu.re."}),
|
||||
image: extendApi(z.string(), {description: "The URL of the image displayed just under the logo in the error screen.", example: 'https://example.com/error.png'}),
|
||||
buttonTitle: extendApi(z.optional(z.nullable(z.string())), {description: "If this is not defined the button to logout will be not displayed.", example: "Log out"}),
|
||||
}),
|
||||
{
|
||||
description: 'This is an error that can be returned by the API, its type must be equal to "unauthorized".\n' +
|
||||
'If such an error is caught, an error screen will be displayed with a button to let him logout and go to login page.',
|
||||
});
|
||||
|
||||
export const isErrorApiData = z.discriminatedUnion("type", [
|
||||
isErrorApiErrorData,
|
||||
|
||||
Reference in New Issue
Block a user