pub struct Service {
pub abort_timeout: Option<u64>,
pub documentation: Option<String>,
pub enable_lazy_state: Option<bool>,
pub handlers: Vec<Handler>,
pub idempotency_retention: Option<u64>,
pub inactivity_timeout: Option<u64>,
pub ingress_private: Option<bool>,
pub journal_retention: Option<u64>,
pub metadata: HashMap<String, String>,
pub name: ServiceName,
pub ty: ServiceType,
}
Expand description
Service
JSON schema
{
"title": "Service",
"type": "object",
"required": [
"handlers",
"name",
"ty"
],
"properties": {
"abortTimeout": {
"description": "Abort timeout duration, expressed in milliseconds.",
"type": "integer",
"minimum": 0.0
},
"documentation": {
"description": "Documentation for this service definition. No format is enforced, but generally Markdown is assumed.",
"type": "string"
},
"enableLazyState": {
"description": "If true, lazy state is enabled.",
"type": "boolean"
},
"handlers": {
"type": "array",
"items": {
"title": "Handler",
"type": "object",
"required": [
"name"
],
"properties": {
"abortTimeout": {
"description": "Abort timeout duration, expressed in milliseconds.",
"type": "integer",
"minimum": 0.0
},
"documentation": {
"description": "Documentation for this handler definition. No format is enforced, but generally Markdown is assumed.",
"type": "string"
},
"enableLazyState": {
"description": "If true, lazy state is enabled.",
"type": "boolean"
},
"idempotencyRetention": {
"description": "Idempotency retention duration, expressed in milliseconds. This is NOT VALID when HandlerType == WORKFLOW",
"type": "integer",
"minimum": 0.0
},
"inactivityTimeout": {
"description": "Inactivity timeout duration, expressed in milliseconds.",
"type": "integer",
"minimum": 0.0
},
"ingressPrivate": {
"description": "If true, the service cannot be invoked from the HTTP nor Kafka ingress.",
"type": "boolean"
},
"input": {
"title": "InputPayload",
"description": "Description of an input payload. This will be used by Restate to validate incoming requests.",
"type": "object",
"properties": {
"contentType": {
"description": "Content type of the input. It can accept wildcards, in the same format as the 'Accept' header. When this field is unset, it implies emptiness, meaning no content-type/body is expected.",
"type": "string"
},
"jsonSchema": {},
"required": {
"description": "If true, a body MUST be sent with a content-type, even if the body length is zero.",
"type": "boolean"
}
},
"additionalProperties": false
},
"journalRetention": {
"description": "Journal retention duration, expressed in milliseconds.",
"type": "integer",
"minimum": 0.0
},
"metadata": {
"description": "Custom metadata of this handler definition. This metadata is shown on the Admin API when querying the service/handler definition.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"name": {
"type": "string",
"pattern": "^([a-zA-Z]|_[a-zA-Z0-9])[a-zA-Z0-9_]*$"
},
"output": {
"title": "OutputPayload",
"description": "Description of an output payload.",
"type": "object",
"properties": {
"contentType": {
"description": "Content type set on output. This will be used by Restate to set the output content type at the ingress.",
"type": "string"
},
"jsonSchema": {},
"setContentTypeIfEmpty": {
"description": "If true, the specified content-type is set even if the output is empty.",
"type": "boolean"
}
},
"additionalProperties": false
},
"ty": {
"title": "HandlerType",
"description": "If unspecified, defaults to EXCLUSIVE for Virtual Object or WORKFLOW for Workflows. This should be unset for Services.",
"enum": [
"WORKFLOW",
"EXCLUSIVE",
"SHARED"
]
},
"workflowCompletionRetention": {
"description": "Workflow completion retention duration, expressed in milliseconds. This is valid ONLY when HandlerType == WORKFLOW",
"type": "integer",
"minimum": 0.0
}
},
"additionalProperties": false
}
},
"idempotencyRetention": {
"description": "Idempotency retention duration, expressed in milliseconds. When ServiceType == WORKFLOW, this option will be applied only to the shared handlers. See workflowCompletionRetention for more details.",
"type": "integer",
"minimum": 0.0
},
"inactivityTimeout": {
"description": "Inactivity timeout duration, expressed in milliseconds.",
"type": "integer",
"minimum": 0.0
},
"ingressPrivate": {
"description": "If true, the service cannot be invoked from the HTTP nor Kafka ingress.",
"type": "boolean"
},
"journalRetention": {
"description": "Journal retention duration, expressed in milliseconds.",
"type": "integer",
"minimum": 0.0
},
"metadata": {
"description": "Custom metadata of this service definition. This metadata is shown on the Admin API when querying the service definition.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"name": {
"type": "string",
"pattern": "^([a-zA-Z]|_[a-zA-Z0-9])[a-zA-Z0-9._-]*$"
},
"ty": {
"title": "ServiceType",
"enum": [
"VIRTUAL_OBJECT",
"SERVICE",
"WORKFLOW"
]
}
},
"additionalProperties": false
}
Fields§
§abort_timeout: Option<u64>
Abort timeout duration, expressed in milliseconds.
documentation: Option<String>
Documentation for this service definition. No format is enforced, but generally Markdown is assumed.
enable_lazy_state: Option<bool>
If true, lazy state is enabled.
handlers: Vec<Handler>
§idempotency_retention: Option<u64>
Idempotency retention duration, expressed in milliseconds. When ServiceType == WORKFLOW, this option will be applied only to the shared handlers. See workflowCompletionRetention for more details.
inactivity_timeout: Option<u64>
Inactivity timeout duration, expressed in milliseconds.
ingress_private: Option<bool>
If true, the service cannot be invoked from the HTTP nor Kafka ingress.
journal_retention: Option<u64>
Journal retention duration, expressed in milliseconds.
metadata: HashMap<String, String>
Custom metadata of this service definition. This metadata is shown on the Admin API when querying the service definition.
name: ServiceName
§ty: ServiceType
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Service
impl<'de> Deserialize<'de> for Service
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for Service
impl RefUnwindSafe for Service
impl Send for Service
impl Sync for Service
impl Unpin for Service
impl UnwindSafe for Service
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more