Skip to content

Commit 2c3bcf3

Browse files
authored
feat(httpapi): add v2 public error schemas (#28297)
1 parent d9d43d8 commit 2c3bcf3

1 file changed

Lines changed: 122 additions & 0 deletions

File tree

  • packages/opencode/src/server/routes/instance/httpapi

packages/opencode/src/server/routes/instance/httpapi/errors.ts

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,127 @@
11
import { Schema } from "effect"
22

3+
export class InvalidRequestError extends Schema.TaggedErrorClass<InvalidRequestError>()(
4+
"InvalidRequestError",
5+
{
6+
message: Schema.String,
7+
kind: Schema.optional(Schema.String),
8+
field: Schema.optional(Schema.String),
9+
},
10+
{ httpApiStatus: 400 },
11+
) {}
12+
13+
export class UnauthorizedError extends Schema.TaggedErrorClass<UnauthorizedError>()(
14+
"UnauthorizedError",
15+
{ message: Schema.String },
16+
{ httpApiStatus: 401 },
17+
) {}
18+
19+
export class ForbiddenError extends Schema.TaggedErrorClass<ForbiddenError>()(
20+
"ForbiddenError",
21+
{ message: Schema.String },
22+
{ httpApiStatus: 403 },
23+
) {}
24+
25+
export class ConflictError extends Schema.TaggedErrorClass<ConflictError>()(
26+
"ConflictError",
27+
{
28+
message: Schema.String,
29+
resource: Schema.optional(Schema.String),
30+
},
31+
{ httpApiStatus: 409 },
32+
) {}
33+
34+
export class UpstreamError extends Schema.TaggedErrorClass<UpstreamError>()(
35+
"UpstreamError",
36+
{
37+
message: Schema.String,
38+
service: Schema.optional(Schema.String),
39+
status: Schema.optional(Schema.Number),
40+
},
41+
{ httpApiStatus: 502 },
42+
) {}
43+
44+
export class ServiceUnavailableError extends Schema.TaggedErrorClass<ServiceUnavailableError>()(
45+
"ServiceUnavailableError",
46+
{
47+
message: Schema.String,
48+
service: Schema.optional(Schema.String),
49+
},
50+
{ httpApiStatus: 503 },
51+
) {}
52+
53+
export class TimeoutError extends Schema.TaggedErrorClass<TimeoutError>()(
54+
"TimeoutError",
55+
{
56+
message: Schema.String,
57+
operation: Schema.optional(Schema.String),
58+
},
59+
{ httpApiStatus: 504 },
60+
) {}
61+
62+
export class UnknownError extends Schema.TaggedErrorClass<UnknownError>()(
63+
"UnknownError",
64+
{
65+
message: Schema.String,
66+
ref: Schema.optional(Schema.String),
67+
},
68+
{ httpApiStatus: 500 },
69+
) {}
70+
71+
export class ProviderNotFoundError extends Schema.TaggedErrorClass<ProviderNotFoundError>()(
72+
"ProviderNotFoundError",
73+
{
74+
providerID: Schema.String,
75+
message: Schema.String,
76+
},
77+
{ httpApiStatus: 404 },
78+
) {}
79+
80+
export class ModelNotFoundError extends Schema.TaggedErrorClass<ModelNotFoundError>()(
81+
"ModelNotFoundError",
82+
{
83+
providerID: Schema.String,
84+
modelID: Schema.String,
85+
suggestions: Schema.Array(Schema.String),
86+
message: Schema.String,
87+
},
88+
{ httpApiStatus: 404 },
89+
) {}
90+
91+
export class SessionNotFoundError extends Schema.TaggedErrorClass<SessionNotFoundError>()(
92+
"SessionNotFoundError",
93+
{
94+
sessionID: Schema.String,
95+
message: Schema.String,
96+
},
97+
{ httpApiStatus: 404 },
98+
) {}
99+
100+
export class MessageNotFoundError extends Schema.TaggedErrorClass<MessageNotFoundError>()(
101+
"MessageNotFoundError",
102+
{
103+
sessionID: Schema.String,
104+
messageID: Schema.String,
105+
message: Schema.String,
106+
},
107+
{ httpApiStatus: 404 },
108+
) {}
109+
110+
export class InvalidCursorError extends Schema.TaggedErrorClass<InvalidCursorError>()(
111+
"InvalidCursorError",
112+
{ message: Schema.String },
113+
{ httpApiStatus: 400 },
114+
) {}
115+
116+
export class SessionBusyError extends Schema.TaggedErrorClass<SessionBusyError>()(
117+
"SessionBusyError",
118+
{
119+
sessionID: Schema.String,
120+
message: Schema.String,
121+
},
122+
{ httpApiStatus: 409 },
123+
) {}
124+
3125
export class ApiNotFoundError extends Schema.ErrorClass<ApiNotFoundError>("NotFoundError")(
4126
{
5127
name: Schema.Literal("NotFoundError"),

0 commit comments

Comments
 (0)