Skip to content

Commit 5026f41

Browse files
authored
impr: add custom error codes to contracts and api doc (@fehmer) (monkeytypegame#6976)
1 parent 74e4dd7 commit 5026f41

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

packages/contracts/src/results.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { z } from "zod";
33
import {
44
CommonResponses,
55
meta,
6+
MonkeyClientError,
67
MonkeyResponseSchema,
78
responseWithData,
89
} from "./util/api";
@@ -131,6 +132,13 @@ export const resultsContract = c.router(
131132
body: AddResultRequestSchema.strict(),
132133
responses: {
133134
200: AddResultResponseSchema,
135+
460: MonkeyClientError.describe("Test too short"),
136+
461: MonkeyClientError.describe("Result hash invalid"),
137+
462: MonkeyClientError.describe("Result spacing invalid"),
138+
463: MonkeyClientError.describe("Result data invalid"),
139+
464: MonkeyClientError.describe("Missing key data"),
140+
465: MonkeyClientError.describe("Bot detected"),
141+
466: MonkeyClientError.describe("Duplicate result"),
134142
},
135143
metadata: meta({
136144
rateLimit: "resultsAdd",

packages/contracts/src/util/api.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,10 @@ export const CommonResponses = {
120120
403: MonkeyClientError.describe("Operation not permitted"),
121121
422: MonkeyValidationErrorSchema.describe("Request validation failed"),
122122
429: MonkeyClientError.describe("Rate limit exceeded"),
123+
470: MonkeyClientError.describe("Invalid ApeKey"),
124+
471: MonkeyClientError.describe("ApeKey is inactive"),
125+
472: MonkeyClientError.describe("ApeKey is malformed"),
126+
479: MonkeyClientError.describe("ApeKey rate limit exceeded"),
123127
500: MonkeyServerError.describe("Generic server error"),
124128
503: MonkeyServerError.describe(
125129
"Endpoint disabled or server is under maintenance"

0 commit comments

Comments
 (0)