Skip to main content

ahp_types/
messages.rs

1// Generated from types/*.ts — do not edit.
2//
3// Regenerate with: npm run generate:rust
4
5#![allow(missing_docs)]
6
7#[allow(unused_imports)]
8use crate::common::{AnyValue, JsonObject, StringOrMarkdown, Uri};
9#[allow(unused_imports)]
10use serde::{Deserialize, Serialize};
11#[allow(unused_imports)]
12use serde_repr::{Deserialize_repr, Serialize_repr};
13
14use crate::actions::ActionEnvelope;
15
16// ─── JSON-RPC Envelope ────────────────────────────────────────────────────
17
18/// A JSON-RPC 2.0 request (method + id).
19#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
20pub struct JsonRpcRequest {
21    pub jsonrpc: JsonRpcVersion,
22    pub id: u64,
23    pub method: String,
24    #[serde(default, skip_serializing_if = "Option::is_none")]
25    pub params: Option<AnyValue>,
26}
27
28/// A JSON-RPC 2.0 success response.
29#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
30pub struct JsonRpcSuccessResponse {
31    pub jsonrpc: JsonRpcVersion,
32    pub id: u64,
33    pub result: AnyValue,
34}
35
36/// A JSON-RPC 2.0 error response.
37#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
38pub struct JsonRpcErrorResponse {
39    pub jsonrpc: JsonRpcVersion,
40    pub id: u64,
41    pub error: JsonRpcError,
42}
43
44/// JSON-RPC 2.0 error object (`code`, `message`, optional `data`).
45#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
46pub struct JsonRpcError {
47    pub code: i32,
48    pub message: String,
49    #[serde(default, skip_serializing_if = "Option::is_none")]
50    pub data: Option<AnyValue>,
51}
52
53/// A JSON-RPC 2.0 notification (method, no id).
54#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
55pub struct JsonRpcNotification {
56    pub jsonrpc: JsonRpcVersion,
57    pub method: String,
58    #[serde(default, skip_serializing_if = "Option::is_none")]
59    pub params: Option<AnyValue>,
60}
61
62/// The sole allowed value of the `jsonrpc` field.
63#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, Default)]
64pub enum JsonRpcVersion {
65    #[default]
66    #[serde(rename = "2.0")]
67    V2,
68}
69
70/// A discriminated union over the four JSON-RPC message shapes.
71///
72/// Useful for a transport that demuxes an inbound byte stream into typed
73/// messages before routing them to the correlation and subscription
74/// machinery.
75#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
76#[serde(untagged)]
77pub enum JsonRpcMessage {
78    Request(JsonRpcRequest),
79    SuccessResponse(JsonRpcSuccessResponse),
80    ErrorResponse(JsonRpcErrorResponse),
81    Notification(JsonRpcNotification),
82}
83
84/// Params for the server → client `action` method.
85pub type ActionNotificationParams = ActionEnvelope;