use serde::{Deserialize, Serialize}; /// Payload is the JSON body posted to Origin's public service-checkin /// endpoint. Field names and requiredness mirror /// `POST /api/public/service-checkin` as documented in /// `origin/doc/service-checkin.md`: `type`, `version`, `name`, and /// `unique_install_id` are required; everything else is optional and, when /// omitted, does not overwrite existing instance data on Origin's side. #[derive(Debug, Clone, Default, Serialize)] pub struct Payload { #[serde(rename = "type")] pub type_: String, pub version: String, pub name: String, pub unique_install_id: String, #[serde(skip_serializing_if = "Option::is_none")] pub site: Option, #[serde(skip_serializing_if = "Option::is_none")] pub environment: Option, #[serde(skip_serializing_if = "Option::is_none")] pub database_type: Option, #[serde(skip_serializing_if = "Option::is_none")] pub database_name: Option, #[serde(skip_serializing_if = "Option::is_none")] pub app_type: Option, #[serde(skip_serializing_if = "Option::is_none")] pub hostname: Option, #[serde(skip_serializing_if = "Option::is_none")] pub port: Option, #[serde(skip_serializing_if = "Option::is_none")] pub base_url: Option, #[serde(skip_serializing_if = "Option::is_none")] pub internal_url: Option, #[serde(skip_serializing_if = "Option::is_none")] pub container_id: Option, #[serde(skip_serializing_if = "Option::is_none")] pub orchestrator: Option, #[serde(skip_serializing_if = "Option::is_none")] pub description: Option, } /// CheckinResponse is returned by Origin after a successful check-in. #[derive(Debug, Clone, Deserialize)] pub struct CheckinResponse { pub success: bool, pub service_instance_id: i64, pub unique_install_id: String, pub status: String, pub pinged_at: String, }