45 lines
890 B
Plaintext
45 lines
890 B
Plaintext
import "@typespec/http";
|
|
|
|
using Http;
|
|
@service(#{ title: "Widget Service" })
|
|
namespace DemoService;
|
|
|
|
model Widget {
|
|
id: string;
|
|
weight: int32;
|
|
color: "red" | "blue";
|
|
}
|
|
|
|
model WidgetList {
|
|
items: Widget[];
|
|
}
|
|
|
|
@error
|
|
model Error {
|
|
code: int32;
|
|
message: string;
|
|
}
|
|
|
|
model AnalyzeResult {
|
|
id: string;
|
|
analysis: string;
|
|
}
|
|
|
|
@route("/widgets")
|
|
@tag("Widgets")
|
|
interface Widgets {
|
|
/** List widgets */
|
|
@get list(): WidgetList | Error;
|
|
/** Read widgets */
|
|
@get read(@path id: string): Widget | Error;
|
|
/** Create a widget */
|
|
@post create(@body body: Widget): Widget | Error;
|
|
/** Update a widget */
|
|
@patch update(@path id: string, @body body: MergePatchUpdate<Widget>): Widget | Error;
|
|
/** Delete a widget */
|
|
@delete delete(@path id: string): void | Error;
|
|
|
|
/** Analyze a widget */
|
|
@route("{id}/analyze") @post analyze(@path id: string): AnalyzeResult | Error;
|
|
}
|