Skip to main content

specmock_core/
contract.rs

1//! Shared contract-level enums and metadata used across protocol runtimes.
2
3use serde::{Deserialize, Serialize};
4
5/// Supported protocols in the runtime.
6#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
7#[serde(rename_all = "snake_case")]
8pub enum Protocol {
9    /// HTTP REST from OpenAPI.
10    Http,
11    /// WebSocket from AsyncAPI.
12    WebSocket,
13    /// gRPC from protobuf.
14    Grpc,
15}
16
17/// Validation direction.
18#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
19#[serde(rename_all = "snake_case")]
20pub enum ValidationDirection {
21    /// Incoming request/message.
22    Request,
23    /// Outgoing response/message.
24    Response,
25}
26
27/// Runtime mode.
28#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
29#[serde(rename_all = "snake_case")]
30pub enum MockMode {
31    /// Return mocked responses.
32    #[default]
33    Mock,
34    /// Forward to upstream and validate upstream responses.
35    Proxy,
36}