File tree Expand file tree Collapse file tree
ee/server/apps/communication/endpoints
packages/rest-typings/src/v1 Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -311,19 +311,27 @@ type PromiseOrValue<T> = T | Promise<T>;
311311
312312type InferResult < TResult > = TResult extends ValidateFunction < infer T > ? T : TResult ;
313313
314+ type InferNon200Result < T > =
315+ InferResult < T > extends {
316+ success : false ;
317+ error ?: infer TError ;
318+ }
319+ ? TError
320+ : never ;
321+
314322type Results < TResponse extends TypedOptions [ 'response' ] > = {
315323 [ K in keyof TResponse ] : K extends SuccessStatusCodes
316324 ? SuccessResult < InferResult < TResponse [ 200 ] > , K >
317325 : K extends RedirectStatusCodes
318- ? RedirectResult < InferResult < TResponse [ 300 ] > , K >
326+ ? RedirectResult < InferNon200Result < TResponse [ 300 ] > , K >
319327 : K extends 400
320328 ? FailureResult < InferResult < TResponse [ 400 ] > >
321329 : K extends 401
322- ? UnauthorizedResult < InferResult < TResponse [ 401 ] > >
330+ ? UnauthorizedResult < InferNon200Result < TResponse [ 401 ] > >
323331 : K extends 403
324- ? ForbiddenResult < InferResult < TResponse [ 403 ] > >
332+ ? ForbiddenResult < InferNon200Result < TResponse [ 403 ] > >
325333 : K extends 404
326- ? NotFoundResult < InferResult < TResponse [ 404 ] > >
334+ ? NotFoundResult < InferNon200Result < TResponse [ 404 ] > >
327335 : K extends ErrorStatusCodes
328336 ? InternalError < InferResult < TResponse [ 500 ] > , K >
329337 : never ;
Original file line number Diff line number Diff line change @@ -3,7 +3,10 @@ import { ajv } from '@rocket.chat/rest-typings';
33import type { AppsRestApi } from '../rest' ;
44
55// This might be a good candidate for a default validator function exported by @rocket .chat/rest-typings
6- const errorResponse = ajv . compile < unknown > ( {
6+ const errorResponse = ajv . compile < {
7+ success : false ;
8+ error : string ;
9+ } > ( {
710 additionalProperties : false ,
811 type : 'object' ,
912 properties : {
Original file line number Diff line number Diff line change @@ -8,7 +8,10 @@ import type { AppsRestApi } from '../rest';
88import { makeAppLogsQuery } from './lib/makeAppLogsQuery' ;
99import { APIClass } from '../../../../../app/api/server/ApiClass' ;
1010
11- const isErrorResponse = ajv . compile ( {
11+ const isErrorResponse = ajv . compile < {
12+ success : false ;
13+ error : string ;
14+ } > ( {
1215 type : 'object' ,
1316 properties : {
1417 success : {
Original file line number Diff line number Diff line change @@ -90,3 +90,19 @@ const ForbiddenErrorResponseSchema = {
9090} ;
9191
9292export const validateForbiddenErrorResponse = ajv . compile < ForbiddenErrorResponse > ( ForbiddenErrorResponseSchema ) ;
93+
94+ type NotFoundErrorResponse = {
95+ success : false ;
96+ error : string ;
97+ } ;
98+
99+ const NotFoundErrorResponseSchema = {
100+ type : 'object' ,
101+ properties : {
102+ success : { type : 'boolean' , enum : [ false ] } ,
103+ error : { type : 'string' } ,
104+ } ,
105+ required : [ 'success' , 'error' ] ,
106+ } ;
107+
108+ export const validateNotFoundErrorResponse = ajv . compile < NotFoundErrorResponse > ( NotFoundErrorResponseSchema ) ;
You can’t perform that action at this time.
0 commit comments