diff --git a/README.md b/README.md index b6f7d0a77..3491d39a2 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,9 @@ [![GitHub issue custom search in repo](https://img.shields.io/github/issues-search/dapr/python-sdk?query=type%3Aissue%20is%3Aopen%20label%3A%22good%20first%20issue%22&label=Good%20first%20issues&style=flat&logo=github)](https://github.com/dapr/python-sdk/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) [![Discord](https://img.shields.io/discord/778680217417809931?label=Discord&style=flat&logo=discord)](http://bit.ly/dapr-discord) [![YouTube Channel Views](https://img.shields.io/youtube/channel/views/UCtpSQ9BLB_3EXdWAUQYwnRA?style=flat&label=YouTube%20views&logo=youtube)](https://youtube.com/@daprdev) + [![X (formerly Twitter) Follow](https://img.shields.io/twitter/follow/daprdev?logo=x&style=flat)](https://twitter.com/daprdev) + [Dapr](https://docs.dapr.io/concepts/overview/) is a portable, event-driven, serverless runtime for building distributed applications across cloud and edge. diff --git a/dapr/aio/clients/grpc/client.py b/dapr/aio/clients/grpc/client.py index 7bcf4a136..315c219c8 100644 --- a/dapr/aio/clients/grpc/client.py +++ b/dapr/aio/clients/grpc/client.py @@ -29,6 +29,7 @@ from google.protobuf.message import Message as GrpcMessage from google.protobuf.empty_pb2 import Empty as GrpcEmpty +from google.protobuf.any_pb2 import Any as GrpcAny import grpc.aio # type: ignore from grpc.aio import ( # type: ignore @@ -75,9 +76,12 @@ InvokeMethodRequest, BindingRequest, TransactionalStateOperation, + ConversationInput, ) from dapr.clients.grpc._response import ( BindingResponse, + ConversationResponse, + ConversationResult, DaprResponse, GetSecretResponse, GetBulkSecretResponse, @@ -1711,6 +1715,62 @@ async def purge_workflow(self, instance_id: str, workflow_component: str) -> Dap except grpc.aio.AioRpcError as err: raise DaprInternalError(err.details()) + async def converse_alpha1( + self, + name: str, + inputs: List[ConversationInput], + *, + context_id: Optional[str] = None, + parameters: Optional[Dict[str, GrpcAny]] = None, + metadata: Optional[Dict[str, str]] = None, + scrub_pii: Optional[bool] = None, + temperature: Optional[float] = None, + ) -> ConversationResponse: + """Invoke an LLM using the conversation API (Alpha). + + Args: + name: Name of the LLM component to invoke + inputs: List of conversation inputs + context_id: Optional ID for continuing an existing chat + parameters: Optional custom parameters for the request + metadata: Optional metadata for the component + scrub_pii: Optional flag to scrub PII from inputs and outputs + temperature: Optional temperature setting for the LLM to optimize for creativity or predictability + + Returns: + ConversationResponse containing the conversation results + + Raises: + DaprGrpcError: If the Dapr runtime returns an error + """ + inputs_pb = [ + api_v1.ConversationInput(content=inp.content, role=inp.role, scrubPII=inp.scrub_pii) + for inp in inputs + ] + + request = api_v1.ConversationRequest( + name=name, + inputs=inputs_pb, + contextID=context_id, + parameters=parameters or {}, + metadata=metadata or {}, + scrubPII=scrub_pii, + temperature=temperature, + ) + + try: + response = await self._stub.ConverseAlpha1(request) + + outputs = [ + ConversationResult(result=output.result, parameters=output.parameters) + for output in response.outputs + ] + + return ConversationResponse(context_id=response.contextID, outputs=outputs) + + except grpc.aio.AioRpcError as err: + raise DaprGrpcError(err) from err + async def wait(self, timeout_s: float): """Waits for sidecar to be available within the timeout. diff --git a/dapr/clients/grpc/_request.py b/dapr/clients/grpc/_request.py index 9ad291cff..570381214 100644 --- a/dapr/clients/grpc/_request.py +++ b/dapr/clients/grpc/_request.py @@ -15,6 +15,7 @@ import io from enum import Enum +from dataclasses import dataclass from typing import Dict, Optional, Union from google.protobuf.any_pb2 import Any as GrpcAny @@ -418,3 +419,12 @@ def __next__(self): self.seq += 1 return request_proto + + +@dataclass +class ConversationInput: + """A single input message for the conversation.""" + + content: str + role: Optional[str] = None + scrub_pii: Optional[bool] = None diff --git a/dapr/clients/grpc/_response.py b/dapr/clients/grpc/_response.py index 2beb1a2f5..6d6ee92a2 100644 --- a/dapr/clients/grpc/_response.py +++ b/dapr/clients/grpc/_response.py @@ -18,6 +18,7 @@ import contextlib import json import threading +from dataclasses import dataclass, field from datetime import datetime from enum import Enum from typing import ( @@ -1070,3 +1071,19 @@ class EncryptResponse(CryptoResponse[TCryptoResponse]): class DecryptResponse(CryptoResponse[TCryptoResponse]): ... + + +@dataclass +class ConversationResult: + """Result from a single conversation input.""" + + result: str + parameters: Dict[str, GrpcAny] = field(default_factory=dict) + + +@dataclass +class ConversationResponse: + """Response from the conversation API.""" + + context_id: Optional[str] + outputs: List[ConversationResult] diff --git a/dapr/clients/grpc/client.py b/dapr/clients/grpc/client.py index f7c7b8504..5a18ad057 100644 --- a/dapr/clients/grpc/client.py +++ b/dapr/clients/grpc/client.py @@ -27,6 +27,7 @@ from datetime import datetime from google.protobuf.message import Message as GrpcMessage from google.protobuf.empty_pb2 import Empty as GrpcEmpty +from google.protobuf.any_pb2 import Any as GrpcAny import grpc # type: ignore from grpc import ( # type: ignore @@ -64,6 +65,7 @@ TransactionalStateOperation, EncryptRequestIterator, DecryptRequestIterator, + ConversationInput, ) from dapr.clients.grpc._response import ( BindingResponse, @@ -88,6 +90,8 @@ EncryptResponse, DecryptResponse, TopicEventResponse, + ConversationResponse, + ConversationResult, ) @@ -1713,6 +1717,62 @@ def purge_workflow(self, instance_id: str, workflow_component: str) -> DaprRespo except RpcError as err: raise DaprInternalError(err.details()) + def converse_alpha1( + self, + name: str, + inputs: List[ConversationInput], + *, + context_id: Optional[str] = None, + parameters: Optional[Dict[str, GrpcAny]] = None, + metadata: Optional[Dict[str, str]] = None, + scrub_pii: Optional[bool] = None, + temperature: Optional[float] = None, + ) -> ConversationResponse: + """Invoke an LLM using the conversation API (Alpha). + + Args: + name: Name of the LLM component to invoke + inputs: List of conversation inputs + context_id: Optional ID for continuing an existing chat + parameters: Optional custom parameters for the request + metadata: Optional metadata for the component + scrub_pii: Optional flag to scrub PII from inputs and outputs + temperature: Optional temperature setting for the LLM to optimize for creativity or predictability + + Returns: + ConversationResponse containing the conversation results + + Raises: + DaprGrpcError: If the Dapr runtime returns an error + """ + + inputs_pb = [ + api_v1.ConversationInput(content=inp.content, role=inp.role, scrubPII=inp.scrub_pii) + for inp in inputs + ] + + request = api_v1.ConversationRequest( + name=name, + inputs=inputs_pb, + contextID=context_id, + parameters=parameters or {}, + metadata=metadata or {}, + scrubPII=scrub_pii, + temperature=temperature, + ) + + try: + response, call = self.retry_policy.run_rpc(self._stub.ConverseAlpha1.with_call, request) + + outputs = [ + ConversationResult(result=output.result, parameters=output.parameters) + for output in response.outputs + ] + + return ConversationResponse(context_id=response.contextID, outputs=outputs) + except RpcError as err: + raise DaprGrpcError(err) from err + def wait(self, timeout_s: float): """Waits for sidecar to be available within the timeout. diff --git a/dapr/clients/grpc/subscription.py b/dapr/clients/grpc/subscription.py index 6022d6184..111946b1b 100644 --- a/dapr/clients/grpc/subscription.py +++ b/dapr/clients/grpc/subscription.py @@ -84,7 +84,7 @@ def next_message(self): return SubscriptionMessage(message.event_message) except RpcError as e: # If Dapr can't be reached, wait until it's ready and reconnect the stream - if e.code() == StatusCode.UNAVAILABLE: + if e.code() == StatusCode.UNAVAILABLE or e.code() == StatusCode.UNKNOWN: print( f'gRPC error while reading from stream: {e.details()}, Status Code: {e.code()}' ) diff --git a/dapr/proto/common/v1/common_pb2.pyi b/dapr/proto/common/v1/common_pb2.pyi index 0b23ce54d..b018cd8b4 100644 --- a/dapr/proto/common/v1/common_pb2.pyi +++ b/dapr/proto/common/v1/common_pb2.pyi @@ -13,6 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ + import builtins import collections.abc import google.protobuf.any_pb2 @@ -30,7 +31,7 @@ else: DESCRIPTOR: google.protobuf.descriptor.FileDescriptor -@typing_extensions.final +@typing.final class HTTPExtension(google.protobuf.message.Message): """HTTPExtension includes HTTP verb and querystring when Dapr runtime delivers HTTP content. @@ -89,11 +90,11 @@ class HTTPExtension(google.protobuf.message.Message): verb: global___HTTPExtension.Verb.ValueType = ..., querystring: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["querystring", b"querystring", "verb", b"verb"]) -> None: ... + def ClearField(self, field_name: typing.Literal["querystring", b"querystring", "verb", b"verb"]) -> None: ... global___HTTPExtension = HTTPExtension -@typing_extensions.final +@typing.final class InvokeRequest(google.protobuf.message.Message): """InvokeRequest is the message to invoke a method with the data. This message is used in InvokeService of Dapr gRPC Service and OnInvoke @@ -108,17 +109,18 @@ class InvokeRequest(google.protobuf.message.Message): HTTP_EXTENSION_FIELD_NUMBER: builtins.int method: builtins.str """Required. method is a method name which will be invoked by caller.""" - @property - def data(self) -> google.protobuf.any_pb2.Any: - """Required in unary RPCs. Bytes value or Protobuf message which caller sent. - Dapr treats Any.value as bytes type if Any.type_url is unset. - """ content_type: builtins.str """The type of data content. This field is required if data delivers http request body Otherwise, this is optional. """ + @property + def data(self) -> google.protobuf.any_pb2.Any: + """Required in unary RPCs. Bytes value or Protobuf message which caller sent. + Dapr treats Any.value as bytes type if Any.type_url is unset. + """ + @property def http_extension(self) -> global___HTTPExtension: """HTTP specific fields if request conveys http-compatible request. @@ -126,6 +128,7 @@ class InvokeRequest(google.protobuf.message.Message): This field is required for http-compatible request. Otherwise, this field is optional. """ + def __init__( self, *, @@ -134,12 +137,12 @@ class InvokeRequest(google.protobuf.message.Message): content_type: builtins.str = ..., http_extension: global___HTTPExtension | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["data", b"data", "http_extension", b"http_extension"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["content_type", b"content_type", "data", b"data", "http_extension", b"http_extension", "method", b"method"]) -> None: ... + def HasField(self, field_name: typing.Literal["data", b"data", "http_extension", b"http_extension"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["content_type", b"content_type", "data", b"data", "http_extension", b"http_extension", "method", b"method"]) -> None: ... global___InvokeRequest = InvokeRequest -@typing_extensions.final +@typing.final class InvokeResponse(google.protobuf.message.Message): """InvokeResponse is the response message including data and its content type from app callback. @@ -151,23 +154,24 @@ class InvokeResponse(google.protobuf.message.Message): DATA_FIELD_NUMBER: builtins.int CONTENT_TYPE_FIELD_NUMBER: builtins.int + content_type: builtins.str + """Required. The type of data content.""" @property def data(self) -> google.protobuf.any_pb2.Any: """Required in unary RPCs. The content body of InvokeService response.""" - content_type: builtins.str - """Required. The type of data content.""" + def __init__( self, *, data: google.protobuf.any_pb2.Any | None = ..., content_type: builtins.str = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["data", b"data"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["content_type", b"content_type", "data", b"data"]) -> None: ... + def HasField(self, field_name: typing.Literal["data", b"data"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["content_type", b"content_type", "data", b"data"]) -> None: ... global___InvokeResponse = InvokeResponse -@typing_extensions.final +@typing.final class StreamPayload(google.protobuf.message.Message): """Chunk of data sent in a streaming request or response. This is used in requests including InternalInvokeRequestStream. @@ -191,17 +195,17 @@ class StreamPayload(google.protobuf.message.Message): data: builtins.bytes = ..., seq: builtins.int = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["data", b"data", "seq", b"seq"]) -> None: ... + def ClearField(self, field_name: typing.Literal["data", b"data", "seq", b"seq"]) -> None: ... global___StreamPayload = StreamPayload -@typing_extensions.final +@typing.final class StateItem(google.protobuf.message.Message): """StateItem represents state key, value, and additional options to save state.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -215,7 +219,7 @@ class StateItem(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... KEY_FIELD_NUMBER: builtins.int VALUE_FIELD_NUMBER: builtins.int @@ -231,12 +235,15 @@ class StateItem(google.protobuf.message.Message): """The entity tag which represents the specific version of data. The exact ETag format is defined by the corresponding data store. """ + @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """The metadata which will be passed to state store component.""" + @property def options(self) -> global___StateOptions: """Options for concurrency and consistency to save the state.""" + def __init__( self, *, @@ -246,12 +253,12 @@ class StateItem(google.protobuf.message.Message): metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., options: global___StateOptions | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["etag", b"etag", "options", b"options"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["etag", b"etag", "key", b"key", "metadata", b"metadata", "options", b"options", "value", b"value"]) -> None: ... + def HasField(self, field_name: typing.Literal["etag", b"etag", "options", b"options"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["etag", b"etag", "key", b"key", "metadata", b"metadata", "options", b"options", "value", b"value"]) -> None: ... global___StateItem = StateItem -@typing_extensions.final +@typing.final class Etag(google.protobuf.message.Message): """Etag represents a state item version""" @@ -265,11 +272,11 @@ class Etag(google.protobuf.message.Message): *, value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["value", b"value"]) -> None: ... global___Etag = Etag -@typing_extensions.final +@typing.final class StateOptions(google.protobuf.message.Message): """StateOptions configures concurrency and consistency for state operations""" @@ -319,17 +326,17 @@ class StateOptions(google.protobuf.message.Message): concurrency: global___StateOptions.StateConcurrency.ValueType = ..., consistency: global___StateOptions.StateConsistency.ValueType = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["concurrency", b"concurrency", "consistency", b"consistency"]) -> None: ... + def ClearField(self, field_name: typing.Literal["concurrency", b"concurrency", "consistency", b"consistency"]) -> None: ... global___StateOptions = StateOptions -@typing_extensions.final +@typing.final class ConfigurationItem(google.protobuf.message.Message): """ConfigurationItem represents all the configuration with its name(key).""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -343,7 +350,7 @@ class ConfigurationItem(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... VALUE_FIELD_NUMBER: builtins.int VERSION_FIELD_NUMBER: builtins.int @@ -355,6 +362,7 @@ class ConfigurationItem(google.protobuf.message.Message): @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """the metadata which will be passed to/from configuration store component.""" + def __init__( self, *, @@ -362,6 +370,6 @@ class ConfigurationItem(google.protobuf.message.Message): version: builtins.str = ..., metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["metadata", b"metadata", "value", b"value", "version", b"version"]) -> None: ... + def ClearField(self, field_name: typing.Literal["metadata", b"metadata", "value", b"value", "version", b"version"]) -> None: ... global___ConfigurationItem = ConfigurationItem diff --git a/dapr/proto/runtime/v1/appcallback_pb2.pyi b/dapr/proto/runtime/v1/appcallback_pb2.pyi index b302559fe..6c12dc572 100644 --- a/dapr/proto/runtime/v1/appcallback_pb2.pyi +++ b/dapr/proto/runtime/v1/appcallback_pb2.pyi @@ -13,6 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ + import builtins import collections.abc import dapr.proto.common.v1.common_pb2 @@ -32,7 +33,7 @@ else: DESCRIPTOR: google.protobuf.descriptor.FileDescriptor -@typing_extensions.final +@typing.final class JobEventRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -43,9 +44,6 @@ class JobEventRequest(google.protobuf.message.Message): HTTP_EXTENSION_FIELD_NUMBER: builtins.int name: builtins.str """Job name.""" - @property - def data(self) -> google.protobuf.any_pb2.Any: - """Job data to be sent back to app.""" method: builtins.str """Required. method is a method name which will be invoked by caller.""" content_type: builtins.str @@ -54,6 +52,10 @@ class JobEventRequest(google.protobuf.message.Message): This field is required if data delivers http request body Otherwise, this is optional. """ + @property + def data(self) -> google.protobuf.any_pb2.Any: + """Job data to be sent back to app.""" + @property def http_extension(self) -> dapr.proto.common.v1.common_pb2.HTTPExtension: """HTTP specific fields if request conveys http-compatible request. @@ -61,6 +63,7 @@ class JobEventRequest(google.protobuf.message.Message): This field is required for http-compatible request. Otherwise, this field is optional. """ + def __init__( self, *, @@ -70,12 +73,12 @@ class JobEventRequest(google.protobuf.message.Message): content_type: builtins.str = ..., http_extension: dapr.proto.common.v1.common_pb2.HTTPExtension | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["data", b"data", "http_extension", b"http_extension"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["content_type", b"content_type", "data", b"data", "http_extension", b"http_extension", "method", b"method", "name", b"name"]) -> None: ... + def HasField(self, field_name: typing.Literal["data", b"data", "http_extension", b"http_extension"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["content_type", b"content_type", "data", b"data", "http_extension", b"http_extension", "method", b"method", "name", b"name"]) -> None: ... global___JobEventRequest = JobEventRequest -@typing_extensions.final +@typing.final class JobEventResponse(google.protobuf.message.Message): """JobEventResponse is the response from the app when a job is triggered.""" @@ -87,7 +90,7 @@ class JobEventResponse(google.protobuf.message.Message): global___JobEventResponse = JobEventResponse -@typing_extensions.final +@typing.final class TopicEventRequest(google.protobuf.message.Message): """TopicEventRequest message is compatible with CloudEvent spec v1.0 https://github.com/cloudevents/spec/blob/v1.0/spec.md @@ -136,6 +139,7 @@ class TopicEventRequest(google.protobuf.message.Message): @property def extensions(self) -> google.protobuf.struct_pb2.Struct: """The map of additional custom properties to be sent to the app. These are considered to be cloud event extensions.""" + def __init__( self, *, @@ -150,12 +154,12 @@ class TopicEventRequest(google.protobuf.message.Message): path: builtins.str = ..., extensions: google.protobuf.struct_pb2.Struct | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["extensions", b"extensions"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["data", b"data", "data_content_type", b"data_content_type", "extensions", b"extensions", "id", b"id", "path", b"path", "pubsub_name", b"pubsub_name", "source", b"source", "spec_version", b"spec_version", "topic", b"topic", "type", b"type"]) -> None: ... + def HasField(self, field_name: typing.Literal["extensions", b"extensions"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["data", b"data", "data_content_type", b"data_content_type", "extensions", b"extensions", "id", b"id", "path", b"path", "pubsub_name", b"pubsub_name", "source", b"source", "spec_version", b"spec_version", "topic", b"topic", "type", b"type"]) -> None: ... global___TopicEventRequest = TopicEventRequest -@typing_extensions.final +@typing.final class TopicEventResponse(google.protobuf.message.Message): """TopicEventResponse is response from app on published message""" @@ -192,11 +196,11 @@ class TopicEventResponse(google.protobuf.message.Message): *, status: global___TopicEventResponse.TopicEventResponseStatus.ValueType = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["status", b"status"]) -> None: ... + def ClearField(self, field_name: typing.Literal["status", b"status"]) -> None: ... global___TopicEventResponse = TopicEventResponse -@typing_extensions.final +@typing.final class TopicEventCERequest(google.protobuf.message.Message): """TopicEventCERequest message is compatible with CloudEvent spec v1.0""" @@ -224,6 +228,7 @@ class TopicEventCERequest(google.protobuf.message.Message): @property def extensions(self) -> google.protobuf.struct_pb2.Struct: """Custom attributes which includes cloud event extensions.""" + def __init__( self, *, @@ -235,18 +240,18 @@ class TopicEventCERequest(google.protobuf.message.Message): data: builtins.bytes = ..., extensions: google.protobuf.struct_pb2.Struct | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["extensions", b"extensions"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["data", b"data", "data_content_type", b"data_content_type", "extensions", b"extensions", "id", b"id", "source", b"source", "spec_version", b"spec_version", "type", b"type"]) -> None: ... + def HasField(self, field_name: typing.Literal["extensions", b"extensions"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["data", b"data", "data_content_type", b"data_content_type", "extensions", b"extensions", "id", b"id", "source", b"source", "spec_version", b"spec_version", "type", b"type"]) -> None: ... global___TopicEventCERequest = TopicEventCERequest -@typing_extensions.final +@typing.final class TopicEventBulkRequestEntry(google.protobuf.message.Message): """TopicEventBulkRequestEntry represents a single message inside a bulk request""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -260,7 +265,7 @@ class TopicEventBulkRequestEntry(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... ENTRY_ID_FIELD_NUMBER: builtins.int BYTES_FIELD_NUMBER: builtins.int @@ -270,13 +275,14 @@ class TopicEventBulkRequestEntry(google.protobuf.message.Message): entry_id: builtins.str """Unique identifier for the message.""" bytes: builtins.bytes - @property - def cloud_event(self) -> global___TopicEventCERequest: ... content_type: builtins.str """content type of the event contained.""" @property + def cloud_event(self) -> global___TopicEventCERequest: ... + @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """The metadata associated with the event.""" + def __init__( self, *, @@ -286,19 +292,19 @@ class TopicEventBulkRequestEntry(google.protobuf.message.Message): content_type: builtins.str = ..., metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["bytes", b"bytes", "cloud_event", b"cloud_event", "event", b"event"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["bytes", b"bytes", "cloud_event", b"cloud_event", "content_type", b"content_type", "entry_id", b"entry_id", "event", b"event", "metadata", b"metadata"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["event", b"event"]) -> typing_extensions.Literal["bytes", "cloud_event"] | None: ... + def HasField(self, field_name: typing.Literal["bytes", b"bytes", "cloud_event", b"cloud_event", "event", b"event"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["bytes", b"bytes", "cloud_event", b"cloud_event", "content_type", b"content_type", "entry_id", b"entry_id", "event", b"event", "metadata", b"metadata"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["event", b"event"]) -> typing.Literal["bytes", "cloud_event"] | None: ... global___TopicEventBulkRequestEntry = TopicEventBulkRequestEntry -@typing_extensions.final +@typing.final class TopicEventBulkRequest(google.protobuf.message.Message): """TopicEventBulkRequest represents request for bulk message""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -312,7 +318,7 @@ class TopicEventBulkRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... ID_FIELD_NUMBER: builtins.int ENTRIES_FIELD_NUMBER: builtins.int @@ -323,12 +329,6 @@ class TopicEventBulkRequest(google.protobuf.message.Message): PATH_FIELD_NUMBER: builtins.int id: builtins.str """Unique identifier for the bulk request.""" - @property - def entries(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TopicEventBulkRequestEntry]: - """The list of items inside this bulk request.""" - @property - def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: - """The metadata associated with the this bulk request.""" topic: builtins.str """The pubsub topic which publisher sent to.""" pubsub_name: builtins.str @@ -339,6 +339,14 @@ class TopicEventBulkRequest(google.protobuf.message.Message): """The matching path from TopicSubscription/routes (if specified) for this event. This value is used by OnTopicEvent to "switch" inside the handler. """ + @property + def entries(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TopicEventBulkRequestEntry]: + """The list of items inside this bulk request.""" + + @property + def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + """The metadata associated with the this bulk request.""" + def __init__( self, *, @@ -350,11 +358,11 @@ class TopicEventBulkRequest(google.protobuf.message.Message): type: builtins.str = ..., path: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["entries", b"entries", "id", b"id", "metadata", b"metadata", "path", b"path", "pubsub_name", b"pubsub_name", "topic", b"topic", "type", b"type"]) -> None: ... + def ClearField(self, field_name: typing.Literal["entries", b"entries", "id", b"id", "metadata", b"metadata", "path", b"path", "pubsub_name", b"pubsub_name", "topic", b"topic", "type", b"type"]) -> None: ... global___TopicEventBulkRequest = TopicEventBulkRequest -@typing_extensions.final +@typing.final class TopicEventBulkResponseEntry(google.protobuf.message.Message): """TopicEventBulkResponseEntry Represents single response, as part of TopicEventBulkResponse, to be sent by subscibed App for the corresponding single message during bulk subscribe @@ -374,11 +382,11 @@ class TopicEventBulkResponseEntry(google.protobuf.message.Message): entry_id: builtins.str = ..., status: global___TopicEventResponse.TopicEventResponseStatus.ValueType = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["entry_id", b"entry_id", "status", b"status"]) -> None: ... + def ClearField(self, field_name: typing.Literal["entry_id", b"entry_id", "status", b"status"]) -> None: ... global___TopicEventBulkResponseEntry = TopicEventBulkResponseEntry -@typing_extensions.final +@typing.final class TopicEventBulkResponse(google.protobuf.message.Message): """AppBulkResponse is response from app on published message""" @@ -388,22 +396,23 @@ class TopicEventBulkResponse(google.protobuf.message.Message): @property def statuses(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TopicEventBulkResponseEntry]: """The list of all responses for the bulk request.""" + def __init__( self, *, statuses: collections.abc.Iterable[global___TopicEventBulkResponseEntry] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["statuses", b"statuses"]) -> None: ... + def ClearField(self, field_name: typing.Literal["statuses", b"statuses"]) -> None: ... global___TopicEventBulkResponse = TopicEventBulkResponse -@typing_extensions.final +@typing.final class BindingEventRequest(google.protobuf.message.Message): """BindingEventRequest represents input bindings event.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -417,7 +426,7 @@ class BindingEventRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... NAME_FIELD_NUMBER: builtins.int DATA_FIELD_NUMBER: builtins.int @@ -429,6 +438,7 @@ class BindingEventRequest(google.protobuf.message.Message): @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """The metadata set by the input binging components.""" + def __init__( self, *, @@ -436,11 +446,11 @@ class BindingEventRequest(google.protobuf.message.Message): data: builtins.bytes = ..., metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["data", b"data", "metadata", b"metadata", "name", b"name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["data", b"data", "metadata", b"metadata", "name", b"name"]) -> None: ... global___BindingEventRequest = BindingEventRequest -@typing_extensions.final +@typing.final class BindingEventResponse(google.protobuf.message.Message): """BindingEventResponse includes operations to save state or send data to output bindings optionally. @@ -474,18 +484,20 @@ class BindingEventResponse(google.protobuf.message.Message): CONCURRENCY_FIELD_NUMBER: builtins.int store_name: builtins.str """The name of state store where states are saved.""" - @property - def states(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[dapr.proto.common.v1.common_pb2.StateItem]: - """The state key values which will be stored in store_name.""" - @property - def to(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: - """The list of output bindings.""" data: builtins.bytes """The content which will be sent to "to" output bindings.""" concurrency: global___BindingEventResponse.BindingEventConcurrency.ValueType """The concurrency of output bindings to send data to "to" output bindings list. The default is SEQUENTIAL. """ + @property + def states(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[dapr.proto.common.v1.common_pb2.StateItem]: + """The state key values which will be stored in store_name.""" + + @property + def to(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + """The list of output bindings.""" + def __init__( self, *, @@ -495,11 +507,11 @@ class BindingEventResponse(google.protobuf.message.Message): data: builtins.bytes = ..., concurrency: global___BindingEventResponse.BindingEventConcurrency.ValueType = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["concurrency", b"concurrency", "data", b"data", "states", b"states", "store_name", b"store_name", "to", b"to"]) -> None: ... + def ClearField(self, field_name: typing.Literal["concurrency", b"concurrency", "data", b"data", "states", b"states", "store_name", b"store_name", "to", b"to"]) -> None: ... global___BindingEventResponse = BindingEventResponse -@typing_extensions.final +@typing.final class ListTopicSubscriptionsResponse(google.protobuf.message.Message): """ListTopicSubscriptionsResponse is the message including the list of the subscribing topics.""" @@ -509,22 +521,23 @@ class ListTopicSubscriptionsResponse(google.protobuf.message.Message): @property def subscriptions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TopicSubscription]: """The list of topics.""" + def __init__( self, *, subscriptions: collections.abc.Iterable[global___TopicSubscription] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["subscriptions", b"subscriptions"]) -> None: ... + def ClearField(self, field_name: typing.Literal["subscriptions", b"subscriptions"]) -> None: ... global___ListTopicSubscriptionsResponse = ListTopicSubscriptionsResponse -@typing_extensions.final +@typing.final class TopicSubscription(google.protobuf.message.Message): """TopicSubscription represents topic and metadata.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -538,7 +551,7 @@ class TopicSubscription(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... PUBSUB_NAME_FIELD_NUMBER: builtins.int TOPIC_FIELD_NUMBER: builtins.int @@ -550,19 +563,22 @@ class TopicSubscription(google.protobuf.message.Message): """Required. The name of the pubsub containing the topic below to subscribe to.""" topic: builtins.str """Required. The name of topic which will be subscribed""" + dead_letter_topic: builtins.str + """The optional dead letter queue for this topic to send events to.""" @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """The optional properties used for this topic's subscription e.g. session id""" + @property def routes(self) -> global___TopicRoutes: """The optional routing rules to match against. In the gRPC interface, OnTopicEvent is still invoked but the matching path is sent in the TopicEventRequest. """ - dead_letter_topic: builtins.str - """The optional dead letter queue for this topic to send events to.""" + @property def bulk_subscribe(self) -> global___BulkSubscribeConfig: """The optional bulk subscribe settings for this topic.""" + def __init__( self, *, @@ -573,33 +589,34 @@ class TopicSubscription(google.protobuf.message.Message): dead_letter_topic: builtins.str = ..., bulk_subscribe: global___BulkSubscribeConfig | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["bulk_subscribe", b"bulk_subscribe", "routes", b"routes"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["bulk_subscribe", b"bulk_subscribe", "dead_letter_topic", b"dead_letter_topic", "metadata", b"metadata", "pubsub_name", b"pubsub_name", "routes", b"routes", "topic", b"topic"]) -> None: ... + def HasField(self, field_name: typing.Literal["bulk_subscribe", b"bulk_subscribe", "routes", b"routes"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["bulk_subscribe", b"bulk_subscribe", "dead_letter_topic", b"dead_letter_topic", "metadata", b"metadata", "pubsub_name", b"pubsub_name", "routes", b"routes", "topic", b"topic"]) -> None: ... global___TopicSubscription = TopicSubscription -@typing_extensions.final +@typing.final class TopicRoutes(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor RULES_FIELD_NUMBER: builtins.int DEFAULT_FIELD_NUMBER: builtins.int + default: builtins.str + """The default path for this topic.""" @property def rules(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TopicRule]: """The list of rules for this topic.""" - default: builtins.str - """The default path for this topic.""" + def __init__( self, *, rules: collections.abc.Iterable[global___TopicRule] | None = ..., default: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["default", b"default", "rules", b"rules"]) -> None: ... + def ClearField(self, field_name: typing.Literal["default", b"default", "rules", b"rules"]) -> None: ... global___TopicRoutes = TopicRoutes -@typing_extensions.final +@typing.final class TopicRule(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -621,11 +638,11 @@ class TopicRule(google.protobuf.message.Message): match: builtins.str = ..., path: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["match", b"match", "path", b"path"]) -> None: ... + def ClearField(self, field_name: typing.Literal["match", b"match", "path", b"path"]) -> None: ... global___TopicRule = TopicRule -@typing_extensions.final +@typing.final class BulkSubscribeConfig(google.protobuf.message.Message): """BulkSubscribeConfig is the message to pass settings for bulk subscribe""" @@ -647,11 +664,11 @@ class BulkSubscribeConfig(google.protobuf.message.Message): max_messages_count: builtins.int = ..., max_await_duration_ms: builtins.int = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["enabled", b"enabled", "max_await_duration_ms", b"max_await_duration_ms", "max_messages_count", b"max_messages_count"]) -> None: ... + def ClearField(self, field_name: typing.Literal["enabled", b"enabled", "max_await_duration_ms", b"max_await_duration_ms", "max_messages_count", b"max_messages_count"]) -> None: ... global___BulkSubscribeConfig = BulkSubscribeConfig -@typing_extensions.final +@typing.final class ListInputBindingsResponse(google.protobuf.message.Message): """ListInputBindingsResponse is the message including the list of input bindings.""" @@ -661,16 +678,17 @@ class ListInputBindingsResponse(google.protobuf.message.Message): @property def bindings(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """The list of input bindings.""" + def __init__( self, *, bindings: collections.abc.Iterable[builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["bindings", b"bindings"]) -> None: ... + def ClearField(self, field_name: typing.Literal["bindings", b"bindings"]) -> None: ... global___ListInputBindingsResponse = ListInputBindingsResponse -@typing_extensions.final +@typing.final class HealthCheckResponse(google.protobuf.message.Message): """HealthCheckResponse is the message with the response to the health check. This message is currently empty as used as placeholder. diff --git a/dapr/proto/runtime/v1/dapr_pb2.py b/dapr/proto/runtime/v1/dapr_pb2.py index 7c1520de0..53b664fdd 100644 --- a/dapr/proto/runtime/v1/dapr_pb2.py +++ b/dapr/proto/runtime/v1/dapr_pb2.py @@ -19,7 +19,7 @@ from dapr.proto.runtime.v1 import appcallback_pb2 as dapr_dot_proto_dot_runtime_dot_v1_dot_appcallback__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n dapr/proto/runtime/v1/dapr.proto\x12\x15\x64\x61pr.proto.runtime.v1\x1a\x19google/protobuf/any.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a!dapr/proto/common/v1/common.proto\x1a\'dapr/proto/runtime/v1/appcallback.proto\"X\n\x14InvokeServiceRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x34\n\x07message\x18\x03 \x01(\x0b\x32#.dapr.proto.common.v1.InvokeRequest\"\xf5\x01\n\x0fGetStateRequest\x12\x12\n\nstore_name\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12H\n\x0b\x63onsistency\x18\x03 \x01(\x0e\x32\x33.dapr.proto.common.v1.StateOptions.StateConsistency\x12\x46\n\x08metadata\x18\x04 \x03(\x0b\x32\x34.dapr.proto.runtime.v1.GetStateRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xc9\x01\n\x13GetBulkStateRequest\x12\x12\n\nstore_name\x18\x01 \x01(\t\x12\x0c\n\x04keys\x18\x02 \x03(\t\x12\x13\n\x0bparallelism\x18\x03 \x01(\x05\x12J\n\x08metadata\x18\x04 \x03(\x0b\x32\x38.dapr.proto.runtime.v1.GetBulkStateRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"K\n\x14GetBulkStateResponse\x12\x33\n\x05items\x18\x01 \x03(\x0b\x32$.dapr.proto.runtime.v1.BulkStateItem\"\xbe\x01\n\rBulkStateItem\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12\x0c\n\x04\x65tag\x18\x03 \x01(\t\x12\r\n\x05\x65rror\x18\x04 \x01(\t\x12\x44\n\x08metadata\x18\x05 \x03(\x0b\x32\x32.dapr.proto.runtime.v1.BulkStateItem.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xa8\x01\n\x10GetStateResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\x0c\n\x04\x65tag\x18\x02 \x01(\t\x12G\n\x08metadata\x18\x03 \x03(\x0b\x32\x35.dapr.proto.runtime.v1.GetStateResponse.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x90\x02\n\x12\x44\x65leteStateRequest\x12\x12\n\nstore_name\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12(\n\x04\x65tag\x18\x03 \x01(\x0b\x32\x1a.dapr.proto.common.v1.Etag\x12\x33\n\x07options\x18\x04 \x01(\x0b\x32\".dapr.proto.common.v1.StateOptions\x12I\n\x08metadata\x18\x05 \x03(\x0b\x32\x37.dapr.proto.runtime.v1.DeleteStateRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"]\n\x16\x44\x65leteBulkStateRequest\x12\x12\n\nstore_name\x18\x01 \x01(\t\x12/\n\x06states\x18\x02 \x03(\x0b\x32\x1f.dapr.proto.common.v1.StateItem\"W\n\x10SaveStateRequest\x12\x12\n\nstore_name\x18\x01 \x01(\t\x12/\n\x06states\x18\x02 \x03(\x0b\x32\x1f.dapr.proto.common.v1.StateItem\"\xbc\x01\n\x11QueryStateRequest\x12\x1d\n\nstore_name\x18\x01 \x01(\tR\tstoreName\x12\r\n\x05query\x18\x02 \x01(\t\x12H\n\x08metadata\x18\x03 \x03(\x0b\x32\x36.dapr.proto.runtime.v1.QueryStateRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"H\n\x0eQueryStateItem\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12\x0c\n\x04\x65tag\x18\x03 \x01(\t\x12\r\n\x05\x65rror\x18\x04 \x01(\t\"\xd7\x01\n\x12QueryStateResponse\x12\x36\n\x07results\x18\x01 \x03(\x0b\x32%.dapr.proto.runtime.v1.QueryStateItem\x12\r\n\x05token\x18\x02 \x01(\t\x12I\n\x08metadata\x18\x03 \x03(\x0b\x32\x37.dapr.proto.runtime.v1.QueryStateResponse.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xdf\x01\n\x13PublishEventRequest\x12\x13\n\x0bpubsub_name\x18\x01 \x01(\t\x12\r\n\x05topic\x18\x02 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\x12\x19\n\x11\x64\x61ta_content_type\x18\x04 \x01(\t\x12J\n\x08metadata\x18\x05 \x03(\x0b\x32\x38.dapr.proto.runtime.v1.PublishEventRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xf5\x01\n\x12\x42ulkPublishRequest\x12\x13\n\x0bpubsub_name\x18\x01 \x01(\t\x12\r\n\x05topic\x18\x02 \x01(\t\x12?\n\x07\x65ntries\x18\x03 \x03(\x0b\x32..dapr.proto.runtime.v1.BulkPublishRequestEntry\x12I\n\x08metadata\x18\x04 \x03(\x0b\x32\x37.dapr.proto.runtime.v1.BulkPublishRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xd1\x01\n\x17\x42ulkPublishRequestEntry\x12\x10\n\x08\x65ntry_id\x18\x01 \x01(\t\x12\r\n\x05\x65vent\x18\x02 \x01(\x0c\x12\x14\n\x0c\x63ontent_type\x18\x03 \x01(\t\x12N\n\x08metadata\x18\x04 \x03(\x0b\x32<.dapr.proto.runtime.v1.BulkPublishRequestEntry.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"c\n\x13\x42ulkPublishResponse\x12L\n\rfailedEntries\x18\x01 \x03(\x0b\x32\x35.dapr.proto.runtime.v1.BulkPublishResponseFailedEntry\"A\n\x1e\x42ulkPublishResponseFailedEntry\x12\x10\n\x08\x65ntry_id\x18\x01 \x01(\t\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"\x84\x02\n!SubscribeTopicEventsRequestAlpha1\x12Z\n\x0finitial_request\x18\x01 \x01(\x0b\x32?.dapr.proto.runtime.v1.SubscribeTopicEventsRequestInitialAlpha1H\x00\x12\\\n\x0f\x65vent_processed\x18\x02 \x01(\x0b\x32\x41.dapr.proto.runtime.v1.SubscribeTopicEventsRequestProcessedAlpha1H\x00\x42%\n#subscribe_topic_events_request_type\"\x96\x02\n(SubscribeTopicEventsRequestInitialAlpha1\x12\x13\n\x0bpubsub_name\x18\x01 \x01(\t\x12\r\n\x05topic\x18\x02 \x01(\t\x12_\n\x08metadata\x18\x03 \x03(\x0b\x32M.dapr.proto.runtime.v1.SubscribeTopicEventsRequestInitialAlpha1.MetadataEntry\x12\x1e\n\x11\x64\x65\x61\x64_letter_topic\x18\x04 \x01(\tH\x00\x88\x01\x01\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x14\n\x12_dead_letter_topic\"s\n*SubscribeTopicEventsRequestProcessedAlpha1\x12\n\n\x02id\x18\x01 \x01(\t\x12\x39\n\x06status\x18\x02 \x01(\x0b\x32).dapr.proto.runtime.v1.TopicEventResponse\"\xed\x01\n\"SubscribeTopicEventsResponseAlpha1\x12\\\n\x10initial_response\x18\x01 \x01(\x0b\x32@.dapr.proto.runtime.v1.SubscribeTopicEventsResponseInitialAlpha1H\x00\x12\x41\n\revent_message\x18\x02 \x01(\x0b\x32(.dapr.proto.runtime.v1.TopicEventRequestH\x00\x42&\n$subscribe_topic_events_response_type\"+\n)SubscribeTopicEventsResponseInitialAlpha1\"\xc3\x01\n\x14InvokeBindingRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12K\n\x08metadata\x18\x03 \x03(\x0b\x32\x39.dapr.proto.runtime.v1.InvokeBindingRequest.MetadataEntry\x12\x11\n\toperation\x18\x04 \x01(\t\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xa4\x01\n\x15InvokeBindingResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12L\n\x08metadata\x18\x02 \x03(\x0b\x32:.dapr.proto.runtime.v1.InvokeBindingResponse.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xb8\x01\n\x10GetSecretRequest\x12\x1d\n\nstore_name\x18\x01 \x01(\tR\tstoreName\x12\x0b\n\x03key\x18\x02 \x01(\t\x12G\n\x08metadata\x18\x03 \x03(\x0b\x32\x35.dapr.proto.runtime.v1.GetSecretRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x82\x01\n\x11GetSecretResponse\x12@\n\x04\x64\x61ta\x18\x01 \x03(\x0b\x32\x32.dapr.proto.runtime.v1.GetSecretResponse.DataEntry\x1a+\n\tDataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xb3\x01\n\x14GetBulkSecretRequest\x12\x1d\n\nstore_name\x18\x01 \x01(\tR\tstoreName\x12K\n\x08metadata\x18\x02 \x03(\x0b\x32\x39.dapr.proto.runtime.v1.GetBulkSecretRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x85\x01\n\x0eSecretResponse\x12\x43\n\x07secrets\x18\x01 \x03(\x0b\x32\x32.dapr.proto.runtime.v1.SecretResponse.SecretsEntry\x1a.\n\x0cSecretsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xb1\x01\n\x15GetBulkSecretResponse\x12\x44\n\x04\x64\x61ta\x18\x01 \x03(\x0b\x32\x36.dapr.proto.runtime.v1.GetBulkSecretResponse.DataEntry\x1aR\n\tDataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32%.dapr.proto.runtime.v1.SecretResponse:\x02\x38\x01\"f\n\x1bTransactionalStateOperation\x12\x15\n\roperationType\x18\x01 \x01(\t\x12\x30\n\x07request\x18\x02 \x01(\x0b\x32\x1f.dapr.proto.common.v1.StateItem\"\x83\x02\n\x1e\x45xecuteStateTransactionRequest\x12\x11\n\tstoreName\x18\x01 \x01(\t\x12\x46\n\noperations\x18\x02 \x03(\x0b\x32\x32.dapr.proto.runtime.v1.TransactionalStateOperation\x12U\n\x08metadata\x18\x03 \x03(\x0b\x32\x43.dapr.proto.runtime.v1.ExecuteStateTransactionRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xbb\x01\n\x19RegisterActorTimerRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x19\n\x08\x64ue_time\x18\x04 \x01(\tR\x07\x64ueTime\x12\x0e\n\x06period\x18\x05 \x01(\t\x12\x10\n\x08\x63\x61llback\x18\x06 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x07 \x01(\x0c\x12\x0b\n\x03ttl\x18\x08 \x01(\t\"e\n\x1bUnregisterActorTimerRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0c\n\x04name\x18\x03 \x01(\t\"\xac\x01\n\x1cRegisterActorReminderRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x19\n\x08\x64ue_time\x18\x04 \x01(\tR\x07\x64ueTime\x12\x0e\n\x06period\x18\x05 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x06 \x01(\x0c\x12\x0b\n\x03ttl\x18\x07 \x01(\t\"h\n\x1eUnregisterActorReminderRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0c\n\x04name\x18\x03 \x01(\t\"]\n\x14GetActorStateRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0b\n\x03key\x18\x03 \x01(\t\"\xa4\x01\n\x15GetActorStateResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12L\n\x08metadata\x18\x02 \x03(\x0b\x32:.dapr.proto.runtime.v1.GetActorStateResponse.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xac\x01\n#ExecuteActorStateTransactionRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12K\n\noperations\x18\x03 \x03(\x0b\x32\x37.dapr.proto.runtime.v1.TransactionalActorStateOperation\"\xf5\x01\n TransactionalActorStateOperation\x12\x15\n\roperationType\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12#\n\x05value\x18\x03 \x01(\x0b\x32\x14.google.protobuf.Any\x12W\n\x08metadata\x18\x04 \x03(\x0b\x32\x45.dapr.proto.runtime.v1.TransactionalActorStateOperation.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xe8\x01\n\x12InvokeActorRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0e\n\x06method\x18\x03 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x12I\n\x08metadata\x18\x05 \x03(\x0b\x32\x37.dapr.proto.runtime.v1.InvokeActorRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"#\n\x13InvokeActorResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"\x14\n\x12GetMetadataRequest\"\x9b\x06\n\x13GetMetadataResponse\x12\n\n\x02id\x18\x01 \x01(\t\x12Q\n\x13\x61\x63tive_actors_count\x18\x02 \x03(\x0b\x32(.dapr.proto.runtime.v1.ActiveActorsCountB\x02\x18\x01R\x06\x61\x63tors\x12V\n\x15registered_components\x18\x03 \x03(\x0b\x32+.dapr.proto.runtime.v1.RegisteredComponentsR\ncomponents\x12\x65\n\x11\x65xtended_metadata\x18\x04 \x03(\x0b\x32@.dapr.proto.runtime.v1.GetMetadataResponse.ExtendedMetadataEntryR\x08\x65xtended\x12O\n\rsubscriptions\x18\x05 \x03(\x0b\x32).dapr.proto.runtime.v1.PubsubSubscriptionR\rsubscriptions\x12R\n\x0ehttp_endpoints\x18\x06 \x03(\x0b\x32+.dapr.proto.runtime.v1.MetadataHTTPEndpointR\rhttpEndpoints\x12j\n\x19\x61pp_connection_properties\x18\x07 \x01(\x0b\x32..dapr.proto.runtime.v1.AppConnectionPropertiesR\x17\x61ppConnectionProperties\x12\'\n\x0fruntime_version\x18\x08 \x01(\tR\x0eruntimeVersion\x12)\n\x10\x65nabled_features\x18\t \x03(\tR\x0f\x65nabledFeatures\x12H\n\ractor_runtime\x18\n \x01(\x0b\x32#.dapr.proto.runtime.v1.ActorRuntimeR\x0c\x61\x63torRuntime\x1a\x37\n\x15\x45xtendedMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xbc\x02\n\x0c\x41\x63torRuntime\x12]\n\x0eruntime_status\x18\x01 \x01(\x0e\x32\x36.dapr.proto.runtime.v1.ActorRuntime.ActorRuntimeStatusR\rruntimeStatus\x12M\n\ractive_actors\x18\x02 \x03(\x0b\x32(.dapr.proto.runtime.v1.ActiveActorsCountR\x0c\x61\x63tiveActors\x12\x1d\n\nhost_ready\x18\x03 \x01(\x08R\thostReady\x12\x1c\n\tplacement\x18\x04 \x01(\tR\tplacement\"A\n\x12\x41\x63torRuntimeStatus\x12\x10\n\x0cINITIALIZING\x10\x00\x12\x0c\n\x08\x44ISABLED\x10\x01\x12\x0b\n\x07RUNNING\x10\x02\"0\n\x11\x41\x63tiveActorsCount\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\r\n\x05\x63ount\x18\x02 \x01(\x05\"Y\n\x14RegisteredComponents\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\x12\x14\n\x0c\x63\x61pabilities\x18\x04 \x03(\t\"*\n\x14MetadataHTTPEndpoint\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\"\xd1\x01\n\x17\x41ppConnectionProperties\x12\x0c\n\x04port\x18\x01 \x01(\x05\x12\x10\n\x08protocol\x18\x02 \x01(\t\x12\'\n\x0f\x63hannel_address\x18\x03 \x01(\tR\x0e\x63hannelAddress\x12\'\n\x0fmax_concurrency\x18\x04 \x01(\x05R\x0emaxConcurrency\x12\x44\n\x06health\x18\x05 \x01(\x0b\x32\x34.dapr.proto.runtime.v1.AppConnectionHealthProperties\"\xdc\x01\n\x1d\x41ppConnectionHealthProperties\x12*\n\x11health_check_path\x18\x01 \x01(\tR\x0fhealthCheckPath\x12\x32\n\x15health_probe_interval\x18\x02 \x01(\tR\x13healthProbeInterval\x12\x30\n\x14health_probe_timeout\x18\x03 \x01(\tR\x12healthProbeTimeout\x12)\n\x10health_threshold\x18\x04 \x01(\x05R\x0fhealthThreshold\"\x86\x03\n\x12PubsubSubscription\x12\x1f\n\x0bpubsub_name\x18\x01 \x01(\tR\npubsubname\x12\x14\n\x05topic\x18\x02 \x01(\tR\x05topic\x12S\n\x08metadata\x18\x03 \x03(\x0b\x32\x37.dapr.proto.runtime.v1.PubsubSubscription.MetadataEntryR\x08metadata\x12\x44\n\x05rules\x18\x04 \x01(\x0b\x32..dapr.proto.runtime.v1.PubsubSubscriptionRulesR\x05rules\x12*\n\x11\x64\x65\x61\x64_letter_topic\x18\x05 \x01(\tR\x0f\x64\x65\x61\x64LetterTopic\x12\x41\n\x04type\x18\x06 \x01(\x0e\x32-.dapr.proto.runtime.v1.PubsubSubscriptionTypeR\x04type\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"W\n\x17PubsubSubscriptionRules\x12<\n\x05rules\x18\x01 \x03(\x0b\x32-.dapr.proto.runtime.v1.PubsubSubscriptionRule\"5\n\x16PubsubSubscriptionRule\x12\r\n\x05match\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"0\n\x12SetMetadataRequest\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xbc\x01\n\x17GetConfigurationRequest\x12\x12\n\nstore_name\x18\x01 \x01(\t\x12\x0c\n\x04keys\x18\x02 \x03(\t\x12N\n\x08metadata\x18\x03 \x03(\x0b\x32<.dapr.proto.runtime.v1.GetConfigurationRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xbc\x01\n\x18GetConfigurationResponse\x12I\n\x05items\x18\x01 \x03(\x0b\x32:.dapr.proto.runtime.v1.GetConfigurationResponse.ItemsEntry\x1aU\n\nItemsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x36\n\x05value\x18\x02 \x01(\x0b\x32\'.dapr.proto.common.v1.ConfigurationItem:\x02\x38\x01\"\xc8\x01\n\x1dSubscribeConfigurationRequest\x12\x12\n\nstore_name\x18\x01 \x01(\t\x12\x0c\n\x04keys\x18\x02 \x03(\t\x12T\n\x08metadata\x18\x03 \x03(\x0b\x32\x42.dapr.proto.runtime.v1.SubscribeConfigurationRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"A\n\x1fUnsubscribeConfigurationRequest\x12\x12\n\nstore_name\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\t\"\xd4\x01\n\x1eSubscribeConfigurationResponse\x12\n\n\x02id\x18\x01 \x01(\t\x12O\n\x05items\x18\x02 \x03(\x0b\x32@.dapr.proto.runtime.v1.SubscribeConfigurationResponse.ItemsEntry\x1aU\n\nItemsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x36\n\x05value\x18\x02 \x01(\x0b\x32\'.dapr.proto.common.v1.ConfigurationItem:\x02\x38\x01\"?\n UnsubscribeConfigurationResponse\x12\n\n\x02ok\x18\x01 \x01(\x08\x12\x0f\n\x07message\x18\x02 \x01(\t\"\x9b\x01\n\x0eTryLockRequest\x12\x1d\n\nstore_name\x18\x01 \x01(\tR\tstoreName\x12\x1f\n\x0bresource_id\x18\x02 \x01(\tR\nresourceId\x12\x1d\n\nlock_owner\x18\x03 \x01(\tR\tlockOwner\x12*\n\x11\x65xpiry_in_seconds\x18\x04 \x01(\x05R\x0f\x65xpiryInSeconds\"\"\n\x0fTryLockResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\"n\n\rUnlockRequest\x12\x1d\n\nstore_name\x18\x01 \x01(\tR\tstoreName\x12\x1f\n\x0bresource_id\x18\x02 \x01(\tR\nresourceId\x12\x1d\n\nlock_owner\x18\x03 \x01(\tR\tlockOwner\"\xae\x01\n\x0eUnlockResponse\x12<\n\x06status\x18\x01 \x01(\x0e\x32,.dapr.proto.runtime.v1.UnlockResponse.Status\"^\n\x06Status\x12\x0b\n\x07SUCCESS\x10\x00\x12\x17\n\x13LOCK_DOES_NOT_EXIST\x10\x01\x12\x1a\n\x16LOCK_BELONGS_TO_OTHERS\x10\x02\x12\x12\n\x0eINTERNAL_ERROR\x10\x03\"\xb0\x01\n\x13SubtleGetKeyRequest\x12%\n\x0e\x63omponent_name\x18\x01 \x01(\tR\rcomponentName\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x44\n\x06\x66ormat\x18\x03 \x01(\x0e\x32\x34.dapr.proto.runtime.v1.SubtleGetKeyRequest.KeyFormat\"\x1e\n\tKeyFormat\x12\x07\n\x03PEM\x10\x00\x12\x08\n\x04JSON\x10\x01\"C\n\x14SubtleGetKeyResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x1d\n\npublic_key\x18\x02 \x01(\tR\tpublicKey\"\xb6\x01\n\x14SubtleEncryptRequest\x12%\n\x0e\x63omponent_name\x18\x01 \x01(\tR\rcomponentName\x12\x11\n\tplaintext\x18\x02 \x01(\x0c\x12\x11\n\talgorithm\x18\x03 \x01(\t\x12\x19\n\x08key_name\x18\x04 \x01(\tR\x07keyName\x12\r\n\x05nonce\x18\x05 \x01(\x0c\x12\'\n\x0f\x61ssociated_data\x18\x06 \x01(\x0cR\x0e\x61ssociatedData\"8\n\x15SubtleEncryptResponse\x12\x12\n\nciphertext\x18\x01 \x01(\x0c\x12\x0b\n\x03tag\x18\x02 \x01(\x0c\"\xc4\x01\n\x14SubtleDecryptRequest\x12%\n\x0e\x63omponent_name\x18\x01 \x01(\tR\rcomponentName\x12\x12\n\nciphertext\x18\x02 \x01(\x0c\x12\x11\n\talgorithm\x18\x03 \x01(\t\x12\x19\n\x08key_name\x18\x04 \x01(\tR\x07keyName\x12\r\n\x05nonce\x18\x05 \x01(\x0c\x12\x0b\n\x03tag\x18\x06 \x01(\x0c\x12\'\n\x0f\x61ssociated_data\x18\x07 \x01(\x0cR\x0e\x61ssociatedData\"*\n\x15SubtleDecryptResponse\x12\x11\n\tplaintext\x18\x01 \x01(\x0c\"\xc8\x01\n\x14SubtleWrapKeyRequest\x12%\n\x0e\x63omponent_name\x18\x01 \x01(\tR\rcomponentName\x12#\n\rplaintext_key\x18\x02 \x01(\x0cR\x0cplaintextKey\x12\x11\n\talgorithm\x18\x03 \x01(\t\x12\x19\n\x08key_name\x18\x04 \x01(\tR\x07keyName\x12\r\n\x05nonce\x18\x05 \x01(\x0c\x12\'\n\x0f\x61ssociated_data\x18\x06 \x01(\x0cR\x0e\x61ssociatedData\"E\n\x15SubtleWrapKeyResponse\x12\x1f\n\x0bwrapped_key\x18\x01 \x01(\x0cR\nwrappedKey\x12\x0b\n\x03tag\x18\x02 \x01(\x0c\"\xd3\x01\n\x16SubtleUnwrapKeyRequest\x12%\n\x0e\x63omponent_name\x18\x01 \x01(\tR\rcomponentName\x12\x1f\n\x0bwrapped_key\x18\x02 \x01(\x0cR\nwrappedKey\x12\x11\n\talgorithm\x18\x03 \x01(\t\x12\x19\n\x08key_name\x18\x04 \x01(\tR\x07keyName\x12\r\n\x05nonce\x18\x05 \x01(\x0c\x12\x0b\n\x03tag\x18\x06 \x01(\x0c\x12\'\n\x0f\x61ssociated_data\x18\x07 \x01(\x0cR\x0e\x61ssociatedData\">\n\x17SubtleUnwrapKeyResponse\x12#\n\rplaintext_key\x18\x01 \x01(\x0cR\x0cplaintextKey\"x\n\x11SubtleSignRequest\x12%\n\x0e\x63omponent_name\x18\x01 \x01(\tR\rcomponentName\x12\x0e\n\x06\x64igest\x18\x02 \x01(\x0c\x12\x11\n\talgorithm\x18\x03 \x01(\t\x12\x19\n\x08key_name\x18\x04 \x01(\tR\x07keyName\"\'\n\x12SubtleSignResponse\x12\x11\n\tsignature\x18\x01 \x01(\x0c\"\x8d\x01\n\x13SubtleVerifyRequest\x12%\n\x0e\x63omponent_name\x18\x01 \x01(\tR\rcomponentName\x12\x0e\n\x06\x64igest\x18\x02 \x01(\x0c\x12\x11\n\talgorithm\x18\x03 \x01(\t\x12\x19\n\x08key_name\x18\x04 \x01(\tR\x07keyName\x12\x11\n\tsignature\x18\x05 \x01(\x0c\"%\n\x14SubtleVerifyResponse\x12\r\n\x05valid\x18\x01 \x01(\x08\"\x85\x01\n\x0e\x45ncryptRequest\x12=\n\x07options\x18\x01 \x01(\x0b\x32,.dapr.proto.runtime.v1.EncryptRequestOptions\x12\x34\n\x07payload\x18\x02 \x01(\x0b\x32#.dapr.proto.common.v1.StreamPayload\"\xfe\x01\n\x15\x45ncryptRequestOptions\x12%\n\x0e\x63omponent_name\x18\x01 \x01(\tR\rcomponentName\x12\x19\n\x08key_name\x18\x02 \x01(\tR\x07keyName\x12\x1a\n\x12key_wrap_algorithm\x18\x03 \x01(\t\x12\x1e\n\x16\x64\x61ta_encryption_cipher\x18\n \x01(\t\x12\x37\n\x18omit_decryption_key_name\x18\x0b \x01(\x08R\x15omitDecryptionKeyName\x12.\n\x13\x64\x65\x63ryption_key_name\x18\x0c \x01(\tR\x11\x64\x65\x63ryptionKeyName\"G\n\x0f\x45ncryptResponse\x12\x34\n\x07payload\x18\x01 \x01(\x0b\x32#.dapr.proto.common.v1.StreamPayload\"\x85\x01\n\x0e\x44\x65\x63ryptRequest\x12=\n\x07options\x18\x01 \x01(\x0b\x32,.dapr.proto.runtime.v1.DecryptRequestOptions\x12\x34\n\x07payload\x18\x02 \x01(\x0b\x32#.dapr.proto.common.v1.StreamPayload\"Y\n\x15\x44\x65\x63ryptRequestOptions\x12%\n\x0e\x63omponent_name\x18\x01 \x01(\tR\rcomponentName\x12\x19\n\x08key_name\x18\x0c \x01(\tR\x07keyName\"G\n\x0f\x44\x65\x63ryptResponse\x12\x34\n\x07payload\x18\x01 \x01(\x0b\x32#.dapr.proto.common.v1.StreamPayload\"d\n\x12GetWorkflowRequest\x12\x1f\n\x0binstance_id\x18\x01 \x01(\tR\ninstanceID\x12-\n\x12workflow_component\x18\x02 \x01(\tR\x11workflowComponent\"\x84\x03\n\x13GetWorkflowResponse\x12\x1f\n\x0binstance_id\x18\x01 \x01(\tR\ninstanceID\x12#\n\rworkflow_name\x18\x02 \x01(\tR\x0cworkflowName\x12\x39\n\ncreated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x42\n\x0flast_updated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\rlastUpdatedAt\x12%\n\x0eruntime_status\x18\x05 \x01(\tR\rruntimeStatus\x12N\n\nproperties\x18\x06 \x03(\x0b\x32:.dapr.proto.runtime.v1.GetWorkflowResponse.PropertiesEntry\x1a\x31\n\x0fPropertiesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x95\x02\n\x14StartWorkflowRequest\x12\x1f\n\x0binstance_id\x18\x01 \x01(\tR\ninstanceID\x12-\n\x12workflow_component\x18\x02 \x01(\tR\x11workflowComponent\x12#\n\rworkflow_name\x18\x03 \x01(\tR\x0cworkflowName\x12I\n\x07options\x18\x04 \x03(\x0b\x32\x38.dapr.proto.runtime.v1.StartWorkflowRequest.OptionsEntry\x12\r\n\x05input\x18\x05 \x01(\x0c\x1a.\n\x0cOptionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"8\n\x15StartWorkflowResponse\x12\x1f\n\x0binstance_id\x18\x01 \x01(\tR\ninstanceID\"j\n\x18TerminateWorkflowRequest\x12\x1f\n\x0binstance_id\x18\x01 \x01(\tR\ninstanceID\x12-\n\x12workflow_component\x18\x02 \x01(\tR\x11workflowComponent\"f\n\x14PauseWorkflowRequest\x12\x1f\n\x0binstance_id\x18\x01 \x01(\tR\ninstanceID\x12-\n\x12workflow_component\x18\x02 \x01(\tR\x11workflowComponent\"g\n\x15ResumeWorkflowRequest\x12\x1f\n\x0binstance_id\x18\x01 \x01(\tR\ninstanceID\x12-\n\x12workflow_component\x18\x02 \x01(\tR\x11workflowComponent\"\x9e\x01\n\x19RaiseEventWorkflowRequest\x12\x1f\n\x0binstance_id\x18\x01 \x01(\tR\ninstanceID\x12-\n\x12workflow_component\x18\x02 \x01(\tR\x11workflowComponent\x12\x1d\n\nevent_name\x18\x03 \x01(\tR\teventName\x12\x12\n\nevent_data\x18\x04 \x01(\x0c\"f\n\x14PurgeWorkflowRequest\x12\x1f\n\x0binstance_id\x18\x01 \x01(\tR\ninstanceID\x12-\n\x12workflow_component\x18\x02 \x01(\tR\x11workflowComponent\"\x11\n\x0fShutdownRequest\"\xe8\x01\n\x03Job\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n\x08schedule\x18\x02 \x01(\tH\x00R\x08schedule\x88\x01\x01\x12\x1d\n\x07repeats\x18\x03 \x01(\rH\x01R\x07repeats\x88\x01\x01\x12\x1e\n\x08\x64ue_time\x18\x04 \x01(\tH\x02R\x07\x64ueTime\x88\x01\x01\x12\x15\n\x03ttl\x18\x05 \x01(\tH\x03R\x03ttl\x88\x01\x01\x12(\n\x04\x64\x61ta\x18\x06 \x01(\x0b\x32\x14.google.protobuf.AnyR\x04\x64\x61taB\x0b\n\t_scheduleB\n\n\x08_repeatsB\x0b\n\t_due_timeB\x06\n\x04_ttl\"=\n\x12ScheduleJobRequest\x12\'\n\x03job\x18\x01 \x01(\x0b\x32\x1a.dapr.proto.runtime.v1.Job\"\x15\n\x13ScheduleJobResponse\"\x1d\n\rGetJobRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"9\n\x0eGetJobResponse\x12\'\n\x03job\x18\x01 \x01(\x0b\x32\x1a.dapr.proto.runtime.v1.Job\" \n\x10\x44\x65leteJobRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"\x13\n\x11\x44\x65leteJobResponse\"\xe7\x03\n\x13\x43onversationRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x16\n\tcontextID\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x38\n\x06inputs\x18\x03 \x03(\x0b\x32(.dapr.proto.runtime.v1.ConversationInput\x12N\n\nparameters\x18\x04 \x03(\x0b\x32:.dapr.proto.runtime.v1.ConversationRequest.ParametersEntry\x12J\n\x08metadata\x18\x05 \x03(\x0b\x32\x38.dapr.proto.runtime.v1.ConversationRequest.MetadataEntry\x12\x15\n\x08scrubPII\x18\x06 \x01(\x08H\x01\x88\x01\x01\x12\x18\n\x0btemperature\x18\x07 \x01(\x01H\x02\x88\x01\x01\x1aG\n\x0fParametersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12#\n\x05value\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any:\x02\x38\x01\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0c\n\n_contextIDB\x0b\n\t_scrubPIIB\x0e\n\x0c_temperature\"d\n\x11\x43onversationInput\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\x11\n\x04role\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08scrubPII\x18\x03 \x01(\x08H\x01\x88\x01\x01\x42\x07\n\x05_roleB\x0b\n\t_scrubPII\"\xbc\x01\n\x12\x43onversationResult\x12\x0e\n\x06result\x18\x01 \x01(\t\x12M\n\nparameters\x18\x02 \x03(\x0b\x32\x39.dapr.proto.runtime.v1.ConversationResult.ParametersEntry\x1aG\n\x0fParametersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12#\n\x05value\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any:\x02\x38\x01\"x\n\x14\x43onversationResponse\x12\x16\n\tcontextID\x18\x01 \x01(\tH\x00\x88\x01\x01\x12:\n\x07outputs\x18\x02 \x03(\x0b\x32).dapr.proto.runtime.v1.ConversationResultB\x0c\n\n_contextID*W\n\x16PubsubSubscriptionType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0f\n\x0b\x44\x45\x43LARATIVE\x10\x01\x12\x10\n\x0cPROGRAMMATIC\x10\x02\x12\r\n\tSTREAMING\x10\x03\x32\xbe\x31\n\x04\x44\x61pr\x12\x64\n\rInvokeService\x12+.dapr.proto.runtime.v1.InvokeServiceRequest\x1a$.dapr.proto.common.v1.InvokeResponse\"\x00\x12]\n\x08GetState\x12&.dapr.proto.runtime.v1.GetStateRequest\x1a\'.dapr.proto.runtime.v1.GetStateResponse\"\x00\x12i\n\x0cGetBulkState\x12*.dapr.proto.runtime.v1.GetBulkStateRequest\x1a+.dapr.proto.runtime.v1.GetBulkStateResponse\"\x00\x12N\n\tSaveState\x12\'.dapr.proto.runtime.v1.SaveStateRequest\x1a\x16.google.protobuf.Empty\"\x00\x12i\n\x10QueryStateAlpha1\x12(.dapr.proto.runtime.v1.QueryStateRequest\x1a).dapr.proto.runtime.v1.QueryStateResponse\"\x00\x12R\n\x0b\x44\x65leteState\x12).dapr.proto.runtime.v1.DeleteStateRequest\x1a\x16.google.protobuf.Empty\"\x00\x12Z\n\x0f\x44\x65leteBulkState\x12-.dapr.proto.runtime.v1.DeleteBulkStateRequest\x1a\x16.google.protobuf.Empty\"\x00\x12j\n\x17\x45xecuteStateTransaction\x12\x35.dapr.proto.runtime.v1.ExecuteStateTransactionRequest\x1a\x16.google.protobuf.Empty\"\x00\x12T\n\x0cPublishEvent\x12*.dapr.proto.runtime.v1.PublishEventRequest\x1a\x16.google.protobuf.Empty\"\x00\x12q\n\x16\x42ulkPublishEventAlpha1\x12).dapr.proto.runtime.v1.BulkPublishRequest\x1a*.dapr.proto.runtime.v1.BulkPublishResponse\"\x00\x12\x97\x01\n\x1aSubscribeTopicEventsAlpha1\x12\x38.dapr.proto.runtime.v1.SubscribeTopicEventsRequestAlpha1\x1a\x39.dapr.proto.runtime.v1.SubscribeTopicEventsResponseAlpha1\"\x00(\x01\x30\x01\x12l\n\rInvokeBinding\x12+.dapr.proto.runtime.v1.InvokeBindingRequest\x1a,.dapr.proto.runtime.v1.InvokeBindingResponse\"\x00\x12`\n\tGetSecret\x12\'.dapr.proto.runtime.v1.GetSecretRequest\x1a(.dapr.proto.runtime.v1.GetSecretResponse\"\x00\x12l\n\rGetBulkSecret\x12+.dapr.proto.runtime.v1.GetBulkSecretRequest\x1a,.dapr.proto.runtime.v1.GetBulkSecretResponse\"\x00\x12`\n\x12RegisterActorTimer\x12\x30.dapr.proto.runtime.v1.RegisterActorTimerRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x64\n\x14UnregisterActorTimer\x12\x32.dapr.proto.runtime.v1.UnregisterActorTimerRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x66\n\x15RegisterActorReminder\x12\x33.dapr.proto.runtime.v1.RegisterActorReminderRequest\x1a\x16.google.protobuf.Empty\"\x00\x12j\n\x17UnregisterActorReminder\x12\x35.dapr.proto.runtime.v1.UnregisterActorReminderRequest\x1a\x16.google.protobuf.Empty\"\x00\x12l\n\rGetActorState\x12+.dapr.proto.runtime.v1.GetActorStateRequest\x1a,.dapr.proto.runtime.v1.GetActorStateResponse\"\x00\x12t\n\x1c\x45xecuteActorStateTransaction\x12:.dapr.proto.runtime.v1.ExecuteActorStateTransactionRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x66\n\x0bInvokeActor\x12).dapr.proto.runtime.v1.InvokeActorRequest\x1a*.dapr.proto.runtime.v1.InvokeActorResponse\"\x00\x12{\n\x16GetConfigurationAlpha1\x12..dapr.proto.runtime.v1.GetConfigurationRequest\x1a/.dapr.proto.runtime.v1.GetConfigurationResponse\"\x00\x12u\n\x10GetConfiguration\x12..dapr.proto.runtime.v1.GetConfigurationRequest\x1a/.dapr.proto.runtime.v1.GetConfigurationResponse\"\x00\x12\x8f\x01\n\x1cSubscribeConfigurationAlpha1\x12\x34.dapr.proto.runtime.v1.SubscribeConfigurationRequest\x1a\x35.dapr.proto.runtime.v1.SubscribeConfigurationResponse\"\x00\x30\x01\x12\x89\x01\n\x16SubscribeConfiguration\x12\x34.dapr.proto.runtime.v1.SubscribeConfigurationRequest\x1a\x35.dapr.proto.runtime.v1.SubscribeConfigurationResponse\"\x00\x30\x01\x12\x93\x01\n\x1eUnsubscribeConfigurationAlpha1\x12\x36.dapr.proto.runtime.v1.UnsubscribeConfigurationRequest\x1a\x37.dapr.proto.runtime.v1.UnsubscribeConfigurationResponse\"\x00\x12\x8d\x01\n\x18UnsubscribeConfiguration\x12\x36.dapr.proto.runtime.v1.UnsubscribeConfigurationRequest\x1a\x37.dapr.proto.runtime.v1.UnsubscribeConfigurationResponse\"\x00\x12`\n\rTryLockAlpha1\x12%.dapr.proto.runtime.v1.TryLockRequest\x1a&.dapr.proto.runtime.v1.TryLockResponse\"\x00\x12]\n\x0cUnlockAlpha1\x12$.dapr.proto.runtime.v1.UnlockRequest\x1a%.dapr.proto.runtime.v1.UnlockResponse\"\x00\x12\x62\n\rEncryptAlpha1\x12%.dapr.proto.runtime.v1.EncryptRequest\x1a&.dapr.proto.runtime.v1.EncryptResponse(\x01\x30\x01\x12\x62\n\rDecryptAlpha1\x12%.dapr.proto.runtime.v1.DecryptRequest\x1a&.dapr.proto.runtime.v1.DecryptResponse(\x01\x30\x01\x12\x66\n\x0bGetMetadata\x12).dapr.proto.runtime.v1.GetMetadataRequest\x1a*.dapr.proto.runtime.v1.GetMetadataResponse\"\x00\x12R\n\x0bSetMetadata\x12).dapr.proto.runtime.v1.SetMetadataRequest\x1a\x16.google.protobuf.Empty\"\x00\x12m\n\x12SubtleGetKeyAlpha1\x12*.dapr.proto.runtime.v1.SubtleGetKeyRequest\x1a+.dapr.proto.runtime.v1.SubtleGetKeyResponse\x12p\n\x13SubtleEncryptAlpha1\x12+.dapr.proto.runtime.v1.SubtleEncryptRequest\x1a,.dapr.proto.runtime.v1.SubtleEncryptResponse\x12p\n\x13SubtleDecryptAlpha1\x12+.dapr.proto.runtime.v1.SubtleDecryptRequest\x1a,.dapr.proto.runtime.v1.SubtleDecryptResponse\x12p\n\x13SubtleWrapKeyAlpha1\x12+.dapr.proto.runtime.v1.SubtleWrapKeyRequest\x1a,.dapr.proto.runtime.v1.SubtleWrapKeyResponse\x12v\n\x15SubtleUnwrapKeyAlpha1\x12-.dapr.proto.runtime.v1.SubtleUnwrapKeyRequest\x1a..dapr.proto.runtime.v1.SubtleUnwrapKeyResponse\x12g\n\x10SubtleSignAlpha1\x12(.dapr.proto.runtime.v1.SubtleSignRequest\x1a).dapr.proto.runtime.v1.SubtleSignResponse\x12m\n\x12SubtleVerifyAlpha1\x12*.dapr.proto.runtime.v1.SubtleVerifyRequest\x1a+.dapr.proto.runtime.v1.SubtleVerifyResponse\x12u\n\x13StartWorkflowAlpha1\x12+.dapr.proto.runtime.v1.StartWorkflowRequest\x1a,.dapr.proto.runtime.v1.StartWorkflowResponse\"\x03\x88\x02\x01\x12o\n\x11GetWorkflowAlpha1\x12).dapr.proto.runtime.v1.GetWorkflowRequest\x1a*.dapr.proto.runtime.v1.GetWorkflowResponse\"\x03\x88\x02\x01\x12_\n\x13PurgeWorkflowAlpha1\x12+.dapr.proto.runtime.v1.PurgeWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x03\x88\x02\x01\x12g\n\x17TerminateWorkflowAlpha1\x12/.dapr.proto.runtime.v1.TerminateWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x03\x88\x02\x01\x12_\n\x13PauseWorkflowAlpha1\x12+.dapr.proto.runtime.v1.PauseWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x03\x88\x02\x01\x12\x61\n\x14ResumeWorkflowAlpha1\x12,.dapr.proto.runtime.v1.ResumeWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x03\x88\x02\x01\x12i\n\x18RaiseEventWorkflowAlpha1\x12\x30.dapr.proto.runtime.v1.RaiseEventWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x03\x88\x02\x01\x12q\n\x12StartWorkflowBeta1\x12+.dapr.proto.runtime.v1.StartWorkflowRequest\x1a,.dapr.proto.runtime.v1.StartWorkflowResponse\"\x00\x12k\n\x10GetWorkflowBeta1\x12).dapr.proto.runtime.v1.GetWorkflowRequest\x1a*.dapr.proto.runtime.v1.GetWorkflowResponse\"\x00\x12[\n\x12PurgeWorkflowBeta1\x12+.dapr.proto.runtime.v1.PurgeWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x63\n\x16TerminateWorkflowBeta1\x12/.dapr.proto.runtime.v1.TerminateWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x00\x12[\n\x12PauseWorkflowBeta1\x12+.dapr.proto.runtime.v1.PauseWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x00\x12]\n\x13ResumeWorkflowBeta1\x12,.dapr.proto.runtime.v1.ResumeWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x65\n\x17RaiseEventWorkflowBeta1\x12\x30.dapr.proto.runtime.v1.RaiseEventWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x00\x12L\n\x08Shutdown\x12&.dapr.proto.runtime.v1.ShutdownRequest\x1a\x16.google.protobuf.Empty\"\x00\x12l\n\x11ScheduleJobAlpha1\x12).dapr.proto.runtime.v1.ScheduleJobRequest\x1a*.dapr.proto.runtime.v1.ScheduleJobResponse\"\x00\x12]\n\x0cGetJobAlpha1\x12$.dapr.proto.runtime.v1.GetJobRequest\x1a%.dapr.proto.runtime.v1.GetJobResponse\"\x00\x12\x66\n\x0f\x44\x65leteJobAlpha1\x12\'.dapr.proto.runtime.v1.DeleteJobRequest\x1a(.dapr.proto.runtime.v1.DeleteJobResponse\"\x00\x12k\n\x0e\x43onverseAlpha1\x12*.dapr.proto.runtime.v1.ConversationRequest\x1a+.dapr.proto.runtime.v1.ConversationResponse\"\x00\x42i\n\nio.dapr.v1B\nDaprProtosZ1github.com/dapr/dapr/pkg/proto/runtime/v1;runtime\xaa\x02\x1b\x44\x61pr.Client.Autogen.Grpc.v1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n dapr/proto/runtime/v1/dapr.proto\x12\x15\x64\x61pr.proto.runtime.v1\x1a\x19google/protobuf/any.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a!dapr/proto/common/v1/common.proto\x1a\'dapr/proto/runtime/v1/appcallback.proto\"X\n\x14InvokeServiceRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x34\n\x07message\x18\x03 \x01(\x0b\x32#.dapr.proto.common.v1.InvokeRequest\"\xf5\x01\n\x0fGetStateRequest\x12\x12\n\nstore_name\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12H\n\x0b\x63onsistency\x18\x03 \x01(\x0e\x32\x33.dapr.proto.common.v1.StateOptions.StateConsistency\x12\x46\n\x08metadata\x18\x04 \x03(\x0b\x32\x34.dapr.proto.runtime.v1.GetStateRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xc9\x01\n\x13GetBulkStateRequest\x12\x12\n\nstore_name\x18\x01 \x01(\t\x12\x0c\n\x04keys\x18\x02 \x03(\t\x12\x13\n\x0bparallelism\x18\x03 \x01(\x05\x12J\n\x08metadata\x18\x04 \x03(\x0b\x32\x38.dapr.proto.runtime.v1.GetBulkStateRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"K\n\x14GetBulkStateResponse\x12\x33\n\x05items\x18\x01 \x03(\x0b\x32$.dapr.proto.runtime.v1.BulkStateItem\"\xbe\x01\n\rBulkStateItem\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12\x0c\n\x04\x65tag\x18\x03 \x01(\t\x12\r\n\x05\x65rror\x18\x04 \x01(\t\x12\x44\n\x08metadata\x18\x05 \x03(\x0b\x32\x32.dapr.proto.runtime.v1.BulkStateItem.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xa8\x01\n\x10GetStateResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\x0c\n\x04\x65tag\x18\x02 \x01(\t\x12G\n\x08metadata\x18\x03 \x03(\x0b\x32\x35.dapr.proto.runtime.v1.GetStateResponse.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x90\x02\n\x12\x44\x65leteStateRequest\x12\x12\n\nstore_name\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12(\n\x04\x65tag\x18\x03 \x01(\x0b\x32\x1a.dapr.proto.common.v1.Etag\x12\x33\n\x07options\x18\x04 \x01(\x0b\x32\".dapr.proto.common.v1.StateOptions\x12I\n\x08metadata\x18\x05 \x03(\x0b\x32\x37.dapr.proto.runtime.v1.DeleteStateRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"]\n\x16\x44\x65leteBulkStateRequest\x12\x12\n\nstore_name\x18\x01 \x01(\t\x12/\n\x06states\x18\x02 \x03(\x0b\x32\x1f.dapr.proto.common.v1.StateItem\"W\n\x10SaveStateRequest\x12\x12\n\nstore_name\x18\x01 \x01(\t\x12/\n\x06states\x18\x02 \x03(\x0b\x32\x1f.dapr.proto.common.v1.StateItem\"\xbc\x01\n\x11QueryStateRequest\x12\x1d\n\nstore_name\x18\x01 \x01(\tR\tstoreName\x12\r\n\x05query\x18\x02 \x01(\t\x12H\n\x08metadata\x18\x03 \x03(\x0b\x32\x36.dapr.proto.runtime.v1.QueryStateRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"H\n\x0eQueryStateItem\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12\x0c\n\x04\x65tag\x18\x03 \x01(\t\x12\r\n\x05\x65rror\x18\x04 \x01(\t\"\xd7\x01\n\x12QueryStateResponse\x12\x36\n\x07results\x18\x01 \x03(\x0b\x32%.dapr.proto.runtime.v1.QueryStateItem\x12\r\n\x05token\x18\x02 \x01(\t\x12I\n\x08metadata\x18\x03 \x03(\x0b\x32\x37.dapr.proto.runtime.v1.QueryStateResponse.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xdf\x01\n\x13PublishEventRequest\x12\x13\n\x0bpubsub_name\x18\x01 \x01(\t\x12\r\n\x05topic\x18\x02 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\x12\x19\n\x11\x64\x61ta_content_type\x18\x04 \x01(\t\x12J\n\x08metadata\x18\x05 \x03(\x0b\x32\x38.dapr.proto.runtime.v1.PublishEventRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xf5\x01\n\x12\x42ulkPublishRequest\x12\x13\n\x0bpubsub_name\x18\x01 \x01(\t\x12\r\n\x05topic\x18\x02 \x01(\t\x12?\n\x07\x65ntries\x18\x03 \x03(\x0b\x32..dapr.proto.runtime.v1.BulkPublishRequestEntry\x12I\n\x08metadata\x18\x04 \x03(\x0b\x32\x37.dapr.proto.runtime.v1.BulkPublishRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xd1\x01\n\x17\x42ulkPublishRequestEntry\x12\x10\n\x08\x65ntry_id\x18\x01 \x01(\t\x12\r\n\x05\x65vent\x18\x02 \x01(\x0c\x12\x14\n\x0c\x63ontent_type\x18\x03 \x01(\t\x12N\n\x08metadata\x18\x04 \x03(\x0b\x32<.dapr.proto.runtime.v1.BulkPublishRequestEntry.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"c\n\x13\x42ulkPublishResponse\x12L\n\rfailedEntries\x18\x01 \x03(\x0b\x32\x35.dapr.proto.runtime.v1.BulkPublishResponseFailedEntry\"A\n\x1e\x42ulkPublishResponseFailedEntry\x12\x10\n\x08\x65ntry_id\x18\x01 \x01(\t\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"\x84\x02\n!SubscribeTopicEventsRequestAlpha1\x12Z\n\x0finitial_request\x18\x01 \x01(\x0b\x32?.dapr.proto.runtime.v1.SubscribeTopicEventsRequestInitialAlpha1H\x00\x12\\\n\x0f\x65vent_processed\x18\x02 \x01(\x0b\x32\x41.dapr.proto.runtime.v1.SubscribeTopicEventsRequestProcessedAlpha1H\x00\x42%\n#subscribe_topic_events_request_type\"\x96\x02\n(SubscribeTopicEventsRequestInitialAlpha1\x12\x13\n\x0bpubsub_name\x18\x01 \x01(\t\x12\r\n\x05topic\x18\x02 \x01(\t\x12_\n\x08metadata\x18\x03 \x03(\x0b\x32M.dapr.proto.runtime.v1.SubscribeTopicEventsRequestInitialAlpha1.MetadataEntry\x12\x1e\n\x11\x64\x65\x61\x64_letter_topic\x18\x04 \x01(\tH\x00\x88\x01\x01\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x14\n\x12_dead_letter_topic\"s\n*SubscribeTopicEventsRequestProcessedAlpha1\x12\n\n\x02id\x18\x01 \x01(\t\x12\x39\n\x06status\x18\x02 \x01(\x0b\x32).dapr.proto.runtime.v1.TopicEventResponse\"\xed\x01\n\"SubscribeTopicEventsResponseAlpha1\x12\\\n\x10initial_response\x18\x01 \x01(\x0b\x32@.dapr.proto.runtime.v1.SubscribeTopicEventsResponseInitialAlpha1H\x00\x12\x41\n\revent_message\x18\x02 \x01(\x0b\x32(.dapr.proto.runtime.v1.TopicEventRequestH\x00\x42&\n$subscribe_topic_events_response_type\"+\n)SubscribeTopicEventsResponseInitialAlpha1\"\xc3\x01\n\x14InvokeBindingRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\x12K\n\x08metadata\x18\x03 \x03(\x0b\x32\x39.dapr.proto.runtime.v1.InvokeBindingRequest.MetadataEntry\x12\x11\n\toperation\x18\x04 \x01(\t\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xa4\x01\n\x15InvokeBindingResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12L\n\x08metadata\x18\x02 \x03(\x0b\x32:.dapr.proto.runtime.v1.InvokeBindingResponse.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xb8\x01\n\x10GetSecretRequest\x12\x1d\n\nstore_name\x18\x01 \x01(\tR\tstoreName\x12\x0b\n\x03key\x18\x02 \x01(\t\x12G\n\x08metadata\x18\x03 \x03(\x0b\x32\x35.dapr.proto.runtime.v1.GetSecretRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x82\x01\n\x11GetSecretResponse\x12@\n\x04\x64\x61ta\x18\x01 \x03(\x0b\x32\x32.dapr.proto.runtime.v1.GetSecretResponse.DataEntry\x1a+\n\tDataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xb3\x01\n\x14GetBulkSecretRequest\x12\x1d\n\nstore_name\x18\x01 \x01(\tR\tstoreName\x12K\n\x08metadata\x18\x02 \x03(\x0b\x32\x39.dapr.proto.runtime.v1.GetBulkSecretRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x85\x01\n\x0eSecretResponse\x12\x43\n\x07secrets\x18\x01 \x03(\x0b\x32\x32.dapr.proto.runtime.v1.SecretResponse.SecretsEntry\x1a.\n\x0cSecretsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xb1\x01\n\x15GetBulkSecretResponse\x12\x44\n\x04\x64\x61ta\x18\x01 \x03(\x0b\x32\x36.dapr.proto.runtime.v1.GetBulkSecretResponse.DataEntry\x1aR\n\tDataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32%.dapr.proto.runtime.v1.SecretResponse:\x02\x38\x01\"f\n\x1bTransactionalStateOperation\x12\x15\n\roperationType\x18\x01 \x01(\t\x12\x30\n\x07request\x18\x02 \x01(\x0b\x32\x1f.dapr.proto.common.v1.StateItem\"\x83\x02\n\x1e\x45xecuteStateTransactionRequest\x12\x11\n\tstoreName\x18\x01 \x01(\t\x12\x46\n\noperations\x18\x02 \x03(\x0b\x32\x32.dapr.proto.runtime.v1.TransactionalStateOperation\x12U\n\x08metadata\x18\x03 \x03(\x0b\x32\x43.dapr.proto.runtime.v1.ExecuteStateTransactionRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xbb\x01\n\x19RegisterActorTimerRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x19\n\x08\x64ue_time\x18\x04 \x01(\tR\x07\x64ueTime\x12\x0e\n\x06period\x18\x05 \x01(\t\x12\x10\n\x08\x63\x61llback\x18\x06 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x07 \x01(\x0c\x12\x0b\n\x03ttl\x18\x08 \x01(\t\"e\n\x1bUnregisterActorTimerRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0c\n\x04name\x18\x03 \x01(\t\"\xac\x01\n\x1cRegisterActorReminderRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x19\n\x08\x64ue_time\x18\x04 \x01(\tR\x07\x64ueTime\x12\x0e\n\x06period\x18\x05 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x06 \x01(\x0c\x12\x0b\n\x03ttl\x18\x07 \x01(\t\"h\n\x1eUnregisterActorReminderRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0c\n\x04name\x18\x03 \x01(\t\"]\n\x14GetActorStateRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0b\n\x03key\x18\x03 \x01(\t\"\xa4\x01\n\x15GetActorStateResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12L\n\x08metadata\x18\x02 \x03(\x0b\x32:.dapr.proto.runtime.v1.GetActorStateResponse.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xac\x01\n#ExecuteActorStateTransactionRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12K\n\noperations\x18\x03 \x03(\x0b\x32\x37.dapr.proto.runtime.v1.TransactionalActorStateOperation\"\xf5\x01\n TransactionalActorStateOperation\x12\x15\n\roperationType\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12#\n\x05value\x18\x03 \x01(\x0b\x32\x14.google.protobuf.Any\x12W\n\x08metadata\x18\x04 \x03(\x0b\x32\x45.dapr.proto.runtime.v1.TransactionalActorStateOperation.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xe8\x01\n\x12InvokeActorRequest\x12\x1d\n\nactor_type\x18\x01 \x01(\tR\tactorType\x12\x19\n\x08\x61\x63tor_id\x18\x02 \x01(\tR\x07\x61\x63torId\x12\x0e\n\x06method\x18\x03 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x12I\n\x08metadata\x18\x05 \x03(\x0b\x32\x37.dapr.proto.runtime.v1.InvokeActorRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"#\n\x13InvokeActorResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"\x14\n\x12GetMetadataRequest\"\x9b\x06\n\x13GetMetadataResponse\x12\n\n\x02id\x18\x01 \x01(\t\x12Q\n\x13\x61\x63tive_actors_count\x18\x02 \x03(\x0b\x32(.dapr.proto.runtime.v1.ActiveActorsCountB\x02\x18\x01R\x06\x61\x63tors\x12V\n\x15registered_components\x18\x03 \x03(\x0b\x32+.dapr.proto.runtime.v1.RegisteredComponentsR\ncomponents\x12\x65\n\x11\x65xtended_metadata\x18\x04 \x03(\x0b\x32@.dapr.proto.runtime.v1.GetMetadataResponse.ExtendedMetadataEntryR\x08\x65xtended\x12O\n\rsubscriptions\x18\x05 \x03(\x0b\x32).dapr.proto.runtime.v1.PubsubSubscriptionR\rsubscriptions\x12R\n\x0ehttp_endpoints\x18\x06 \x03(\x0b\x32+.dapr.proto.runtime.v1.MetadataHTTPEndpointR\rhttpEndpoints\x12j\n\x19\x61pp_connection_properties\x18\x07 \x01(\x0b\x32..dapr.proto.runtime.v1.AppConnectionPropertiesR\x17\x61ppConnectionProperties\x12\'\n\x0fruntime_version\x18\x08 \x01(\tR\x0eruntimeVersion\x12)\n\x10\x65nabled_features\x18\t \x03(\tR\x0f\x65nabledFeatures\x12H\n\ractor_runtime\x18\n \x01(\x0b\x32#.dapr.proto.runtime.v1.ActorRuntimeR\x0c\x61\x63torRuntime\x1a\x37\n\x15\x45xtendedMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xbc\x02\n\x0c\x41\x63torRuntime\x12]\n\x0eruntime_status\x18\x01 \x01(\x0e\x32\x36.dapr.proto.runtime.v1.ActorRuntime.ActorRuntimeStatusR\rruntimeStatus\x12M\n\ractive_actors\x18\x02 \x03(\x0b\x32(.dapr.proto.runtime.v1.ActiveActorsCountR\x0c\x61\x63tiveActors\x12\x1d\n\nhost_ready\x18\x03 \x01(\x08R\thostReady\x12\x1c\n\tplacement\x18\x04 \x01(\tR\tplacement\"A\n\x12\x41\x63torRuntimeStatus\x12\x10\n\x0cINITIALIZING\x10\x00\x12\x0c\n\x08\x44ISABLED\x10\x01\x12\x0b\n\x07RUNNING\x10\x02\"0\n\x11\x41\x63tiveActorsCount\x12\x0c\n\x04type\x18\x01 \x01(\t\x12\r\n\x05\x63ount\x18\x02 \x01(\x05\"Y\n\x14RegisteredComponents\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\x12\x14\n\x0c\x63\x61pabilities\x18\x04 \x03(\t\"*\n\x14MetadataHTTPEndpoint\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\"\xd1\x01\n\x17\x41ppConnectionProperties\x12\x0c\n\x04port\x18\x01 \x01(\x05\x12\x10\n\x08protocol\x18\x02 \x01(\t\x12\'\n\x0f\x63hannel_address\x18\x03 \x01(\tR\x0e\x63hannelAddress\x12\'\n\x0fmax_concurrency\x18\x04 \x01(\x05R\x0emaxConcurrency\x12\x44\n\x06health\x18\x05 \x01(\x0b\x32\x34.dapr.proto.runtime.v1.AppConnectionHealthProperties\"\xdc\x01\n\x1d\x41ppConnectionHealthProperties\x12*\n\x11health_check_path\x18\x01 \x01(\tR\x0fhealthCheckPath\x12\x32\n\x15health_probe_interval\x18\x02 \x01(\tR\x13healthProbeInterval\x12\x30\n\x14health_probe_timeout\x18\x03 \x01(\tR\x12healthProbeTimeout\x12)\n\x10health_threshold\x18\x04 \x01(\x05R\x0fhealthThreshold\"\x86\x03\n\x12PubsubSubscription\x12\x1f\n\x0bpubsub_name\x18\x01 \x01(\tR\npubsubname\x12\x14\n\x05topic\x18\x02 \x01(\tR\x05topic\x12S\n\x08metadata\x18\x03 \x03(\x0b\x32\x37.dapr.proto.runtime.v1.PubsubSubscription.MetadataEntryR\x08metadata\x12\x44\n\x05rules\x18\x04 \x01(\x0b\x32..dapr.proto.runtime.v1.PubsubSubscriptionRulesR\x05rules\x12*\n\x11\x64\x65\x61\x64_letter_topic\x18\x05 \x01(\tR\x0f\x64\x65\x61\x64LetterTopic\x12\x41\n\x04type\x18\x06 \x01(\x0e\x32-.dapr.proto.runtime.v1.PubsubSubscriptionTypeR\x04type\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"W\n\x17PubsubSubscriptionRules\x12<\n\x05rules\x18\x01 \x03(\x0b\x32-.dapr.proto.runtime.v1.PubsubSubscriptionRule\"5\n\x16PubsubSubscriptionRule\x12\r\n\x05match\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\"0\n\x12SetMetadataRequest\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\xbc\x01\n\x17GetConfigurationRequest\x12\x12\n\nstore_name\x18\x01 \x01(\t\x12\x0c\n\x04keys\x18\x02 \x03(\t\x12N\n\x08metadata\x18\x03 \x03(\x0b\x32<.dapr.proto.runtime.v1.GetConfigurationRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\xbc\x01\n\x18GetConfigurationResponse\x12I\n\x05items\x18\x01 \x03(\x0b\x32:.dapr.proto.runtime.v1.GetConfigurationResponse.ItemsEntry\x1aU\n\nItemsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x36\n\x05value\x18\x02 \x01(\x0b\x32\'.dapr.proto.common.v1.ConfigurationItem:\x02\x38\x01\"\xc8\x01\n\x1dSubscribeConfigurationRequest\x12\x12\n\nstore_name\x18\x01 \x01(\t\x12\x0c\n\x04keys\x18\x02 \x03(\t\x12T\n\x08metadata\x18\x03 \x03(\x0b\x32\x42.dapr.proto.runtime.v1.SubscribeConfigurationRequest.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"A\n\x1fUnsubscribeConfigurationRequest\x12\x12\n\nstore_name\x18\x01 \x01(\t\x12\n\n\x02id\x18\x02 \x01(\t\"\xd4\x01\n\x1eSubscribeConfigurationResponse\x12\n\n\x02id\x18\x01 \x01(\t\x12O\n\x05items\x18\x02 \x03(\x0b\x32@.dapr.proto.runtime.v1.SubscribeConfigurationResponse.ItemsEntry\x1aU\n\nItemsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x36\n\x05value\x18\x02 \x01(\x0b\x32\'.dapr.proto.common.v1.ConfigurationItem:\x02\x38\x01\"?\n UnsubscribeConfigurationResponse\x12\n\n\x02ok\x18\x01 \x01(\x08\x12\x0f\n\x07message\x18\x02 \x01(\t\"\x9b\x01\n\x0eTryLockRequest\x12\x1d\n\nstore_name\x18\x01 \x01(\tR\tstoreName\x12\x1f\n\x0bresource_id\x18\x02 \x01(\tR\nresourceId\x12\x1d\n\nlock_owner\x18\x03 \x01(\tR\tlockOwner\x12*\n\x11\x65xpiry_in_seconds\x18\x04 \x01(\x05R\x0f\x65xpiryInSeconds\"\"\n\x0fTryLockResponse\x12\x0f\n\x07success\x18\x01 \x01(\x08\"n\n\rUnlockRequest\x12\x1d\n\nstore_name\x18\x01 \x01(\tR\tstoreName\x12\x1f\n\x0bresource_id\x18\x02 \x01(\tR\nresourceId\x12\x1d\n\nlock_owner\x18\x03 \x01(\tR\tlockOwner\"\xae\x01\n\x0eUnlockResponse\x12<\n\x06status\x18\x01 \x01(\x0e\x32,.dapr.proto.runtime.v1.UnlockResponse.Status\"^\n\x06Status\x12\x0b\n\x07SUCCESS\x10\x00\x12\x17\n\x13LOCK_DOES_NOT_EXIST\x10\x01\x12\x1a\n\x16LOCK_BELONGS_TO_OTHERS\x10\x02\x12\x12\n\x0eINTERNAL_ERROR\x10\x03\"\xb0\x01\n\x13SubtleGetKeyRequest\x12%\n\x0e\x63omponent_name\x18\x01 \x01(\tR\rcomponentName\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x44\n\x06\x66ormat\x18\x03 \x01(\x0e\x32\x34.dapr.proto.runtime.v1.SubtleGetKeyRequest.KeyFormat\"\x1e\n\tKeyFormat\x12\x07\n\x03PEM\x10\x00\x12\x08\n\x04JSON\x10\x01\"C\n\x14SubtleGetKeyResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x1d\n\npublic_key\x18\x02 \x01(\tR\tpublicKey\"\xb6\x01\n\x14SubtleEncryptRequest\x12%\n\x0e\x63omponent_name\x18\x01 \x01(\tR\rcomponentName\x12\x11\n\tplaintext\x18\x02 \x01(\x0c\x12\x11\n\talgorithm\x18\x03 \x01(\t\x12\x19\n\x08key_name\x18\x04 \x01(\tR\x07keyName\x12\r\n\x05nonce\x18\x05 \x01(\x0c\x12\'\n\x0f\x61ssociated_data\x18\x06 \x01(\x0cR\x0e\x61ssociatedData\"8\n\x15SubtleEncryptResponse\x12\x12\n\nciphertext\x18\x01 \x01(\x0c\x12\x0b\n\x03tag\x18\x02 \x01(\x0c\"\xc4\x01\n\x14SubtleDecryptRequest\x12%\n\x0e\x63omponent_name\x18\x01 \x01(\tR\rcomponentName\x12\x12\n\nciphertext\x18\x02 \x01(\x0c\x12\x11\n\talgorithm\x18\x03 \x01(\t\x12\x19\n\x08key_name\x18\x04 \x01(\tR\x07keyName\x12\r\n\x05nonce\x18\x05 \x01(\x0c\x12\x0b\n\x03tag\x18\x06 \x01(\x0c\x12\'\n\x0f\x61ssociated_data\x18\x07 \x01(\x0cR\x0e\x61ssociatedData\"*\n\x15SubtleDecryptResponse\x12\x11\n\tplaintext\x18\x01 \x01(\x0c\"\xc8\x01\n\x14SubtleWrapKeyRequest\x12%\n\x0e\x63omponent_name\x18\x01 \x01(\tR\rcomponentName\x12#\n\rplaintext_key\x18\x02 \x01(\x0cR\x0cplaintextKey\x12\x11\n\talgorithm\x18\x03 \x01(\t\x12\x19\n\x08key_name\x18\x04 \x01(\tR\x07keyName\x12\r\n\x05nonce\x18\x05 \x01(\x0c\x12\'\n\x0f\x61ssociated_data\x18\x06 \x01(\x0cR\x0e\x61ssociatedData\"E\n\x15SubtleWrapKeyResponse\x12\x1f\n\x0bwrapped_key\x18\x01 \x01(\x0cR\nwrappedKey\x12\x0b\n\x03tag\x18\x02 \x01(\x0c\"\xd3\x01\n\x16SubtleUnwrapKeyRequest\x12%\n\x0e\x63omponent_name\x18\x01 \x01(\tR\rcomponentName\x12\x1f\n\x0bwrapped_key\x18\x02 \x01(\x0cR\nwrappedKey\x12\x11\n\talgorithm\x18\x03 \x01(\t\x12\x19\n\x08key_name\x18\x04 \x01(\tR\x07keyName\x12\r\n\x05nonce\x18\x05 \x01(\x0c\x12\x0b\n\x03tag\x18\x06 \x01(\x0c\x12\'\n\x0f\x61ssociated_data\x18\x07 \x01(\x0cR\x0e\x61ssociatedData\">\n\x17SubtleUnwrapKeyResponse\x12#\n\rplaintext_key\x18\x01 \x01(\x0cR\x0cplaintextKey\"x\n\x11SubtleSignRequest\x12%\n\x0e\x63omponent_name\x18\x01 \x01(\tR\rcomponentName\x12\x0e\n\x06\x64igest\x18\x02 \x01(\x0c\x12\x11\n\talgorithm\x18\x03 \x01(\t\x12\x19\n\x08key_name\x18\x04 \x01(\tR\x07keyName\"\'\n\x12SubtleSignResponse\x12\x11\n\tsignature\x18\x01 \x01(\x0c\"\x8d\x01\n\x13SubtleVerifyRequest\x12%\n\x0e\x63omponent_name\x18\x01 \x01(\tR\rcomponentName\x12\x0e\n\x06\x64igest\x18\x02 \x01(\x0c\x12\x11\n\talgorithm\x18\x03 \x01(\t\x12\x19\n\x08key_name\x18\x04 \x01(\tR\x07keyName\x12\x11\n\tsignature\x18\x05 \x01(\x0c\"%\n\x14SubtleVerifyResponse\x12\r\n\x05valid\x18\x01 \x01(\x08\"\x85\x01\n\x0e\x45ncryptRequest\x12=\n\x07options\x18\x01 \x01(\x0b\x32,.dapr.proto.runtime.v1.EncryptRequestOptions\x12\x34\n\x07payload\x18\x02 \x01(\x0b\x32#.dapr.proto.common.v1.StreamPayload\"\xfe\x01\n\x15\x45ncryptRequestOptions\x12%\n\x0e\x63omponent_name\x18\x01 \x01(\tR\rcomponentName\x12\x19\n\x08key_name\x18\x02 \x01(\tR\x07keyName\x12\x1a\n\x12key_wrap_algorithm\x18\x03 \x01(\t\x12\x1e\n\x16\x64\x61ta_encryption_cipher\x18\n \x01(\t\x12\x37\n\x18omit_decryption_key_name\x18\x0b \x01(\x08R\x15omitDecryptionKeyName\x12.\n\x13\x64\x65\x63ryption_key_name\x18\x0c \x01(\tR\x11\x64\x65\x63ryptionKeyName\"G\n\x0f\x45ncryptResponse\x12\x34\n\x07payload\x18\x01 \x01(\x0b\x32#.dapr.proto.common.v1.StreamPayload\"\x85\x01\n\x0e\x44\x65\x63ryptRequest\x12=\n\x07options\x18\x01 \x01(\x0b\x32,.dapr.proto.runtime.v1.DecryptRequestOptions\x12\x34\n\x07payload\x18\x02 \x01(\x0b\x32#.dapr.proto.common.v1.StreamPayload\"Y\n\x15\x44\x65\x63ryptRequestOptions\x12%\n\x0e\x63omponent_name\x18\x01 \x01(\tR\rcomponentName\x12\x19\n\x08key_name\x18\x0c \x01(\tR\x07keyName\"G\n\x0f\x44\x65\x63ryptResponse\x12\x34\n\x07payload\x18\x01 \x01(\x0b\x32#.dapr.proto.common.v1.StreamPayload\"d\n\x12GetWorkflowRequest\x12\x1f\n\x0binstance_id\x18\x01 \x01(\tR\ninstanceID\x12-\n\x12workflow_component\x18\x02 \x01(\tR\x11workflowComponent\"\x84\x03\n\x13GetWorkflowResponse\x12\x1f\n\x0binstance_id\x18\x01 \x01(\tR\ninstanceID\x12#\n\rworkflow_name\x18\x02 \x01(\tR\x0cworkflowName\x12\x39\n\ncreated_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x42\n\x0flast_updated_at\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\rlastUpdatedAt\x12%\n\x0eruntime_status\x18\x05 \x01(\tR\rruntimeStatus\x12N\n\nproperties\x18\x06 \x03(\x0b\x32:.dapr.proto.runtime.v1.GetWorkflowResponse.PropertiesEntry\x1a\x31\n\x0fPropertiesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\x95\x02\n\x14StartWorkflowRequest\x12\x1f\n\x0binstance_id\x18\x01 \x01(\tR\ninstanceID\x12-\n\x12workflow_component\x18\x02 \x01(\tR\x11workflowComponent\x12#\n\rworkflow_name\x18\x03 \x01(\tR\x0cworkflowName\x12I\n\x07options\x18\x04 \x03(\x0b\x32\x38.dapr.proto.runtime.v1.StartWorkflowRequest.OptionsEntry\x12\r\n\x05input\x18\x05 \x01(\x0c\x1a.\n\x0cOptionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"8\n\x15StartWorkflowResponse\x12\x1f\n\x0binstance_id\x18\x01 \x01(\tR\ninstanceID\"j\n\x18TerminateWorkflowRequest\x12\x1f\n\x0binstance_id\x18\x01 \x01(\tR\ninstanceID\x12-\n\x12workflow_component\x18\x02 \x01(\tR\x11workflowComponent\"f\n\x14PauseWorkflowRequest\x12\x1f\n\x0binstance_id\x18\x01 \x01(\tR\ninstanceID\x12-\n\x12workflow_component\x18\x02 \x01(\tR\x11workflowComponent\"g\n\x15ResumeWorkflowRequest\x12\x1f\n\x0binstance_id\x18\x01 \x01(\tR\ninstanceID\x12-\n\x12workflow_component\x18\x02 \x01(\tR\x11workflowComponent\"\x9e\x01\n\x19RaiseEventWorkflowRequest\x12\x1f\n\x0binstance_id\x18\x01 \x01(\tR\ninstanceID\x12-\n\x12workflow_component\x18\x02 \x01(\tR\x11workflowComponent\x12\x1d\n\nevent_name\x18\x03 \x01(\tR\teventName\x12\x12\n\nevent_data\x18\x04 \x01(\x0c\"f\n\x14PurgeWorkflowRequest\x12\x1f\n\x0binstance_id\x18\x01 \x01(\tR\ninstanceID\x12-\n\x12workflow_component\x18\x02 \x01(\tR\x11workflowComponent\"\x11\n\x0fShutdownRequest\"\xe8\x01\n\x03Job\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n\x08schedule\x18\x02 \x01(\tH\x00R\x08schedule\x88\x01\x01\x12\x1d\n\x07repeats\x18\x03 \x01(\rH\x01R\x07repeats\x88\x01\x01\x12\x1e\n\x08\x64ue_time\x18\x04 \x01(\tH\x02R\x07\x64ueTime\x88\x01\x01\x12\x15\n\x03ttl\x18\x05 \x01(\tH\x03R\x03ttl\x88\x01\x01\x12(\n\x04\x64\x61ta\x18\x06 \x01(\x0b\x32\x14.google.protobuf.AnyR\x04\x64\x61taB\x0b\n\t_scheduleB\n\n\x08_repeatsB\x0b\n\t_due_timeB\x06\n\x04_ttl\"=\n\x12ScheduleJobRequest\x12\'\n\x03job\x18\x01 \x01(\x0b\x32\x1a.dapr.proto.runtime.v1.Job\"\x15\n\x13ScheduleJobResponse\"\x1d\n\rGetJobRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"9\n\x0eGetJobResponse\x12\'\n\x03job\x18\x01 \x01(\x0b\x32\x1a.dapr.proto.runtime.v1.Job\" \n\x10\x44\x65leteJobRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"\x13\n\x11\x44\x65leteJobResponse\"\xe7\x03\n\x13\x43onversationRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x16\n\tcontextID\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x38\n\x06inputs\x18\x03 \x03(\x0b\x32(.dapr.proto.runtime.v1.ConversationInput\x12N\n\nparameters\x18\x04 \x03(\x0b\x32:.dapr.proto.runtime.v1.ConversationRequest.ParametersEntry\x12J\n\x08metadata\x18\x05 \x03(\x0b\x32\x38.dapr.proto.runtime.v1.ConversationRequest.MetadataEntry\x12\x15\n\x08scrubPII\x18\x06 \x01(\x08H\x01\x88\x01\x01\x12\x18\n\x0btemperature\x18\x07 \x01(\x01H\x02\x88\x01\x01\x1aG\n\x0fParametersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12#\n\x05value\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any:\x02\x38\x01\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0c\n\n_contextIDB\x0b\n\t_scrubPIIB\x0e\n\x0c_temperature\"d\n\x11\x43onversationInput\x12\x0f\n\x07\x63ontent\x18\x01 \x01(\t\x12\x11\n\x04role\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08scrubPII\x18\x03 \x01(\x08H\x01\x88\x01\x01\x42\x07\n\x05_roleB\x0b\n\t_scrubPII\"\xbc\x01\n\x12\x43onversationResult\x12\x0e\n\x06result\x18\x01 \x01(\t\x12M\n\nparameters\x18\x02 \x03(\x0b\x32\x39.dapr.proto.runtime.v1.ConversationResult.ParametersEntry\x1aG\n\x0fParametersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12#\n\x05value\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any:\x02\x38\x01\"x\n\x14\x43onversationResponse\x12\x16\n\tcontextID\x18\x01 \x01(\tH\x00\x88\x01\x01\x12:\n\x07outputs\x18\x02 \x03(\x0b\x32).dapr.proto.runtime.v1.ConversationResultB\x0c\n\n_contextID*W\n\x16PubsubSubscriptionType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0f\n\x0b\x44\x45\x43LARATIVE\x10\x01\x12\x10\n\x0cPROGRAMMATIC\x10\x02\x12\r\n\tSTREAMING\x10\x03\x32\xbe\x31\n\x04\x44\x61pr\x12\x64\n\rInvokeService\x12+.dapr.proto.runtime.v1.InvokeServiceRequest\x1a$.dapr.proto.common.v1.InvokeResponse\"\x00\x12]\n\x08GetState\x12&.dapr.proto.runtime.v1.GetStateRequest\x1a\'.dapr.proto.runtime.v1.GetStateResponse\"\x00\x12i\n\x0cGetBulkState\x12*.dapr.proto.runtime.v1.GetBulkStateRequest\x1a+.dapr.proto.runtime.v1.GetBulkStateResponse\"\x00\x12N\n\tSaveState\x12\'.dapr.proto.runtime.v1.SaveStateRequest\x1a\x16.google.protobuf.Empty\"\x00\x12i\n\x10QueryStateAlpha1\x12(.dapr.proto.runtime.v1.QueryStateRequest\x1a).dapr.proto.runtime.v1.QueryStateResponse\"\x00\x12R\n\x0b\x44\x65leteState\x12).dapr.proto.runtime.v1.DeleteStateRequest\x1a\x16.google.protobuf.Empty\"\x00\x12Z\n\x0f\x44\x65leteBulkState\x12-.dapr.proto.runtime.v1.DeleteBulkStateRequest\x1a\x16.google.protobuf.Empty\"\x00\x12j\n\x17\x45xecuteStateTransaction\x12\x35.dapr.proto.runtime.v1.ExecuteStateTransactionRequest\x1a\x16.google.protobuf.Empty\"\x00\x12T\n\x0cPublishEvent\x12*.dapr.proto.runtime.v1.PublishEventRequest\x1a\x16.google.protobuf.Empty\"\x00\x12q\n\x16\x42ulkPublishEventAlpha1\x12).dapr.proto.runtime.v1.BulkPublishRequest\x1a*.dapr.proto.runtime.v1.BulkPublishResponse\"\x00\x12\x97\x01\n\x1aSubscribeTopicEventsAlpha1\x12\x38.dapr.proto.runtime.v1.SubscribeTopicEventsRequestAlpha1\x1a\x39.dapr.proto.runtime.v1.SubscribeTopicEventsResponseAlpha1\"\x00(\x01\x30\x01\x12l\n\rInvokeBinding\x12+.dapr.proto.runtime.v1.InvokeBindingRequest\x1a,.dapr.proto.runtime.v1.InvokeBindingResponse\"\x00\x12`\n\tGetSecret\x12\'.dapr.proto.runtime.v1.GetSecretRequest\x1a(.dapr.proto.runtime.v1.GetSecretResponse\"\x00\x12l\n\rGetBulkSecret\x12+.dapr.proto.runtime.v1.GetBulkSecretRequest\x1a,.dapr.proto.runtime.v1.GetBulkSecretResponse\"\x00\x12`\n\x12RegisterActorTimer\x12\x30.dapr.proto.runtime.v1.RegisterActorTimerRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x64\n\x14UnregisterActorTimer\x12\x32.dapr.proto.runtime.v1.UnregisterActorTimerRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x66\n\x15RegisterActorReminder\x12\x33.dapr.proto.runtime.v1.RegisterActorReminderRequest\x1a\x16.google.protobuf.Empty\"\x00\x12j\n\x17UnregisterActorReminder\x12\x35.dapr.proto.runtime.v1.UnregisterActorReminderRequest\x1a\x16.google.protobuf.Empty\"\x00\x12l\n\rGetActorState\x12+.dapr.proto.runtime.v1.GetActorStateRequest\x1a,.dapr.proto.runtime.v1.GetActorStateResponse\"\x00\x12t\n\x1c\x45xecuteActorStateTransaction\x12:.dapr.proto.runtime.v1.ExecuteActorStateTransactionRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x66\n\x0bInvokeActor\x12).dapr.proto.runtime.v1.InvokeActorRequest\x1a*.dapr.proto.runtime.v1.InvokeActorResponse\"\x00\x12{\n\x16GetConfigurationAlpha1\x12..dapr.proto.runtime.v1.GetConfigurationRequest\x1a/.dapr.proto.runtime.v1.GetConfigurationResponse\"\x00\x12u\n\x10GetConfiguration\x12..dapr.proto.runtime.v1.GetConfigurationRequest\x1a/.dapr.proto.runtime.v1.GetConfigurationResponse\"\x00\x12\x8f\x01\n\x1cSubscribeConfigurationAlpha1\x12\x34.dapr.proto.runtime.v1.SubscribeConfigurationRequest\x1a\x35.dapr.proto.runtime.v1.SubscribeConfigurationResponse\"\x00\x30\x01\x12\x89\x01\n\x16SubscribeConfiguration\x12\x34.dapr.proto.runtime.v1.SubscribeConfigurationRequest\x1a\x35.dapr.proto.runtime.v1.SubscribeConfigurationResponse\"\x00\x30\x01\x12\x93\x01\n\x1eUnsubscribeConfigurationAlpha1\x12\x36.dapr.proto.runtime.v1.UnsubscribeConfigurationRequest\x1a\x37.dapr.proto.runtime.v1.UnsubscribeConfigurationResponse\"\x00\x12\x8d\x01\n\x18UnsubscribeConfiguration\x12\x36.dapr.proto.runtime.v1.UnsubscribeConfigurationRequest\x1a\x37.dapr.proto.runtime.v1.UnsubscribeConfigurationResponse\"\x00\x12`\n\rTryLockAlpha1\x12%.dapr.proto.runtime.v1.TryLockRequest\x1a&.dapr.proto.runtime.v1.TryLockResponse\"\x00\x12]\n\x0cUnlockAlpha1\x12$.dapr.proto.runtime.v1.UnlockRequest\x1a%.dapr.proto.runtime.v1.UnlockResponse\"\x00\x12\x62\n\rEncryptAlpha1\x12%.dapr.proto.runtime.v1.EncryptRequest\x1a&.dapr.proto.runtime.v1.EncryptResponse(\x01\x30\x01\x12\x62\n\rDecryptAlpha1\x12%.dapr.proto.runtime.v1.DecryptRequest\x1a&.dapr.proto.runtime.v1.DecryptResponse(\x01\x30\x01\x12\x66\n\x0bGetMetadata\x12).dapr.proto.runtime.v1.GetMetadataRequest\x1a*.dapr.proto.runtime.v1.GetMetadataResponse\"\x00\x12R\n\x0bSetMetadata\x12).dapr.proto.runtime.v1.SetMetadataRequest\x1a\x16.google.protobuf.Empty\"\x00\x12m\n\x12SubtleGetKeyAlpha1\x12*.dapr.proto.runtime.v1.SubtleGetKeyRequest\x1a+.dapr.proto.runtime.v1.SubtleGetKeyResponse\x12p\n\x13SubtleEncryptAlpha1\x12+.dapr.proto.runtime.v1.SubtleEncryptRequest\x1a,.dapr.proto.runtime.v1.SubtleEncryptResponse\x12p\n\x13SubtleDecryptAlpha1\x12+.dapr.proto.runtime.v1.SubtleDecryptRequest\x1a,.dapr.proto.runtime.v1.SubtleDecryptResponse\x12p\n\x13SubtleWrapKeyAlpha1\x12+.dapr.proto.runtime.v1.SubtleWrapKeyRequest\x1a,.dapr.proto.runtime.v1.SubtleWrapKeyResponse\x12v\n\x15SubtleUnwrapKeyAlpha1\x12-.dapr.proto.runtime.v1.SubtleUnwrapKeyRequest\x1a..dapr.proto.runtime.v1.SubtleUnwrapKeyResponse\x12g\n\x10SubtleSignAlpha1\x12(.dapr.proto.runtime.v1.SubtleSignRequest\x1a).dapr.proto.runtime.v1.SubtleSignResponse\x12m\n\x12SubtleVerifyAlpha1\x12*.dapr.proto.runtime.v1.SubtleVerifyRequest\x1a+.dapr.proto.runtime.v1.SubtleVerifyResponse\x12u\n\x13StartWorkflowAlpha1\x12+.dapr.proto.runtime.v1.StartWorkflowRequest\x1a,.dapr.proto.runtime.v1.StartWorkflowResponse\"\x03\x88\x02\x01\x12o\n\x11GetWorkflowAlpha1\x12).dapr.proto.runtime.v1.GetWorkflowRequest\x1a*.dapr.proto.runtime.v1.GetWorkflowResponse\"\x03\x88\x02\x01\x12_\n\x13PurgeWorkflowAlpha1\x12+.dapr.proto.runtime.v1.PurgeWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x03\x88\x02\x01\x12g\n\x17TerminateWorkflowAlpha1\x12/.dapr.proto.runtime.v1.TerminateWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x03\x88\x02\x01\x12_\n\x13PauseWorkflowAlpha1\x12+.dapr.proto.runtime.v1.PauseWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x03\x88\x02\x01\x12\x61\n\x14ResumeWorkflowAlpha1\x12,.dapr.proto.runtime.v1.ResumeWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x03\x88\x02\x01\x12i\n\x18RaiseEventWorkflowAlpha1\x12\x30.dapr.proto.runtime.v1.RaiseEventWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x03\x88\x02\x01\x12q\n\x12StartWorkflowBeta1\x12+.dapr.proto.runtime.v1.StartWorkflowRequest\x1a,.dapr.proto.runtime.v1.StartWorkflowResponse\"\x00\x12k\n\x10GetWorkflowBeta1\x12).dapr.proto.runtime.v1.GetWorkflowRequest\x1a*.dapr.proto.runtime.v1.GetWorkflowResponse\"\x00\x12[\n\x12PurgeWorkflowBeta1\x12+.dapr.proto.runtime.v1.PurgeWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x63\n\x16TerminateWorkflowBeta1\x12/.dapr.proto.runtime.v1.TerminateWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x00\x12[\n\x12PauseWorkflowBeta1\x12+.dapr.proto.runtime.v1.PauseWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x00\x12]\n\x13ResumeWorkflowBeta1\x12,.dapr.proto.runtime.v1.ResumeWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x00\x12\x65\n\x17RaiseEventWorkflowBeta1\x12\x30.dapr.proto.runtime.v1.RaiseEventWorkflowRequest\x1a\x16.google.protobuf.Empty\"\x00\x12L\n\x08Shutdown\x12&.dapr.proto.runtime.v1.ShutdownRequest\x1a\x16.google.protobuf.Empty\"\x00\x12l\n\x11ScheduleJobAlpha1\x12).dapr.proto.runtime.v1.ScheduleJobRequest\x1a*.dapr.proto.runtime.v1.ScheduleJobResponse\"\x00\x12]\n\x0cGetJobAlpha1\x12$.dapr.proto.runtime.v1.GetJobRequest\x1a%.dapr.proto.runtime.v1.GetJobResponse\"\x00\x12\x66\n\x0f\x44\x65leteJobAlpha1\x12\'.dapr.proto.runtime.v1.DeleteJobRequest\x1a(.dapr.proto.runtime.v1.DeleteJobResponse\"\x00\x12k\n\x0e\x43onverseAlpha1\x12*.dapr.proto.runtime.v1.ConversationRequest\x1a+.dapr.proto.runtime.v1.ConversationResponse\"\x00\x42i\n\nio.dapr.v1B\nDaprProtosZ1github.com/dapr/dapr/pkg/proto/runtime/v1;runtime\xaa\x02\x1b\x44\x61pr.Client.Autogen.Grpc.v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) diff --git a/dapr/proto/runtime/v1/dapr_pb2.pyi b/dapr/proto/runtime/v1/dapr_pb2.pyi index aee50395a..7b6ce8a70 100644 --- a/dapr/proto/runtime/v1/dapr_pb2.pyi +++ b/dapr/proto/runtime/v1/dapr_pb2.pyi @@ -13,6 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ + import builtins import collections.abc import dapr.proto.common.v1.common_pb2 @@ -61,7 +62,7 @@ STREAMING: PubsubSubscriptionType.ValueType # 3 """Bidirectional Streaming subscription""" global___PubsubSubscriptionType = PubsubSubscriptionType -@typing_extensions.final +@typing.final class InvokeServiceRequest(google.protobuf.message.Message): """InvokeServiceRequest represents the request message for Service invocation.""" @@ -74,24 +75,25 @@ class InvokeServiceRequest(google.protobuf.message.Message): @property def message(self) -> dapr.proto.common.v1.common_pb2.InvokeRequest: """Required. message which will be delivered to callee.""" + def __init__( self, *, id: builtins.str = ..., message: dapr.proto.common.v1.common_pb2.InvokeRequest | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["message", b"message"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["id", b"id", "message", b"message"]) -> None: ... + def HasField(self, field_name: typing.Literal["message", b"message"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["id", b"id", "message", b"message"]) -> None: ... global___InvokeServiceRequest = InvokeServiceRequest -@typing_extensions.final +@typing.final class GetStateRequest(google.protobuf.message.Message): """GetStateRequest is the message to get key-value states from specific state store.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -105,7 +107,7 @@ class GetStateRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... STORE_NAME_FIELD_NUMBER: builtins.int KEY_FIELD_NUMBER: builtins.int @@ -120,6 +122,7 @@ class GetStateRequest(google.protobuf.message.Message): @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """The metadata which will be sent to state store components.""" + def __init__( self, *, @@ -128,17 +131,17 @@ class GetStateRequest(google.protobuf.message.Message): consistency: dapr.proto.common.v1.common_pb2.StateOptions.StateConsistency.ValueType = ..., metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["consistency", b"consistency", "key", b"key", "metadata", b"metadata", "store_name", b"store_name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["consistency", b"consistency", "key", b"key", "metadata", b"metadata", "store_name", b"store_name"]) -> None: ... global___GetStateRequest = GetStateRequest -@typing_extensions.final +@typing.final class GetBulkStateRequest(google.protobuf.message.Message): """GetBulkStateRequest is the message to get a list of key-value states from specific state store.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -152,7 +155,7 @@ class GetBulkStateRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... STORE_NAME_FIELD_NUMBER: builtins.int KEYS_FIELD_NUMBER: builtins.int @@ -160,14 +163,16 @@ class GetBulkStateRequest(google.protobuf.message.Message): METADATA_FIELD_NUMBER: builtins.int store_name: builtins.str """The name of state store.""" + parallelism: builtins.int + """The number of parallel operations executed on the state store for a get operation.""" @property def keys(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """The keys to get.""" - parallelism: builtins.int - """The number of parallel operations executed on the state store for a get operation.""" + @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """The metadata which will be sent to state store components.""" + def __init__( self, *, @@ -176,11 +181,11 @@ class GetBulkStateRequest(google.protobuf.message.Message): parallelism: builtins.int = ..., metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["keys", b"keys", "metadata", b"metadata", "parallelism", b"parallelism", "store_name", b"store_name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["keys", b"keys", "metadata", b"metadata", "parallelism", b"parallelism", "store_name", b"store_name"]) -> None: ... global___GetBulkStateRequest = GetBulkStateRequest -@typing_extensions.final +@typing.final class GetBulkStateResponse(google.protobuf.message.Message): """GetBulkStateResponse is the response conveying the list of state values.""" @@ -190,16 +195,17 @@ class GetBulkStateResponse(google.protobuf.message.Message): @property def items(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BulkStateItem]: """The list of items containing the keys to get values for.""" + def __init__( self, *, items: collections.abc.Iterable[global___BulkStateItem] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["items", b"items"]) -> None: ... + def ClearField(self, field_name: typing.Literal["items", b"items"]) -> None: ... global___GetBulkStateResponse = GetBulkStateResponse -@typing_extensions.final +@typing.final class BulkStateItem(google.protobuf.message.Message): """BulkStateItem is the response item for a bulk get operation. Return values include the item key, data and etag. @@ -207,7 +213,7 @@ class BulkStateItem(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -221,7 +227,7 @@ class BulkStateItem(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... KEY_FIELD_NUMBER: builtins.int DATA_FIELD_NUMBER: builtins.int @@ -241,6 +247,7 @@ class BulkStateItem(google.protobuf.message.Message): @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """The metadata which will be sent to app.""" + def __init__( self, *, @@ -250,17 +257,17 @@ class BulkStateItem(google.protobuf.message.Message): error: builtins.str = ..., metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["data", b"data", "error", b"error", "etag", b"etag", "key", b"key", "metadata", b"metadata"]) -> None: ... + def ClearField(self, field_name: typing.Literal["data", b"data", "error", b"error", "etag", b"etag", "key", b"key", "metadata", b"metadata"]) -> None: ... global___BulkStateItem = BulkStateItem -@typing_extensions.final +@typing.final class GetStateResponse(google.protobuf.message.Message): """GetStateResponse is the response conveying the state value and etag.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -274,7 +281,7 @@ class GetStateResponse(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... DATA_FIELD_NUMBER: builtins.int ETAG_FIELD_NUMBER: builtins.int @@ -288,6 +295,7 @@ class GetStateResponse(google.protobuf.message.Message): @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """The metadata which will be sent to app.""" + def __init__( self, *, @@ -295,17 +303,17 @@ class GetStateResponse(google.protobuf.message.Message): etag: builtins.str = ..., metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["data", b"data", "etag", b"etag", "metadata", b"metadata"]) -> None: ... + def ClearField(self, field_name: typing.Literal["data", b"data", "etag", b"etag", "metadata", b"metadata"]) -> None: ... global___GetStateResponse = GetStateResponse -@typing_extensions.final +@typing.final class DeleteStateRequest(google.protobuf.message.Message): """DeleteStateRequest is the message to delete key-value states in the specific state store.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -319,7 +327,7 @@ class DeleteStateRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... STORE_NAME_FIELD_NUMBER: builtins.int KEY_FIELD_NUMBER: builtins.int @@ -335,14 +343,17 @@ class DeleteStateRequest(google.protobuf.message.Message): """The entity tag which represents the specific version of data. The exact ETag format is defined by the corresponding data store. """ + @property def options(self) -> dapr.proto.common.v1.common_pb2.StateOptions: """State operation options which includes concurrency/ consistency/retry_policy. """ + @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """The metadata which will be sent to state store components.""" + def __init__( self, *, @@ -352,12 +363,12 @@ class DeleteStateRequest(google.protobuf.message.Message): options: dapr.proto.common.v1.common_pb2.StateOptions | None = ..., metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["etag", b"etag", "options", b"options"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["etag", b"etag", "key", b"key", "metadata", b"metadata", "options", b"options", "store_name", b"store_name"]) -> None: ... + def HasField(self, field_name: typing.Literal["etag", b"etag", "options", b"options"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["etag", b"etag", "key", b"key", "metadata", b"metadata", "options", b"options", "store_name", b"store_name"]) -> None: ... global___DeleteStateRequest = DeleteStateRequest -@typing_extensions.final +@typing.final class DeleteBulkStateRequest(google.protobuf.message.Message): """DeleteBulkStateRequest is the message to delete a list of key-value states from specific state store.""" @@ -370,17 +381,18 @@ class DeleteBulkStateRequest(google.protobuf.message.Message): @property def states(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[dapr.proto.common.v1.common_pb2.StateItem]: """The array of the state key values.""" + def __init__( self, *, store_name: builtins.str = ..., states: collections.abc.Iterable[dapr.proto.common.v1.common_pb2.StateItem] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["states", b"states", "store_name", b"store_name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["states", b"states", "store_name", b"store_name"]) -> None: ... global___DeleteBulkStateRequest = DeleteBulkStateRequest -@typing_extensions.final +@typing.final class SaveStateRequest(google.protobuf.message.Message): """SaveStateRequest is the message to save multiple states into state store.""" @@ -393,23 +405,24 @@ class SaveStateRequest(google.protobuf.message.Message): @property def states(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[dapr.proto.common.v1.common_pb2.StateItem]: """The array of the state key values.""" + def __init__( self, *, store_name: builtins.str = ..., states: collections.abc.Iterable[dapr.proto.common.v1.common_pb2.StateItem] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["states", b"states", "store_name", b"store_name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["states", b"states", "store_name", b"store_name"]) -> None: ... global___SaveStateRequest = SaveStateRequest -@typing_extensions.final +@typing.final class QueryStateRequest(google.protobuf.message.Message): """QueryStateRequest is the message to query state store.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -423,7 +436,7 @@ class QueryStateRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... STORE_NAME_FIELD_NUMBER: builtins.int QUERY_FIELD_NUMBER: builtins.int @@ -435,6 +448,7 @@ class QueryStateRequest(google.protobuf.message.Message): @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """The metadata which will be sent to state store components.""" + def __init__( self, *, @@ -442,11 +456,11 @@ class QueryStateRequest(google.protobuf.message.Message): query: builtins.str = ..., metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["metadata", b"metadata", "query", b"query", "store_name", b"store_name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["metadata", b"metadata", "query", b"query", "store_name", b"store_name"]) -> None: ... global___QueryStateRequest = QueryStateRequest -@typing_extensions.final +@typing.final class QueryStateItem(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -472,17 +486,17 @@ class QueryStateItem(google.protobuf.message.Message): etag: builtins.str = ..., error: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["data", b"data", "error", b"error", "etag", b"etag", "key", b"key"]) -> None: ... + def ClearField(self, field_name: typing.Literal["data", b"data", "error", b"error", "etag", b"etag", "key", b"key"]) -> None: ... global___QueryStateItem = QueryStateItem -@typing_extensions.final +@typing.final class QueryStateResponse(google.protobuf.message.Message): """QueryStateResponse is the response conveying the query results.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -496,19 +510,21 @@ class QueryStateResponse(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... RESULTS_FIELD_NUMBER: builtins.int TOKEN_FIELD_NUMBER: builtins.int METADATA_FIELD_NUMBER: builtins.int + token: builtins.str + """Pagination token.""" @property def results(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___QueryStateItem]: """An array of query results.""" - token: builtins.str - """Pagination token.""" + @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """The metadata which will be sent to app.""" + def __init__( self, *, @@ -516,17 +532,17 @@ class QueryStateResponse(google.protobuf.message.Message): token: builtins.str = ..., metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["metadata", b"metadata", "results", b"results", "token", b"token"]) -> None: ... + def ClearField(self, field_name: typing.Literal["metadata", b"metadata", "results", b"results", "token", b"token"]) -> None: ... global___QueryStateResponse = QueryStateResponse -@typing_extensions.final +@typing.final class PublishEventRequest(google.protobuf.message.Message): """PublishEventRequest is the message to publish event data to pubsub topic""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -540,7 +556,7 @@ class PublishEventRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... PUBSUB_NAME_FIELD_NUMBER: builtins.int TOPIC_FIELD_NUMBER: builtins.int @@ -562,6 +578,7 @@ class PublishEventRequest(google.protobuf.message.Message): metadata property: - key : the key of the message. """ + def __init__( self, *, @@ -571,17 +588,17 @@ class PublishEventRequest(google.protobuf.message.Message): data_content_type: builtins.str = ..., metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["data", b"data", "data_content_type", b"data_content_type", "metadata", b"metadata", "pubsub_name", b"pubsub_name", "topic", b"topic"]) -> None: ... + def ClearField(self, field_name: typing.Literal["data", b"data", "data_content_type", b"data_content_type", "metadata", b"metadata", "pubsub_name", b"pubsub_name", "topic", b"topic"]) -> None: ... global___PublishEventRequest = PublishEventRequest -@typing_extensions.final +@typing.final class BulkPublishRequest(google.protobuf.message.Message): """BulkPublishRequest is the message to bulk publish events to pubsub topic""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -595,7 +612,7 @@ class BulkPublishRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... PUBSUB_NAME_FIELD_NUMBER: builtins.int TOPIC_FIELD_NUMBER: builtins.int @@ -608,9 +625,11 @@ class BulkPublishRequest(google.protobuf.message.Message): @property def entries(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BulkPublishRequestEntry]: """The entries which contain the individual events and associated details to be published""" + @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """The request level metadata passing to to the pubsub components""" + def __init__( self, *, @@ -619,17 +638,17 @@ class BulkPublishRequest(google.protobuf.message.Message): entries: collections.abc.Iterable[global___BulkPublishRequestEntry] | None = ..., metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["entries", b"entries", "metadata", b"metadata", "pubsub_name", b"pubsub_name", "topic", b"topic"]) -> None: ... + def ClearField(self, field_name: typing.Literal["entries", b"entries", "metadata", b"metadata", "pubsub_name", b"pubsub_name", "topic", b"topic"]) -> None: ... global___BulkPublishRequest = BulkPublishRequest -@typing_extensions.final +@typing.final class BulkPublishRequestEntry(google.protobuf.message.Message): """BulkPublishRequestEntry is the message containing the event to be bulk published""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -643,7 +662,7 @@ class BulkPublishRequestEntry(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... ENTRY_ID_FIELD_NUMBER: builtins.int EVENT_FIELD_NUMBER: builtins.int @@ -658,6 +677,7 @@ class BulkPublishRequestEntry(google.protobuf.message.Message): @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """The event level metadata passing to the pubsub component""" + def __init__( self, *, @@ -666,11 +686,11 @@ class BulkPublishRequestEntry(google.protobuf.message.Message): content_type: builtins.str = ..., metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["content_type", b"content_type", "entry_id", b"entry_id", "event", b"event", "metadata", b"metadata"]) -> None: ... + def ClearField(self, field_name: typing.Literal["content_type", b"content_type", "entry_id", b"entry_id", "event", b"event", "metadata", b"metadata"]) -> None: ... global___BulkPublishRequestEntry = BulkPublishRequestEntry -@typing_extensions.final +@typing.final class BulkPublishResponse(google.protobuf.message.Message): """BulkPublishResponse is the message returned from a BulkPublishEvent call""" @@ -680,16 +700,17 @@ class BulkPublishResponse(google.protobuf.message.Message): @property def failedEntries(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BulkPublishResponseFailedEntry]: """The entries for different events that failed publish in the BulkPublishEvent call""" + def __init__( self, *, failedEntries: collections.abc.Iterable[global___BulkPublishResponseFailedEntry] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["failedEntries", b"failedEntries"]) -> None: ... + def ClearField(self, field_name: typing.Literal["failedEntries", b"failedEntries"]) -> None: ... global___BulkPublishResponse = BulkPublishResponse -@typing_extensions.final +@typing.final class BulkPublishResponseFailedEntry(google.protobuf.message.Message): """BulkPublishResponseFailedEntry is the message containing the entryID and error of a failed event in BulkPublishEvent call""" @@ -707,11 +728,11 @@ class BulkPublishResponseFailedEntry(google.protobuf.message.Message): entry_id: builtins.str = ..., error: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["entry_id", b"entry_id", "error", b"error"]) -> None: ... + def ClearField(self, field_name: typing.Literal["entry_id", b"entry_id", "error", b"error"]) -> None: ... global___BulkPublishResponseFailedEntry = BulkPublishResponseFailedEntry -@typing_extensions.final +@typing.final class SubscribeTopicEventsRequestAlpha1(google.protobuf.message.Message): """SubscribeTopicEventsRequestAlpha1 is a message containing the details for subscribing to a topic via streaming. @@ -733,13 +754,13 @@ class SubscribeTopicEventsRequestAlpha1(google.protobuf.message.Message): initial_request: global___SubscribeTopicEventsRequestInitialAlpha1 | None = ..., event_processed: global___SubscribeTopicEventsRequestProcessedAlpha1 | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["event_processed", b"event_processed", "initial_request", b"initial_request", "subscribe_topic_events_request_type", b"subscribe_topic_events_request_type"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["event_processed", b"event_processed", "initial_request", b"initial_request", "subscribe_topic_events_request_type", b"subscribe_topic_events_request_type"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["subscribe_topic_events_request_type", b"subscribe_topic_events_request_type"]) -> typing_extensions.Literal["initial_request", "event_processed"] | None: ... + def HasField(self, field_name: typing.Literal["event_processed", b"event_processed", "initial_request", b"initial_request", "subscribe_topic_events_request_type", b"subscribe_topic_events_request_type"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["event_processed", b"event_processed", "initial_request", b"initial_request", "subscribe_topic_events_request_type", b"subscribe_topic_events_request_type"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["subscribe_topic_events_request_type", b"subscribe_topic_events_request_type"]) -> typing.Literal["initial_request", "event_processed"] | None: ... global___SubscribeTopicEventsRequestAlpha1 = SubscribeTopicEventsRequestAlpha1 -@typing_extensions.final +@typing.final class SubscribeTopicEventsRequestInitialAlpha1(google.protobuf.message.Message): """SubscribeTopicEventsRequestInitialAlpha1 is the initial message containing the details for subscribing to a topic via streaming. @@ -747,7 +768,7 @@ class SubscribeTopicEventsRequestInitialAlpha1(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -761,7 +782,7 @@ class SubscribeTopicEventsRequestInitialAlpha1(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... PUBSUB_NAME_FIELD_NUMBER: builtins.int TOPIC_FIELD_NUMBER: builtins.int @@ -771,6 +792,10 @@ class SubscribeTopicEventsRequestInitialAlpha1(google.protobuf.message.Message): """The name of the pubsub component""" topic: builtins.str """The pubsub topic""" + dead_letter_topic: builtins.str + """dead_letter_topic is the topic to which messages that fail to be processed + are sent. + """ @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """The metadata passing to pub components @@ -778,10 +803,7 @@ class SubscribeTopicEventsRequestInitialAlpha1(google.protobuf.message.Message): metadata property: - key : the key of the message. """ - dead_letter_topic: builtins.str - """dead_letter_topic is the topic to which messages that fail to be processed - are sent. - """ + def __init__( self, *, @@ -790,13 +812,13 @@ class SubscribeTopicEventsRequestInitialAlpha1(google.protobuf.message.Message): metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., dead_letter_topic: builtins.str | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["_dead_letter_topic", b"_dead_letter_topic", "dead_letter_topic", b"dead_letter_topic"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["_dead_letter_topic", b"_dead_letter_topic", "dead_letter_topic", b"dead_letter_topic", "metadata", b"metadata", "pubsub_name", b"pubsub_name", "topic", b"topic"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["_dead_letter_topic", b"_dead_letter_topic"]) -> typing_extensions.Literal["dead_letter_topic"] | None: ... + def HasField(self, field_name: typing.Literal["_dead_letter_topic", b"_dead_letter_topic", "dead_letter_topic", b"dead_letter_topic"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_dead_letter_topic", b"_dead_letter_topic", "dead_letter_topic", b"dead_letter_topic", "metadata", b"metadata", "pubsub_name", b"pubsub_name", "topic", b"topic"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_dead_letter_topic", b"_dead_letter_topic"]) -> typing.Literal["dead_letter_topic"] | None: ... global___SubscribeTopicEventsRequestInitialAlpha1 = SubscribeTopicEventsRequestInitialAlpha1 -@typing_extensions.final +@typing.final class SubscribeTopicEventsRequestProcessedAlpha1(google.protobuf.message.Message): """SubscribeTopicEventsRequestProcessedAlpha1 is the message containing the subscription to a topic. @@ -811,18 +833,19 @@ class SubscribeTopicEventsRequestProcessedAlpha1(google.protobuf.message.Message @property def status(self) -> dapr.proto.runtime.v1.appcallback_pb2.TopicEventResponse: """status is the result of the subscription request.""" + def __init__( self, *, id: builtins.str = ..., status: dapr.proto.runtime.v1.appcallback_pb2.TopicEventResponse | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["status", b"status"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["id", b"id", "status", b"status"]) -> None: ... + def HasField(self, field_name: typing.Literal["status", b"status"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["id", b"id", "status", b"status"]) -> None: ... global___SubscribeTopicEventsRequestProcessedAlpha1 = SubscribeTopicEventsRequestProcessedAlpha1 -@typing_extensions.final +@typing.final class SubscribeTopicEventsResponseAlpha1(google.protobuf.message.Message): """SubscribeTopicEventsResponseAlpha1 is a message returned from daprd when subscribing to a topic via streaming. @@ -842,13 +865,13 @@ class SubscribeTopicEventsResponseAlpha1(google.protobuf.message.Message): initial_response: global___SubscribeTopicEventsResponseInitialAlpha1 | None = ..., event_message: dapr.proto.runtime.v1.appcallback_pb2.TopicEventRequest | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["event_message", b"event_message", "initial_response", b"initial_response", "subscribe_topic_events_response_type", b"subscribe_topic_events_response_type"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["event_message", b"event_message", "initial_response", b"initial_response", "subscribe_topic_events_response_type", b"subscribe_topic_events_response_type"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["subscribe_topic_events_response_type", b"subscribe_topic_events_response_type"]) -> typing_extensions.Literal["initial_response", "event_message"] | None: ... + def HasField(self, field_name: typing.Literal["event_message", b"event_message", "initial_response", b"initial_response", "subscribe_topic_events_response_type", b"subscribe_topic_events_response_type"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["event_message", b"event_message", "initial_response", b"initial_response", "subscribe_topic_events_response_type", b"subscribe_topic_events_response_type"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["subscribe_topic_events_response_type", b"subscribe_topic_events_response_type"]) -> typing.Literal["initial_response", "event_message"] | None: ... global___SubscribeTopicEventsResponseAlpha1 = SubscribeTopicEventsResponseAlpha1 -@typing_extensions.final +@typing.final class SubscribeTopicEventsResponseInitialAlpha1(google.protobuf.message.Message): """SubscribeTopicEventsResponseInitialAlpha1 is the initial response from daprd when subscribing to a topic. @@ -862,13 +885,13 @@ class SubscribeTopicEventsResponseInitialAlpha1(google.protobuf.message.Message) global___SubscribeTopicEventsResponseInitialAlpha1 = SubscribeTopicEventsResponseInitialAlpha1 -@typing_extensions.final +@typing.final class InvokeBindingRequest(google.protobuf.message.Message): """InvokeBindingRequest is the message to send data to output bindings""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -882,7 +905,7 @@ class InvokeBindingRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... NAME_FIELD_NUMBER: builtins.int DATA_FIELD_NUMBER: builtins.int @@ -892,6 +915,8 @@ class InvokeBindingRequest(google.protobuf.message.Message): """The name of the output binding to invoke.""" data: builtins.bytes """The data which will be sent to output binding.""" + operation: builtins.str + """The name of the operation type for the binding to invoke""" @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """The metadata passing to output binding components @@ -903,8 +928,7 @@ class InvokeBindingRequest(google.protobuf.message.Message): have a default time to live. The message ttl overrides any value in the binding definition. """ - operation: builtins.str - """The name of the operation type for the binding to invoke""" + def __init__( self, *, @@ -913,17 +937,17 @@ class InvokeBindingRequest(google.protobuf.message.Message): metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., operation: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["data", b"data", "metadata", b"metadata", "name", b"name", "operation", b"operation"]) -> None: ... + def ClearField(self, field_name: typing.Literal["data", b"data", "metadata", b"metadata", "name", b"name", "operation", b"operation"]) -> None: ... global___InvokeBindingRequest = InvokeBindingRequest -@typing_extensions.final +@typing.final class InvokeBindingResponse(google.protobuf.message.Message): """InvokeBindingResponse is the message returned from an output binding invocation""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -937,7 +961,7 @@ class InvokeBindingResponse(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... DATA_FIELD_NUMBER: builtins.int METADATA_FIELD_NUMBER: builtins.int @@ -946,23 +970,24 @@ class InvokeBindingResponse(google.protobuf.message.Message): @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """The metadata returned from an external system""" + def __init__( self, *, data: builtins.bytes = ..., metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["data", b"data", "metadata", b"metadata"]) -> None: ... + def ClearField(self, field_name: typing.Literal["data", b"data", "metadata", b"metadata"]) -> None: ... global___InvokeBindingResponse = InvokeBindingResponse -@typing_extensions.final +@typing.final class GetSecretRequest(google.protobuf.message.Message): """GetSecretRequest is the message to get secret from secret store.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -976,7 +1001,7 @@ class GetSecretRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... STORE_NAME_FIELD_NUMBER: builtins.int KEY_FIELD_NUMBER: builtins.int @@ -988,6 +1013,7 @@ class GetSecretRequest(google.protobuf.message.Message): @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """The metadata which will be sent to secret store components.""" + def __init__( self, *, @@ -995,17 +1021,17 @@ class GetSecretRequest(google.protobuf.message.Message): key: builtins.str = ..., metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "metadata", b"metadata", "store_name", b"store_name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "metadata", b"metadata", "store_name", b"store_name"]) -> None: ... global___GetSecretRequest = GetSecretRequest -@typing_extensions.final +@typing.final class GetSecretResponse(google.protobuf.message.Message): """GetSecretResponse is the response message to convey the requested secret.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class DataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1019,7 +1045,7 @@ class GetSecretResponse(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... DATA_FIELD_NUMBER: builtins.int @property @@ -1027,22 +1053,23 @@ class GetSecretResponse(google.protobuf.message.Message): """data is the secret value. Some secret store, such as kubernetes secret store, can save multiple secrets for single secret key. """ + def __init__( self, *, data: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["data", b"data"]) -> None: ... + def ClearField(self, field_name: typing.Literal["data", b"data"]) -> None: ... global___GetSecretResponse = GetSecretResponse -@typing_extensions.final +@typing.final class GetBulkSecretRequest(google.protobuf.message.Message): """GetBulkSecretRequest is the message to get the secrets from secret store.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1056,7 +1083,7 @@ class GetBulkSecretRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... STORE_NAME_FIELD_NUMBER: builtins.int METADATA_FIELD_NUMBER: builtins.int @@ -1065,23 +1092,24 @@ class GetBulkSecretRequest(google.protobuf.message.Message): @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """The metadata which will be sent to secret store components.""" + def __init__( self, *, store_name: builtins.str = ..., metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["metadata", b"metadata", "store_name", b"store_name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["metadata", b"metadata", "store_name", b"store_name"]) -> None: ... global___GetBulkSecretRequest = GetBulkSecretRequest -@typing_extensions.final +@typing.final class SecretResponse(google.protobuf.message.Message): """SecretResponse is a map of decrypted string/string values""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class SecretsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1095,7 +1123,7 @@ class SecretResponse(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... SECRETS_FIELD_NUMBER: builtins.int @property @@ -1105,17 +1133,17 @@ class SecretResponse(google.protobuf.message.Message): *, secrets: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["secrets", b"secrets"]) -> None: ... + def ClearField(self, field_name: typing.Literal["secrets", b"secrets"]) -> None: ... global___SecretResponse = SecretResponse -@typing_extensions.final +@typing.final class GetBulkSecretResponse(google.protobuf.message.Message): """GetBulkSecretResponse is the response message to convey the requested secrets.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class DataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1130,8 +1158,8 @@ class GetBulkSecretResponse(google.protobuf.message.Message): key: builtins.str = ..., value: global___SecretResponse | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... DATA_FIELD_NUMBER: builtins.int @property @@ -1139,16 +1167,17 @@ class GetBulkSecretResponse(google.protobuf.message.Message): """data hold the secret values. Some secret store, such as kubernetes secret store, can save multiple secrets for single secret key. """ + def __init__( self, *, data: collections.abc.Mapping[builtins.str, global___SecretResponse] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["data", b"data"]) -> None: ... + def ClearField(self, field_name: typing.Literal["data", b"data"]) -> None: ... global___GetBulkSecretResponse = GetBulkSecretResponse -@typing_extensions.final +@typing.final class TransactionalStateOperation(google.protobuf.message.Message): """TransactionalStateOperation is the message to execute a specified operation with a key-value pair.""" @@ -1161,24 +1190,25 @@ class TransactionalStateOperation(google.protobuf.message.Message): @property def request(self) -> dapr.proto.common.v1.common_pb2.StateItem: """State values to be operated on""" + def __init__( self, *, operationType: builtins.str = ..., request: dapr.proto.common.v1.common_pb2.StateItem | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["request", b"request"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["operationType", b"operationType", "request", b"request"]) -> None: ... + def HasField(self, field_name: typing.Literal["request", b"request"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["operationType", b"operationType", "request", b"request"]) -> None: ... global___TransactionalStateOperation = TransactionalStateOperation -@typing_extensions.final +@typing.final class ExecuteStateTransactionRequest(google.protobuf.message.Message): """ExecuteStateTransactionRequest is the message to execute multiple operations on a specified store.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1192,7 +1222,7 @@ class ExecuteStateTransactionRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... STORENAME_FIELD_NUMBER: builtins.int OPERATIONS_FIELD_NUMBER: builtins.int @@ -1202,9 +1232,11 @@ class ExecuteStateTransactionRequest(google.protobuf.message.Message): @property def operations(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TransactionalStateOperation]: """Required. transactional operation list.""" + @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """The metadata used for transactional operations.""" + def __init__( self, *, @@ -1212,11 +1244,11 @@ class ExecuteStateTransactionRequest(google.protobuf.message.Message): operations: collections.abc.Iterable[global___TransactionalStateOperation] | None = ..., metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["metadata", b"metadata", "operations", b"operations", "storeName", b"storeName"]) -> None: ... + def ClearField(self, field_name: typing.Literal["metadata", b"metadata", "operations", b"operations", "storeName", b"storeName"]) -> None: ... global___ExecuteStateTransactionRequest = ExecuteStateTransactionRequest -@typing_extensions.final +@typing.final class RegisterActorTimerRequest(google.protobuf.message.Message): """RegisterActorTimerRequest is the message to register a timer for an actor of a given type and id.""" @@ -1250,11 +1282,11 @@ class RegisterActorTimerRequest(google.protobuf.message.Message): data: builtins.bytes = ..., ttl: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["actor_id", b"actor_id", "actor_type", b"actor_type", "callback", b"callback", "data", b"data", "due_time", b"due_time", "name", b"name", "period", b"period", "ttl", b"ttl"]) -> None: ... + def ClearField(self, field_name: typing.Literal["actor_id", b"actor_id", "actor_type", b"actor_type", "callback", b"callback", "data", b"data", "due_time", b"due_time", "name", b"name", "period", b"period", "ttl", b"ttl"]) -> None: ... global___RegisterActorTimerRequest = RegisterActorTimerRequest -@typing_extensions.final +@typing.final class UnregisterActorTimerRequest(google.protobuf.message.Message): """UnregisterActorTimerRequest is the message to unregister an actor timer""" @@ -1273,11 +1305,11 @@ class UnregisterActorTimerRequest(google.protobuf.message.Message): actor_id: builtins.str = ..., name: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["actor_id", b"actor_id", "actor_type", b"actor_type", "name", b"name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["actor_id", b"actor_id", "actor_type", b"actor_type", "name", b"name"]) -> None: ... global___UnregisterActorTimerRequest = UnregisterActorTimerRequest -@typing_extensions.final +@typing.final class RegisterActorReminderRequest(google.protobuf.message.Message): """RegisterActorReminderRequest is the message to register a reminder for an actor of a given type and id.""" @@ -1308,11 +1340,11 @@ class RegisterActorReminderRequest(google.protobuf.message.Message): data: builtins.bytes = ..., ttl: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["actor_id", b"actor_id", "actor_type", b"actor_type", "data", b"data", "due_time", b"due_time", "name", b"name", "period", b"period", "ttl", b"ttl"]) -> None: ... + def ClearField(self, field_name: typing.Literal["actor_id", b"actor_id", "actor_type", b"actor_type", "data", b"data", "due_time", b"due_time", "name", b"name", "period", b"period", "ttl", b"ttl"]) -> None: ... global___RegisterActorReminderRequest = RegisterActorReminderRequest -@typing_extensions.final +@typing.final class UnregisterActorReminderRequest(google.protobuf.message.Message): """UnregisterActorReminderRequest is the message to unregister an actor reminder.""" @@ -1331,11 +1363,11 @@ class UnregisterActorReminderRequest(google.protobuf.message.Message): actor_id: builtins.str = ..., name: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["actor_id", b"actor_id", "actor_type", b"actor_type", "name", b"name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["actor_id", b"actor_id", "actor_type", b"actor_type", "name", b"name"]) -> None: ... global___UnregisterActorReminderRequest = UnregisterActorReminderRequest -@typing_extensions.final +@typing.final class GetActorStateRequest(google.protobuf.message.Message): """GetActorStateRequest is the message to get key-value states from specific actor.""" @@ -1354,17 +1386,17 @@ class GetActorStateRequest(google.protobuf.message.Message): actor_id: builtins.str = ..., key: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["actor_id", b"actor_id", "actor_type", b"actor_type", "key", b"key"]) -> None: ... + def ClearField(self, field_name: typing.Literal["actor_id", b"actor_id", "actor_type", b"actor_type", "key", b"key"]) -> None: ... global___GetActorStateRequest = GetActorStateRequest -@typing_extensions.final +@typing.final class GetActorStateResponse(google.protobuf.message.Message): """GetActorStateResponse is the response conveying the actor's state value.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1378,7 +1410,7 @@ class GetActorStateResponse(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... DATA_FIELD_NUMBER: builtins.int METADATA_FIELD_NUMBER: builtins.int @@ -1386,17 +1418,18 @@ class GetActorStateResponse(google.protobuf.message.Message): @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """The metadata which will be sent to app.""" + def __init__( self, *, data: builtins.bytes = ..., metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["data", b"data", "metadata", b"metadata"]) -> None: ... + def ClearField(self, field_name: typing.Literal["data", b"data", "metadata", b"metadata"]) -> None: ... global___GetActorStateResponse = GetActorStateResponse -@typing_extensions.final +@typing.final class ExecuteActorStateTransactionRequest(google.protobuf.message.Message): """ExecuteActorStateTransactionRequest is the message to execute multiple operations on a specified actor.""" @@ -1416,17 +1449,17 @@ class ExecuteActorStateTransactionRequest(google.protobuf.message.Message): actor_id: builtins.str = ..., operations: collections.abc.Iterable[global___TransactionalActorStateOperation] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["actor_id", b"actor_id", "actor_type", b"actor_type", "operations", b"operations"]) -> None: ... + def ClearField(self, field_name: typing.Literal["actor_id", b"actor_id", "actor_type", b"actor_type", "operations", b"operations"]) -> None: ... global___ExecuteActorStateTransactionRequest = ExecuteActorStateTransactionRequest -@typing_extensions.final +@typing.final class TransactionalActorStateOperation(google.protobuf.message.Message): """TransactionalActorStateOperation is the message to execute a specified operation with a key-value pair.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1440,7 +1473,7 @@ class TransactionalActorStateOperation(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... OPERATIONTYPE_FIELD_NUMBER: builtins.int KEY_FIELD_NUMBER: builtins.int @@ -1457,6 +1490,7 @@ class TransactionalActorStateOperation(google.protobuf.message.Message): Common metadata property: - ttlInSeconds : the time to live in seconds for the stored value. """ + def __init__( self, *, @@ -1465,18 +1499,18 @@ class TransactionalActorStateOperation(google.protobuf.message.Message): value: google.protobuf.any_pb2.Any | None = ..., metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "metadata", b"metadata", "operationType", b"operationType", "value", b"value"]) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "metadata", b"metadata", "operationType", b"operationType", "value", b"value"]) -> None: ... global___TransactionalActorStateOperation = TransactionalActorStateOperation -@typing_extensions.final +@typing.final class InvokeActorRequest(google.protobuf.message.Message): """InvokeActorRequest is the message to call an actor.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1490,7 +1524,7 @@ class InvokeActorRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... ACTOR_TYPE_FIELD_NUMBER: builtins.int ACTOR_ID_FIELD_NUMBER: builtins.int @@ -1512,11 +1546,11 @@ class InvokeActorRequest(google.protobuf.message.Message): data: builtins.bytes = ..., metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["actor_id", b"actor_id", "actor_type", b"actor_type", "data", b"data", "metadata", b"metadata", "method", b"method"]) -> None: ... + def ClearField(self, field_name: typing.Literal["actor_id", b"actor_id", "actor_type", b"actor_type", "data", b"data", "metadata", b"metadata", "method", b"method"]) -> None: ... global___InvokeActorRequest = InvokeActorRequest -@typing_extensions.final +@typing.final class InvokeActorResponse(google.protobuf.message.Message): """InvokeActorResponse is the method that returns an actor invocation response.""" @@ -1529,11 +1563,11 @@ class InvokeActorResponse(google.protobuf.message.Message): *, data: builtins.bytes = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["data", b"data"]) -> None: ... + def ClearField(self, field_name: typing.Literal["data", b"data"]) -> None: ... global___InvokeActorResponse = InvokeActorResponse -@typing_extensions.final +@typing.final class GetMetadataRequest(google.protobuf.message.Message): """GetMetadataRequest is the message for the GetMetadata request. Empty @@ -1547,13 +1581,13 @@ class GetMetadataRequest(google.protobuf.message.Message): global___GetMetadataRequest = GetMetadataRequest -@typing_extensions.final +@typing.final class GetMetadataResponse(google.protobuf.message.Message): """GetMetadataResponse is a message that is returned on GetMetadata rpc call.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class ExtendedMetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1567,7 +1601,7 @@ class GetMetadataResponse(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... ID_FIELD_NUMBER: builtins.int ACTIVE_ACTORS_COUNT_FIELD_NUMBER: builtins.int @@ -1580,9 +1614,11 @@ class GetMetadataResponse(google.protobuf.message.Message): ENABLED_FEATURES_FIELD_NUMBER: builtins.int ACTOR_RUNTIME_FIELD_NUMBER: builtins.int id: builtins.str + runtime_version: builtins.str @property def active_actors_count(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ActiveActorsCount]: """Deprecated alias for actor_runtime.active_actors.""" + @property def registered_components(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RegisteredComponents]: ... @property @@ -1593,12 +1629,12 @@ class GetMetadataResponse(google.protobuf.message.Message): def http_endpoints(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MetadataHTTPEndpoint]: ... @property def app_connection_properties(self) -> global___AppConnectionProperties: ... - runtime_version: builtins.str @property def enabled_features(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... @property def actor_runtime(self) -> global___ActorRuntime: """TODO: Cassie: probably add scheduler runtime status""" + def __init__( self, *, @@ -1613,12 +1649,12 @@ class GetMetadataResponse(google.protobuf.message.Message): enabled_features: collections.abc.Iterable[builtins.str] | None = ..., actor_runtime: global___ActorRuntime | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["actor_runtime", b"actor_runtime", "app_connection_properties", b"app_connection_properties"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["active_actors_count", b"active_actors_count", "actor_runtime", b"actor_runtime", "app_connection_properties", b"app_connection_properties", "enabled_features", b"enabled_features", "extended_metadata", b"extended_metadata", "http_endpoints", b"http_endpoints", "id", b"id", "registered_components", b"registered_components", "runtime_version", b"runtime_version", "subscriptions", b"subscriptions"]) -> None: ... + def HasField(self, field_name: typing.Literal["actor_runtime", b"actor_runtime", "app_connection_properties", b"app_connection_properties"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["active_actors_count", b"active_actors_count", "actor_runtime", b"actor_runtime", "app_connection_properties", b"app_connection_properties", "enabled_features", b"enabled_features", "extended_metadata", b"extended_metadata", "http_endpoints", b"http_endpoints", "id", b"id", "registered_components", b"registered_components", "runtime_version", b"runtime_version", "subscriptions", b"subscriptions"]) -> None: ... global___GetMetadataResponse = GetMetadataResponse -@typing_extensions.final +@typing.final class ActorRuntime(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1653,13 +1689,14 @@ class ActorRuntime(google.protobuf.message.Message): PLACEMENT_FIELD_NUMBER: builtins.int runtime_status: global___ActorRuntime.ActorRuntimeStatus.ValueType """Contains an enum indicating whether the actor runtime has been initialized.""" - @property - def active_actors(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ActiveActorsCount]: - """Count of active actors per type.""" host_ready: builtins.bool """Indicates whether the actor runtime is ready to host actors.""" placement: builtins.str """Custom message from the placement provider.""" + @property + def active_actors(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ActiveActorsCount]: + """Count of active actors per type.""" + def __init__( self, *, @@ -1668,11 +1705,11 @@ class ActorRuntime(google.protobuf.message.Message): host_ready: builtins.bool = ..., placement: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["active_actors", b"active_actors", "host_ready", b"host_ready", "placement", b"placement", "runtime_status", b"runtime_status"]) -> None: ... + def ClearField(self, field_name: typing.Literal["active_actors", b"active_actors", "host_ready", b"host_ready", "placement", b"placement", "runtime_status", b"runtime_status"]) -> None: ... global___ActorRuntime = ActorRuntime -@typing_extensions.final +@typing.final class ActiveActorsCount(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1686,11 +1723,11 @@ class ActiveActorsCount(google.protobuf.message.Message): type: builtins.str = ..., count: builtins.int = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["count", b"count", "type", b"type"]) -> None: ... + def ClearField(self, field_name: typing.Literal["count", b"count", "type", b"type"]) -> None: ... global___ActiveActorsCount = ActiveActorsCount -@typing_extensions.final +@typing.final class RegisteredComponents(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1711,11 +1748,11 @@ class RegisteredComponents(google.protobuf.message.Message): version: builtins.str = ..., capabilities: collections.abc.Iterable[builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["capabilities", b"capabilities", "name", b"name", "type", b"type", "version", b"version"]) -> None: ... + def ClearField(self, field_name: typing.Literal["capabilities", b"capabilities", "name", b"name", "type", b"type", "version", b"version"]) -> None: ... global___RegisteredComponents = RegisteredComponents -@typing_extensions.final +@typing.final class MetadataHTTPEndpoint(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1726,11 +1763,11 @@ class MetadataHTTPEndpoint(google.protobuf.message.Message): *, name: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["name", b"name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["name", b"name"]) -> None: ... global___MetadataHTTPEndpoint = MetadataHTTPEndpoint -@typing_extensions.final +@typing.final class AppConnectionProperties(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1754,12 +1791,12 @@ class AppConnectionProperties(google.protobuf.message.Message): max_concurrency: builtins.int = ..., health: global___AppConnectionHealthProperties | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["health", b"health"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["channel_address", b"channel_address", "health", b"health", "max_concurrency", b"max_concurrency", "port", b"port", "protocol", b"protocol"]) -> None: ... + def HasField(self, field_name: typing.Literal["health", b"health"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["channel_address", b"channel_address", "health", b"health", "max_concurrency", b"max_concurrency", "port", b"port", "protocol", b"protocol"]) -> None: ... global___AppConnectionProperties = AppConnectionProperties -@typing_extensions.final +@typing.final class AppConnectionHealthProperties(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1779,15 +1816,15 @@ class AppConnectionHealthProperties(google.protobuf.message.Message): health_probe_timeout: builtins.str = ..., health_threshold: builtins.int = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["health_check_path", b"health_check_path", "health_probe_interval", b"health_probe_interval", "health_probe_timeout", b"health_probe_timeout", "health_threshold", b"health_threshold"]) -> None: ... + def ClearField(self, field_name: typing.Literal["health_check_path", b"health_check_path", "health_probe_interval", b"health_probe_interval", "health_probe_timeout", b"health_probe_timeout", "health_threshold", b"health_threshold"]) -> None: ... global___AppConnectionHealthProperties = AppConnectionHealthProperties -@typing_extensions.final +@typing.final class PubsubSubscription(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1801,7 +1838,7 @@ class PubsubSubscription(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... PUBSUB_NAME_FIELD_NUMBER: builtins.int TOPIC_FIELD_NUMBER: builtins.int @@ -1811,12 +1848,12 @@ class PubsubSubscription(google.protobuf.message.Message): TYPE_FIELD_NUMBER: builtins.int pubsub_name: builtins.str topic: builtins.str + dead_letter_topic: builtins.str + type: global___PubsubSubscriptionType.ValueType @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ... @property def rules(self) -> global___PubsubSubscriptionRules: ... - dead_letter_topic: builtins.str - type: global___PubsubSubscriptionType.ValueType def __init__( self, *, @@ -1827,12 +1864,12 @@ class PubsubSubscription(google.protobuf.message.Message): dead_letter_topic: builtins.str = ..., type: global___PubsubSubscriptionType.ValueType = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["rules", b"rules"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["dead_letter_topic", b"dead_letter_topic", "metadata", b"metadata", "pubsub_name", b"pubsub_name", "rules", b"rules", "topic", b"topic", "type", b"type"]) -> None: ... + def HasField(self, field_name: typing.Literal["rules", b"rules"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["dead_letter_topic", b"dead_letter_topic", "metadata", b"metadata", "pubsub_name", b"pubsub_name", "rules", b"rules", "topic", b"topic", "type", b"type"]) -> None: ... global___PubsubSubscription = PubsubSubscription -@typing_extensions.final +@typing.final class PubsubSubscriptionRules(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1844,11 +1881,11 @@ class PubsubSubscriptionRules(google.protobuf.message.Message): *, rules: collections.abc.Iterable[global___PubsubSubscriptionRule] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["rules", b"rules"]) -> None: ... + def ClearField(self, field_name: typing.Literal["rules", b"rules"]) -> None: ... global___PubsubSubscriptionRules = PubsubSubscriptionRules -@typing_extensions.final +@typing.final class PubsubSubscriptionRule(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1862,11 +1899,11 @@ class PubsubSubscriptionRule(google.protobuf.message.Message): match: builtins.str = ..., path: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["match", b"match", "path", b"path"]) -> None: ... + def ClearField(self, field_name: typing.Literal["match", b"match", "path", b"path"]) -> None: ... global___PubsubSubscriptionRule = PubsubSubscriptionRule -@typing_extensions.final +@typing.final class SetMetadataRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1880,17 +1917,17 @@ class SetMetadataRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... global___SetMetadataRequest = SetMetadataRequest -@typing_extensions.final +@typing.final class GetConfigurationRequest(google.protobuf.message.Message): """GetConfigurationRequest is the message to get a list of key-value configuration from specified configuration store.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1904,7 +1941,7 @@ class GetConfigurationRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... STORE_NAME_FIELD_NUMBER: builtins.int KEYS_FIELD_NUMBER: builtins.int @@ -1917,9 +1954,11 @@ class GetConfigurationRequest(google.protobuf.message.Message): If set, only query for the specified configuration items. Empty list means fetch all. """ + @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """Optional. The metadata which will be sent to configuration store components.""" + def __init__( self, *, @@ -1927,11 +1966,11 @@ class GetConfigurationRequest(google.protobuf.message.Message): keys: collections.abc.Iterable[builtins.str] | None = ..., metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["keys", b"keys", "metadata", b"metadata", "store_name", b"store_name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["keys", b"keys", "metadata", b"metadata", "store_name", b"store_name"]) -> None: ... global___GetConfigurationRequest = GetConfigurationRequest -@typing_extensions.final +@typing.final class GetConfigurationResponse(google.protobuf.message.Message): """GetConfigurationResponse is the response conveying the list of configuration values. It should be the FULL configuration of specified application which contains all of its configuration items. @@ -1939,7 +1978,7 @@ class GetConfigurationResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class ItemsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1954,8 +1993,8 @@ class GetConfigurationResponse(google.protobuf.message.Message): key: builtins.str = ..., value: dapr.proto.common.v1.common_pb2.ConfigurationItem | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... ITEMS_FIELD_NUMBER: builtins.int @property @@ -1965,17 +2004,17 @@ class GetConfigurationResponse(google.protobuf.message.Message): *, items: collections.abc.Mapping[builtins.str, dapr.proto.common.v1.common_pb2.ConfigurationItem] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["items", b"items"]) -> None: ... + def ClearField(self, field_name: typing.Literal["items", b"items"]) -> None: ... global___GetConfigurationResponse = GetConfigurationResponse -@typing_extensions.final +@typing.final class SubscribeConfigurationRequest(google.protobuf.message.Message): """SubscribeConfigurationRequest is the message to get a list of key-value configuration from specified configuration store.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1989,7 +2028,7 @@ class SubscribeConfigurationRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... STORE_NAME_FIELD_NUMBER: builtins.int KEYS_FIELD_NUMBER: builtins.int @@ -2002,9 +2041,11 @@ class SubscribeConfigurationRequest(google.protobuf.message.Message): If set, only query for the specified configuration items. Empty list means fetch all. """ + @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """The metadata which will be sent to configuration store components.""" + def __init__( self, *, @@ -2012,11 +2053,11 @@ class SubscribeConfigurationRequest(google.protobuf.message.Message): keys: collections.abc.Iterable[builtins.str] | None = ..., metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["keys", b"keys", "metadata", b"metadata", "store_name", b"store_name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["keys", b"keys", "metadata", b"metadata", "store_name", b"store_name"]) -> None: ... global___SubscribeConfigurationRequest = SubscribeConfigurationRequest -@typing_extensions.final +@typing.final class UnsubscribeConfigurationRequest(google.protobuf.message.Message): """UnSubscribeConfigurationRequest is the message to stop watching the key-value configuration.""" @@ -2034,15 +2075,15 @@ class UnsubscribeConfigurationRequest(google.protobuf.message.Message): store_name: builtins.str = ..., id: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["id", b"id", "store_name", b"store_name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["id", b"id", "store_name", b"store_name"]) -> None: ... global___UnsubscribeConfigurationRequest = UnsubscribeConfigurationRequest -@typing_extensions.final +@typing.final class SubscribeConfigurationResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class ItemsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -2057,8 +2098,8 @@ class SubscribeConfigurationResponse(google.protobuf.message.Message): key: builtins.str = ..., value: dapr.proto.common.v1.common_pb2.ConfigurationItem | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... ID_FIELD_NUMBER: builtins.int ITEMS_FIELD_NUMBER: builtins.int @@ -2067,17 +2108,18 @@ class SubscribeConfigurationResponse(google.protobuf.message.Message): @property def items(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, dapr.proto.common.v1.common_pb2.ConfigurationItem]: """The list of items containing configuration values""" + def __init__( self, *, id: builtins.str = ..., items: collections.abc.Mapping[builtins.str, dapr.proto.common.v1.common_pb2.ConfigurationItem] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["id", b"id", "items", b"items"]) -> None: ... + def ClearField(self, field_name: typing.Literal["id", b"id", "items", b"items"]) -> None: ... global___SubscribeConfigurationResponse = SubscribeConfigurationResponse -@typing_extensions.final +@typing.final class UnsubscribeConfigurationResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -2091,11 +2133,11 @@ class UnsubscribeConfigurationResponse(google.protobuf.message.Message): ok: builtins.bool = ..., message: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["message", b"message", "ok", b"ok"]) -> None: ... + def ClearField(self, field_name: typing.Literal["message", b"message", "ok", b"ok"]) -> None: ... global___UnsubscribeConfigurationResponse = UnsubscribeConfigurationResponse -@typing_extensions.final +@typing.final class TryLockRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -2136,11 +2178,11 @@ class TryLockRequest(google.protobuf.message.Message): lock_owner: builtins.str = ..., expiry_in_seconds: builtins.int = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["expiry_in_seconds", b"expiry_in_seconds", "lock_owner", b"lock_owner", "resource_id", b"resource_id", "store_name", b"store_name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["expiry_in_seconds", b"expiry_in_seconds", "lock_owner", b"lock_owner", "resource_id", b"resource_id", "store_name", b"store_name"]) -> None: ... global___TryLockRequest = TryLockRequest -@typing_extensions.final +@typing.final class TryLockResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -2151,11 +2193,11 @@ class TryLockResponse(google.protobuf.message.Message): *, success: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["success", b"success"]) -> None: ... + def ClearField(self, field_name: typing.Literal["success", b"success"]) -> None: ... global___TryLockResponse = TryLockResponse -@typing_extensions.final +@typing.final class UnlockRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -2173,11 +2215,11 @@ class UnlockRequest(google.protobuf.message.Message): resource_id: builtins.str = ..., lock_owner: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["lock_owner", b"lock_owner", "resource_id", b"resource_id", "store_name", b"store_name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["lock_owner", b"lock_owner", "resource_id", b"resource_id", "store_name", b"store_name"]) -> None: ... global___UnlockRequest = UnlockRequest -@typing_extensions.final +@typing.final class UnlockResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -2205,11 +2247,11 @@ class UnlockResponse(google.protobuf.message.Message): *, status: global___UnlockResponse.Status.ValueType = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["status", b"status"]) -> None: ... + def ClearField(self, field_name: typing.Literal["status", b"status"]) -> None: ... global___UnlockResponse = UnlockResponse -@typing_extensions.final +@typing.final class SubtleGetKeyRequest(google.protobuf.message.Message): """SubtleGetKeyRequest is the request object for SubtleGetKeyAlpha1.""" @@ -2248,11 +2290,11 @@ class SubtleGetKeyRequest(google.protobuf.message.Message): name: builtins.str = ..., format: global___SubtleGetKeyRequest.KeyFormat.ValueType = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["component_name", b"component_name", "format", b"format", "name", b"name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["component_name", b"component_name", "format", b"format", "name", b"name"]) -> None: ... global___SubtleGetKeyRequest = SubtleGetKeyRequest -@typing_extensions.final +@typing.final class SubtleGetKeyResponse(google.protobuf.message.Message): """SubtleGetKeyResponse is the response for SubtleGetKeyAlpha1.""" @@ -2272,11 +2314,11 @@ class SubtleGetKeyResponse(google.protobuf.message.Message): name: builtins.str = ..., public_key: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["name", b"name", "public_key", b"public_key"]) -> None: ... + def ClearField(self, field_name: typing.Literal["name", b"name", "public_key", b"public_key"]) -> None: ... global___SubtleGetKeyResponse = SubtleGetKeyResponse -@typing_extensions.final +@typing.final class SubtleEncryptRequest(google.protobuf.message.Message): """SubtleEncryptRequest is the request for SubtleEncryptAlpha1.""" @@ -2312,11 +2354,11 @@ class SubtleEncryptRequest(google.protobuf.message.Message): nonce: builtins.bytes = ..., associated_data: builtins.bytes = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["algorithm", b"algorithm", "associated_data", b"associated_data", "component_name", b"component_name", "key_name", b"key_name", "nonce", b"nonce", "plaintext", b"plaintext"]) -> None: ... + def ClearField(self, field_name: typing.Literal["algorithm", b"algorithm", "associated_data", b"associated_data", "component_name", b"component_name", "key_name", b"key_name", "nonce", b"nonce", "plaintext", b"plaintext"]) -> None: ... global___SubtleEncryptRequest = SubtleEncryptRequest -@typing_extensions.final +@typing.final class SubtleEncryptResponse(google.protobuf.message.Message): """SubtleEncryptResponse is the response for SubtleEncryptAlpha1.""" @@ -2336,11 +2378,11 @@ class SubtleEncryptResponse(google.protobuf.message.Message): ciphertext: builtins.bytes = ..., tag: builtins.bytes = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["ciphertext", b"ciphertext", "tag", b"tag"]) -> None: ... + def ClearField(self, field_name: typing.Literal["ciphertext", b"ciphertext", "tag", b"tag"]) -> None: ... global___SubtleEncryptResponse = SubtleEncryptResponse -@typing_extensions.final +@typing.final class SubtleDecryptRequest(google.protobuf.message.Message): """SubtleDecryptRequest is the request for SubtleDecryptAlpha1.""" @@ -2382,11 +2424,11 @@ class SubtleDecryptRequest(google.protobuf.message.Message): tag: builtins.bytes = ..., associated_data: builtins.bytes = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["algorithm", b"algorithm", "associated_data", b"associated_data", "ciphertext", b"ciphertext", "component_name", b"component_name", "key_name", b"key_name", "nonce", b"nonce", "tag", b"tag"]) -> None: ... + def ClearField(self, field_name: typing.Literal["algorithm", b"algorithm", "associated_data", b"associated_data", "ciphertext", b"ciphertext", "component_name", b"component_name", "key_name", b"key_name", "nonce", b"nonce", "tag", b"tag"]) -> None: ... global___SubtleDecryptRequest = SubtleDecryptRequest -@typing_extensions.final +@typing.final class SubtleDecryptResponse(google.protobuf.message.Message): """SubtleDecryptResponse is the response for SubtleDecryptAlpha1.""" @@ -2400,11 +2442,11 @@ class SubtleDecryptResponse(google.protobuf.message.Message): *, plaintext: builtins.bytes = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["plaintext", b"plaintext"]) -> None: ... + def ClearField(self, field_name: typing.Literal["plaintext", b"plaintext"]) -> None: ... global___SubtleDecryptResponse = SubtleDecryptResponse -@typing_extensions.final +@typing.final class SubtleWrapKeyRequest(google.protobuf.message.Message): """SubtleWrapKeyRequest is the request for SubtleWrapKeyAlpha1.""" @@ -2440,11 +2482,11 @@ class SubtleWrapKeyRequest(google.protobuf.message.Message): nonce: builtins.bytes = ..., associated_data: builtins.bytes = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["algorithm", b"algorithm", "associated_data", b"associated_data", "component_name", b"component_name", "key_name", b"key_name", "nonce", b"nonce", "plaintext_key", b"plaintext_key"]) -> None: ... + def ClearField(self, field_name: typing.Literal["algorithm", b"algorithm", "associated_data", b"associated_data", "component_name", b"component_name", "key_name", b"key_name", "nonce", b"nonce", "plaintext_key", b"plaintext_key"]) -> None: ... global___SubtleWrapKeyRequest = SubtleWrapKeyRequest -@typing_extensions.final +@typing.final class SubtleWrapKeyResponse(google.protobuf.message.Message): """SubtleWrapKeyResponse is the response for SubtleWrapKeyAlpha1.""" @@ -2464,11 +2506,11 @@ class SubtleWrapKeyResponse(google.protobuf.message.Message): wrapped_key: builtins.bytes = ..., tag: builtins.bytes = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["tag", b"tag", "wrapped_key", b"wrapped_key"]) -> None: ... + def ClearField(self, field_name: typing.Literal["tag", b"tag", "wrapped_key", b"wrapped_key"]) -> None: ... global___SubtleWrapKeyResponse = SubtleWrapKeyResponse -@typing_extensions.final +@typing.final class SubtleUnwrapKeyRequest(google.protobuf.message.Message): """SubtleUnwrapKeyRequest is the request for SubtleUnwrapKeyAlpha1.""" @@ -2510,11 +2552,11 @@ class SubtleUnwrapKeyRequest(google.protobuf.message.Message): tag: builtins.bytes = ..., associated_data: builtins.bytes = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["algorithm", b"algorithm", "associated_data", b"associated_data", "component_name", b"component_name", "key_name", b"key_name", "nonce", b"nonce", "tag", b"tag", "wrapped_key", b"wrapped_key"]) -> None: ... + def ClearField(self, field_name: typing.Literal["algorithm", b"algorithm", "associated_data", b"associated_data", "component_name", b"component_name", "key_name", b"key_name", "nonce", b"nonce", "tag", b"tag", "wrapped_key", b"wrapped_key"]) -> None: ... global___SubtleUnwrapKeyRequest = SubtleUnwrapKeyRequest -@typing_extensions.final +@typing.final class SubtleUnwrapKeyResponse(google.protobuf.message.Message): """SubtleUnwrapKeyResponse is the response for SubtleUnwrapKeyAlpha1.""" @@ -2528,11 +2570,11 @@ class SubtleUnwrapKeyResponse(google.protobuf.message.Message): *, plaintext_key: builtins.bytes = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["plaintext_key", b"plaintext_key"]) -> None: ... + def ClearField(self, field_name: typing.Literal["plaintext_key", b"plaintext_key"]) -> None: ... global___SubtleUnwrapKeyResponse = SubtleUnwrapKeyResponse -@typing_extensions.final +@typing.final class SubtleSignRequest(google.protobuf.message.Message): """SubtleSignRequest is the request for SubtleSignAlpha1.""" @@ -2558,11 +2600,11 @@ class SubtleSignRequest(google.protobuf.message.Message): algorithm: builtins.str = ..., key_name: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["algorithm", b"algorithm", "component_name", b"component_name", "digest", b"digest", "key_name", b"key_name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["algorithm", b"algorithm", "component_name", b"component_name", "digest", b"digest", "key_name", b"key_name"]) -> None: ... global___SubtleSignRequest = SubtleSignRequest -@typing_extensions.final +@typing.final class SubtleSignResponse(google.protobuf.message.Message): """SubtleSignResponse is the response for SubtleSignAlpha1.""" @@ -2576,11 +2618,11 @@ class SubtleSignResponse(google.protobuf.message.Message): *, signature: builtins.bytes = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["signature", b"signature"]) -> None: ... + def ClearField(self, field_name: typing.Literal["signature", b"signature"]) -> None: ... global___SubtleSignResponse = SubtleSignResponse -@typing_extensions.final +@typing.final class SubtleVerifyRequest(google.protobuf.message.Message): """SubtleVerifyRequest is the request for SubtleVerifyAlpha1.""" @@ -2610,11 +2652,11 @@ class SubtleVerifyRequest(google.protobuf.message.Message): key_name: builtins.str = ..., signature: builtins.bytes = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["algorithm", b"algorithm", "component_name", b"component_name", "digest", b"digest", "key_name", b"key_name", "signature", b"signature"]) -> None: ... + def ClearField(self, field_name: typing.Literal["algorithm", b"algorithm", "component_name", b"component_name", "digest", b"digest", "key_name", b"key_name", "signature", b"signature"]) -> None: ... global___SubtleVerifyRequest = SubtleVerifyRequest -@typing_extensions.final +@typing.final class SubtleVerifyResponse(google.protobuf.message.Message): """SubtleVerifyResponse is the response for SubtleVerifyAlpha1.""" @@ -2628,11 +2670,11 @@ class SubtleVerifyResponse(google.protobuf.message.Message): *, valid: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["valid", b"valid"]) -> None: ... + def ClearField(self, field_name: typing.Literal["valid", b"valid"]) -> None: ... global___SubtleVerifyResponse = SubtleVerifyResponse -@typing_extensions.final +@typing.final class EncryptRequest(google.protobuf.message.Message): """EncryptRequest is the request for EncryptAlpha1.""" @@ -2643,21 +2685,23 @@ class EncryptRequest(google.protobuf.message.Message): @property def options(self) -> global___EncryptRequestOptions: """Request details. Must be present in the first message only.""" + @property def payload(self) -> dapr.proto.common.v1.common_pb2.StreamPayload: """Chunk of data of arbitrary size.""" + def __init__( self, *, options: global___EncryptRequestOptions | None = ..., payload: dapr.proto.common.v1.common_pb2.StreamPayload | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["options", b"options", "payload", b"payload"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["options", b"options", "payload", b"payload"]) -> None: ... + def HasField(self, field_name: typing.Literal["options", b"options", "payload", b"payload"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["options", b"options", "payload", b"payload"]) -> None: ... global___EncryptRequest = EncryptRequest -@typing_extensions.final +@typing.final class EncryptRequestOptions(google.protobuf.message.Message): """EncryptRequestOptions contains options for the first message in the EncryptAlpha1 request.""" @@ -2700,11 +2744,11 @@ class EncryptRequestOptions(google.protobuf.message.Message): omit_decryption_key_name: builtins.bool = ..., decryption_key_name: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["component_name", b"component_name", "data_encryption_cipher", b"data_encryption_cipher", "decryption_key_name", b"decryption_key_name", "key_name", b"key_name", "key_wrap_algorithm", b"key_wrap_algorithm", "omit_decryption_key_name", b"omit_decryption_key_name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["component_name", b"component_name", "data_encryption_cipher", b"data_encryption_cipher", "decryption_key_name", b"decryption_key_name", "key_name", b"key_name", "key_wrap_algorithm", b"key_wrap_algorithm", "omit_decryption_key_name", b"omit_decryption_key_name"]) -> None: ... global___EncryptRequestOptions = EncryptRequestOptions -@typing_extensions.final +@typing.final class EncryptResponse(google.protobuf.message.Message): """EncryptResponse is the response for EncryptAlpha1.""" @@ -2714,17 +2758,18 @@ class EncryptResponse(google.protobuf.message.Message): @property def payload(self) -> dapr.proto.common.v1.common_pb2.StreamPayload: """Chunk of data.""" + def __init__( self, *, payload: dapr.proto.common.v1.common_pb2.StreamPayload | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["payload", b"payload"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["payload", b"payload"]) -> None: ... + def HasField(self, field_name: typing.Literal["payload", b"payload"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["payload", b"payload"]) -> None: ... global___EncryptResponse = EncryptResponse -@typing_extensions.final +@typing.final class DecryptRequest(google.protobuf.message.Message): """DecryptRequest is the request for DecryptAlpha1.""" @@ -2735,21 +2780,23 @@ class DecryptRequest(google.protobuf.message.Message): @property def options(self) -> global___DecryptRequestOptions: """Request details. Must be present in the first message only.""" + @property def payload(self) -> dapr.proto.common.v1.common_pb2.StreamPayload: """Chunk of data of arbitrary size.""" + def __init__( self, *, options: global___DecryptRequestOptions | None = ..., payload: dapr.proto.common.v1.common_pb2.StreamPayload | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["options", b"options", "payload", b"payload"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["options", b"options", "payload", b"payload"]) -> None: ... + def HasField(self, field_name: typing.Literal["options", b"options", "payload", b"payload"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["options", b"options", "payload", b"payload"]) -> None: ... global___DecryptRequest = DecryptRequest -@typing_extensions.final +@typing.final class DecryptRequestOptions(google.protobuf.message.Message): """DecryptRequestOptions contains options for the first message in the DecryptAlpha1 request.""" @@ -2770,11 +2817,11 @@ class DecryptRequestOptions(google.protobuf.message.Message): component_name: builtins.str = ..., key_name: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["component_name", b"component_name", "key_name", b"key_name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["component_name", b"component_name", "key_name", b"key_name"]) -> None: ... global___DecryptRequestOptions = DecryptRequestOptions -@typing_extensions.final +@typing.final class DecryptResponse(google.protobuf.message.Message): """DecryptResponse is the response for DecryptAlpha1.""" @@ -2784,17 +2831,18 @@ class DecryptResponse(google.protobuf.message.Message): @property def payload(self) -> dapr.proto.common.v1.common_pb2.StreamPayload: """Chunk of data.""" + def __init__( self, *, payload: dapr.proto.common.v1.common_pb2.StreamPayload | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["payload", b"payload"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["payload", b"payload"]) -> None: ... + def HasField(self, field_name: typing.Literal["payload", b"payload"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["payload", b"payload"]) -> None: ... global___DecryptResponse = DecryptResponse -@typing_extensions.final +@typing.final class GetWorkflowRequest(google.protobuf.message.Message): """GetWorkflowRequest is the request for GetWorkflowBeta1.""" @@ -2812,17 +2860,17 @@ class GetWorkflowRequest(google.protobuf.message.Message): instance_id: builtins.str = ..., workflow_component: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["instance_id", b"instance_id", "workflow_component", b"workflow_component"]) -> None: ... + def ClearField(self, field_name: typing.Literal["instance_id", b"instance_id", "workflow_component", b"workflow_component"]) -> None: ... global___GetWorkflowRequest = GetWorkflowRequest -@typing_extensions.final +@typing.final class GetWorkflowResponse(google.protobuf.message.Message): """GetWorkflowResponse is the response for GetWorkflowBeta1.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class PropertiesEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -2836,7 +2884,7 @@ class GetWorkflowResponse(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... INSTANCE_ID_FIELD_NUMBER: builtins.int WORKFLOW_NAME_FIELD_NUMBER: builtins.int @@ -2848,17 +2896,20 @@ class GetWorkflowResponse(google.protobuf.message.Message): """ID of the workflow instance.""" workflow_name: builtins.str """Name of the workflow.""" + runtime_status: builtins.str + """The current status of the workflow instance, for example, "PENDING", "RUNNING", "SUSPENDED", "COMPLETED", "FAILED", and "TERMINATED".""" @property def created_at(self) -> google.protobuf.timestamp_pb2.Timestamp: """The time at which the workflow instance was created.""" + @property def last_updated_at(self) -> google.protobuf.timestamp_pb2.Timestamp: """The last time at which the workflow instance had its state changed.""" - runtime_status: builtins.str - """The current status of the workflow instance, for example, "PENDING", "RUNNING", "SUSPENDED", "COMPLETED", "FAILED", and "TERMINATED".""" + @property def properties(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """Additional component-specific properties of the workflow instance.""" + def __init__( self, *, @@ -2869,18 +2920,18 @@ class GetWorkflowResponse(google.protobuf.message.Message): runtime_status: builtins.str = ..., properties: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["created_at", b"created_at", "last_updated_at", b"last_updated_at"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["created_at", b"created_at", "instance_id", b"instance_id", "last_updated_at", b"last_updated_at", "properties", b"properties", "runtime_status", b"runtime_status", "workflow_name", b"workflow_name"]) -> None: ... + def HasField(self, field_name: typing.Literal["created_at", b"created_at", "last_updated_at", b"last_updated_at"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["created_at", b"created_at", "instance_id", b"instance_id", "last_updated_at", b"last_updated_at", "properties", b"properties", "runtime_status", b"runtime_status", "workflow_name", b"workflow_name"]) -> None: ... global___GetWorkflowResponse = GetWorkflowResponse -@typing_extensions.final +@typing.final class StartWorkflowRequest(google.protobuf.message.Message): """StartWorkflowRequest is the request for StartWorkflowBeta1.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class OptionsEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -2894,7 +2945,7 @@ class StartWorkflowRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... INSTANCE_ID_FIELD_NUMBER: builtins.int WORKFLOW_COMPONENT_FIELD_NUMBER: builtins.int @@ -2907,11 +2958,12 @@ class StartWorkflowRequest(google.protobuf.message.Message): """Name of the workflow component.""" workflow_name: builtins.str """Name of the workflow.""" + input: builtins.bytes + """Input data for the workflow instance.""" @property def options(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """Additional component-specific options for starting the workflow instance.""" - input: builtins.bytes - """Input data for the workflow instance.""" + def __init__( self, *, @@ -2921,11 +2973,11 @@ class StartWorkflowRequest(google.protobuf.message.Message): options: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., input: builtins.bytes = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["input", b"input", "instance_id", b"instance_id", "options", b"options", "workflow_component", b"workflow_component", "workflow_name", b"workflow_name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["input", b"input", "instance_id", b"instance_id", "options", b"options", "workflow_component", b"workflow_component", "workflow_name", b"workflow_name"]) -> None: ... global___StartWorkflowRequest = StartWorkflowRequest -@typing_extensions.final +@typing.final class StartWorkflowResponse(google.protobuf.message.Message): """StartWorkflowResponse is the response for StartWorkflowBeta1.""" @@ -2939,11 +2991,11 @@ class StartWorkflowResponse(google.protobuf.message.Message): *, instance_id: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["instance_id", b"instance_id"]) -> None: ... + def ClearField(self, field_name: typing.Literal["instance_id", b"instance_id"]) -> None: ... global___StartWorkflowResponse = StartWorkflowResponse -@typing_extensions.final +@typing.final class TerminateWorkflowRequest(google.protobuf.message.Message): """TerminateWorkflowRequest is the request for TerminateWorkflowBeta1.""" @@ -2961,11 +3013,11 @@ class TerminateWorkflowRequest(google.protobuf.message.Message): instance_id: builtins.str = ..., workflow_component: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["instance_id", b"instance_id", "workflow_component", b"workflow_component"]) -> None: ... + def ClearField(self, field_name: typing.Literal["instance_id", b"instance_id", "workflow_component", b"workflow_component"]) -> None: ... global___TerminateWorkflowRequest = TerminateWorkflowRequest -@typing_extensions.final +@typing.final class PauseWorkflowRequest(google.protobuf.message.Message): """PauseWorkflowRequest is the request for PauseWorkflowBeta1.""" @@ -2983,11 +3035,11 @@ class PauseWorkflowRequest(google.protobuf.message.Message): instance_id: builtins.str = ..., workflow_component: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["instance_id", b"instance_id", "workflow_component", b"workflow_component"]) -> None: ... + def ClearField(self, field_name: typing.Literal["instance_id", b"instance_id", "workflow_component", b"workflow_component"]) -> None: ... global___PauseWorkflowRequest = PauseWorkflowRequest -@typing_extensions.final +@typing.final class ResumeWorkflowRequest(google.protobuf.message.Message): """ResumeWorkflowRequest is the request for ResumeWorkflowBeta1.""" @@ -3005,11 +3057,11 @@ class ResumeWorkflowRequest(google.protobuf.message.Message): instance_id: builtins.str = ..., workflow_component: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["instance_id", b"instance_id", "workflow_component", b"workflow_component"]) -> None: ... + def ClearField(self, field_name: typing.Literal["instance_id", b"instance_id", "workflow_component", b"workflow_component"]) -> None: ... global___ResumeWorkflowRequest = ResumeWorkflowRequest -@typing_extensions.final +@typing.final class RaiseEventWorkflowRequest(google.protobuf.message.Message): """RaiseEventWorkflowRequest is the request for RaiseEventWorkflowBeta1.""" @@ -3035,11 +3087,11 @@ class RaiseEventWorkflowRequest(google.protobuf.message.Message): event_name: builtins.str = ..., event_data: builtins.bytes = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["event_data", b"event_data", "event_name", b"event_name", "instance_id", b"instance_id", "workflow_component", b"workflow_component"]) -> None: ... + def ClearField(self, field_name: typing.Literal["event_data", b"event_data", "event_name", b"event_name", "instance_id", b"instance_id", "workflow_component", b"workflow_component"]) -> None: ... global___RaiseEventWorkflowRequest = RaiseEventWorkflowRequest -@typing_extensions.final +@typing.final class PurgeWorkflowRequest(google.protobuf.message.Message): """PurgeWorkflowRequest is the request for PurgeWorkflowBeta1.""" @@ -3057,11 +3109,11 @@ class PurgeWorkflowRequest(google.protobuf.message.Message): instance_id: builtins.str = ..., workflow_component: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["instance_id", b"instance_id", "workflow_component", b"workflow_component"]) -> None: ... + def ClearField(self, field_name: typing.Literal["instance_id", b"instance_id", "workflow_component", b"workflow_component"]) -> None: ... global___PurgeWorkflowRequest = PurgeWorkflowRequest -@typing_extensions.final +@typing.final class ShutdownRequest(google.protobuf.message.Message): """ShutdownRequest is the request for Shutdown. Empty @@ -3075,7 +3127,7 @@ class ShutdownRequest(google.protobuf.message.Message): global___ShutdownRequest = ShutdownRequest -@typing_extensions.final +@typing.final class Job(google.protobuf.message.Message): """Job is the definition of a job. At least one of schedule or due_time must be provided but can also be provided together. @@ -3133,6 +3185,7 @@ class Job(google.protobuf.message.Message): """payload is the serialized job payload that will be sent to the recipient when the job is triggered. """ + def __init__( self, *, @@ -3143,20 +3196,20 @@ class Job(google.protobuf.message.Message): ttl: builtins.str | None = ..., data: google.protobuf.any_pb2.Any | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["_due_time", b"_due_time", "_repeats", b"_repeats", "_schedule", b"_schedule", "_ttl", b"_ttl", "data", b"data", "due_time", b"due_time", "repeats", b"repeats", "schedule", b"schedule", "ttl", b"ttl"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["_due_time", b"_due_time", "_repeats", b"_repeats", "_schedule", b"_schedule", "_ttl", b"_ttl", "data", b"data", "due_time", b"due_time", "name", b"name", "repeats", b"repeats", "schedule", b"schedule", "ttl", b"ttl"]) -> None: ... + def HasField(self, field_name: typing.Literal["_due_time", b"_due_time", "_repeats", b"_repeats", "_schedule", b"_schedule", "_ttl", b"_ttl", "data", b"data", "due_time", b"due_time", "repeats", b"repeats", "schedule", b"schedule", "ttl", b"ttl"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_due_time", b"_due_time", "_repeats", b"_repeats", "_schedule", b"_schedule", "_ttl", b"_ttl", "data", b"data", "due_time", b"due_time", "name", b"name", "repeats", b"repeats", "schedule", b"schedule", "ttl", b"ttl"]) -> None: ... @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_due_time", b"_due_time"]) -> typing_extensions.Literal["due_time"] | None: ... + def WhichOneof(self, oneof_group: typing.Literal["_due_time", b"_due_time"]) -> typing.Literal["due_time"] | None: ... @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_repeats", b"_repeats"]) -> typing_extensions.Literal["repeats"] | None: ... + def WhichOneof(self, oneof_group: typing.Literal["_repeats", b"_repeats"]) -> typing.Literal["repeats"] | None: ... @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_schedule", b"_schedule"]) -> typing_extensions.Literal["schedule"] | None: ... + def WhichOneof(self, oneof_group: typing.Literal["_schedule", b"_schedule"]) -> typing.Literal["schedule"] | None: ... @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_ttl", b"_ttl"]) -> typing_extensions.Literal["ttl"] | None: ... + def WhichOneof(self, oneof_group: typing.Literal["_ttl", b"_ttl"]) -> typing.Literal["ttl"] | None: ... global___Job = Job -@typing_extensions.final +@typing.final class ScheduleJobRequest(google.protobuf.message.Message): """ScheduleJobRequest is the message to create/schedule the job.""" @@ -3166,17 +3219,18 @@ class ScheduleJobRequest(google.protobuf.message.Message): @property def job(self) -> global___Job: """The job details.""" + def __init__( self, *, job: global___Job | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["job", b"job"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["job", b"job"]) -> None: ... + def HasField(self, field_name: typing.Literal["job", b"job"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["job", b"job"]) -> None: ... global___ScheduleJobRequest = ScheduleJobRequest -@typing_extensions.final +@typing.final class ScheduleJobResponse(google.protobuf.message.Message): """ScheduleJobResponse is the message response to create/schedule the job. Empty @@ -3190,7 +3244,7 @@ class ScheduleJobResponse(google.protobuf.message.Message): global___ScheduleJobResponse = ScheduleJobResponse -@typing_extensions.final +@typing.final class GetJobRequest(google.protobuf.message.Message): """GetJobRequest is the message to retrieve a job.""" @@ -3204,11 +3258,11 @@ class GetJobRequest(google.protobuf.message.Message): *, name: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["name", b"name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["name", b"name"]) -> None: ... global___GetJobRequest = GetJobRequest -@typing_extensions.final +@typing.final class GetJobResponse(google.protobuf.message.Message): """GetJobResponse is the message's response for a job retrieved.""" @@ -3218,17 +3272,18 @@ class GetJobResponse(google.protobuf.message.Message): @property def job(self) -> global___Job: """The job details.""" + def __init__( self, *, job: global___Job | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["job", b"job"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["job", b"job"]) -> None: ... + def HasField(self, field_name: typing.Literal["job", b"job"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["job", b"job"]) -> None: ... global___GetJobResponse = GetJobResponse -@typing_extensions.final +@typing.final class DeleteJobRequest(google.protobuf.message.Message): """DeleteJobRequest is the message to delete the job by name.""" @@ -3242,11 +3297,11 @@ class DeleteJobRequest(google.protobuf.message.Message): *, name: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["name", b"name"]) -> None: ... + def ClearField(self, field_name: typing.Literal["name", b"name"]) -> None: ... global___DeleteJobRequest = DeleteJobRequest -@typing_extensions.final +@typing.final class DeleteJobResponse(google.protobuf.message.Message): """DeleteJobResponse is the message response to delete the job by name. Empty @@ -3260,13 +3315,13 @@ class DeleteJobResponse(google.protobuf.message.Message): global___DeleteJobResponse = DeleteJobResponse -@typing_extensions.final +@typing.final class ConversationRequest(google.protobuf.message.Message): """ConversationRequest is the request object for Conversation.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class ParametersEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -3281,10 +3336,10 @@ class ConversationRequest(google.protobuf.message.Message): key: builtins.str = ..., value: google.protobuf.any_pb2.Any | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... - @typing_extensions.final + @typing.final class MetadataEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -3298,7 +3353,7 @@ class ConversationRequest(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... NAME_FIELD_NUMBER: builtins.int CONTEXTID_FIELD_NUMBER: builtins.int @@ -3311,19 +3366,22 @@ class ConversationRequest(google.protobuf.message.Message): """The name of Conversation component""" contextID: builtins.str """The ID of an existing chat (like in ChatGPT)""" + scrubPII: builtins.bool + """Scrub PII data that comes back from the LLM""" + temperature: builtins.float + """Temperature for the LLM to optimize for creativity or predictability""" @property def inputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ConversationInput]: """Inputs for the conversation, support multiple input in one time.""" + @property def parameters(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, google.protobuf.any_pb2.Any]: """Parameters for all custom fields.""" + @property def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """The metadata passing to conversation components.""" - scrubPII: builtins.bool - """Scrub PII data that comes back from the LLM""" - temperature: builtins.float - """Temperature for the LLM to optimize for creativity or predictability""" + def __init__( self, *, @@ -3335,26 +3393,26 @@ class ConversationRequest(google.protobuf.message.Message): scrubPII: builtins.bool | None = ..., temperature: builtins.float | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["_contextID", b"_contextID", "_scrubPII", b"_scrubPII", "_temperature", b"_temperature", "contextID", b"contextID", "scrubPII", b"scrubPII", "temperature", b"temperature"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["_contextID", b"_contextID", "_scrubPII", b"_scrubPII", "_temperature", b"_temperature", "contextID", b"contextID", "inputs", b"inputs", "metadata", b"metadata", "name", b"name", "parameters", b"parameters", "scrubPII", b"scrubPII", "temperature", b"temperature"]) -> None: ... + def HasField(self, field_name: typing.Literal["_contextID", b"_contextID", "_scrubPII", b"_scrubPII", "_temperature", b"_temperature", "contextID", b"contextID", "scrubPII", b"scrubPII", "temperature", b"temperature"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_contextID", b"_contextID", "_scrubPII", b"_scrubPII", "_temperature", b"_temperature", "contextID", b"contextID", "inputs", b"inputs", "metadata", b"metadata", "name", b"name", "parameters", b"parameters", "scrubPII", b"scrubPII", "temperature", b"temperature"]) -> None: ... @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_contextID", b"_contextID"]) -> typing_extensions.Literal["contextID"] | None: ... + def WhichOneof(self, oneof_group: typing.Literal["_contextID", b"_contextID"]) -> typing.Literal["contextID"] | None: ... @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_scrubPII", b"_scrubPII"]) -> typing_extensions.Literal["scrubPII"] | None: ... + def WhichOneof(self, oneof_group: typing.Literal["_scrubPII", b"_scrubPII"]) -> typing.Literal["scrubPII"] | None: ... @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_temperature", b"_temperature"]) -> typing_extensions.Literal["temperature"] | None: ... + def WhichOneof(self, oneof_group: typing.Literal["_temperature", b"_temperature"]) -> typing.Literal["temperature"] | None: ... global___ConversationRequest = ConversationRequest -@typing_extensions.final +@typing.final class ConversationInput(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - MESSAGE_FIELD_NUMBER: builtins.int + CONTENT_FIELD_NUMBER: builtins.int ROLE_FIELD_NUMBER: builtins.int SCRUBPII_FIELD_NUMBER: builtins.int - message: builtins.str - """The message to send to the llm""" + content: builtins.str + """The content to send to the llm""" role: builtins.str """The role to set for the message""" scrubPII: builtins.bool @@ -3362,26 +3420,26 @@ class ConversationInput(google.protobuf.message.Message): def __init__( self, *, - message: builtins.str = ..., + content: builtins.str = ..., role: builtins.str | None = ..., scrubPII: builtins.bool | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["_role", b"_role", "_scrubPII", b"_scrubPII", "role", b"role", "scrubPII", b"scrubPII"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["_role", b"_role", "_scrubPII", b"_scrubPII", "message", b"message", "role", b"role", "scrubPII", b"scrubPII"]) -> None: ... + def HasField(self, field_name: typing.Literal["_role", b"_role", "_scrubPII", b"_scrubPII", "role", b"role", "scrubPII", b"scrubPII"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_role", b"_role", "_scrubPII", b"_scrubPII", "content", b"content", "role", b"role", "scrubPII", b"scrubPII"]) -> None: ... @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_role", b"_role"]) -> typing_extensions.Literal["role"] | None: ... + def WhichOneof(self, oneof_group: typing.Literal["_role", b"_role"]) -> typing.Literal["role"] | None: ... @typing.overload - def WhichOneof(self, oneof_group: typing_extensions.Literal["_scrubPII", b"_scrubPII"]) -> typing_extensions.Literal["scrubPII"] | None: ... + def WhichOneof(self, oneof_group: typing.Literal["_scrubPII", b"_scrubPII"]) -> typing.Literal["scrubPII"] | None: ... global___ConversationInput = ConversationInput -@typing_extensions.final +@typing.final class ConversationResult(google.protobuf.message.Message): """ConversationResult is the result for one input.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - @typing_extensions.final + @typing.final class ParametersEntry(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -3396,8 +3454,8 @@ class ConversationResult(google.protobuf.message.Message): key: builtins.str = ..., value: google.protobuf.any_pb2.Any | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["value", b"value"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def HasField(self, field_name: typing.Literal["value", b"value"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ... RESULT_FIELD_NUMBER: builtins.int PARAMETERS_FIELD_NUMBER: builtins.int @@ -3406,17 +3464,18 @@ class ConversationResult(google.protobuf.message.Message): @property def parameters(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, google.protobuf.any_pb2.Any]: """Parameters for all custom fields.""" + def __init__( self, *, result: builtins.str = ..., parameters: collections.abc.Mapping[builtins.str, google.protobuf.any_pb2.Any] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["parameters", b"parameters", "result", b"result"]) -> None: ... + def ClearField(self, field_name: typing.Literal["parameters", b"parameters", "result", b"result"]) -> None: ... global___ConversationResult = ConversationResult -@typing_extensions.final +@typing.final class ConversationResponse(google.protobuf.message.Message): """ConversationResponse is the response for Conversation.""" @@ -3429,14 +3488,15 @@ class ConversationResponse(google.protobuf.message.Message): @property def outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ConversationResult]: """An array of results.""" + def __init__( self, *, contextID: builtins.str | None = ..., outputs: collections.abc.Iterable[global___ConversationResult] | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["_contextID", b"_contextID", "contextID", b"contextID"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["_contextID", b"_contextID", "contextID", b"contextID", "outputs", b"outputs"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["_contextID", b"_contextID"]) -> typing_extensions.Literal["contextID"] | None: ... + def HasField(self, field_name: typing.Literal["_contextID", b"_contextID", "contextID", b"contextID"]) -> builtins.bool: ... + def ClearField(self, field_name: typing.Literal["_contextID", b"_contextID", "contextID", b"contextID", "outputs", b"outputs"]) -> None: ... + def WhichOneof(self, oneof_group: typing.Literal["_contextID", b"_contextID"]) -> typing.Literal["contextID"] | None: ... global___ConversationResponse = ConversationResponse diff --git a/dapr/version/version.py b/dapr/version/version.py index 287c4a57c..112a2520f 100644 --- a/dapr/version/version.py +++ b/dapr/version/version.py @@ -13,4 +13,4 @@ limitations under the License. """ -__version__ = '1.14.0rc1.dev' +__version__ = '1.15.0.dev' diff --git a/daprdocs/content/en/python-sdk-docs/python-actor.md b/daprdocs/content/en/python-sdk-docs/python-actor.md index cc6ba570b..47992b651 100644 --- a/daprdocs/content/en/python-sdk-docs/python-actor.md +++ b/daprdocs/content/en/python-sdk-docs/python-actor.md @@ -56,7 +56,7 @@ async def main(): ## Sample -Visit [this page](https://github.com/dapr/python-sdk/tree/v1.14.0/examples/demo_actor) for a runnable actor sample. +Visit [this page](https://github.com/dapr/python-sdk/tree/main/examples/demo_actor) for a runnable actor sample. ## Mock Actor Testing diff --git a/daprdocs/content/en/python-sdk-docs/python-client.md b/daprdocs/content/en/python-sdk-docs/python-client.md index fc6ef496b..7024018ad 100644 --- a/daprdocs/content/en/python-sdk-docs/python-client.md +++ b/daprdocs/content/en/python-sdk-docs/python-client.md @@ -227,6 +227,56 @@ with DaprClient() as d: resp = d.publish_event(pubsub_name='pubsub', topic_name='TOPIC_A', data='{"message":"Hello World"}') ``` + +Send [CloudEvents](https://cloudevents.io/) messages with a json payload: +```python +from dapr.clients import DaprClient +import json + +with DaprClient() as d: + cloud_event = { + 'specversion': '1.0', + 'type': 'com.example.event', + 'source': 'my-service', + 'id': 'myid', + 'data': {'id': 1, 'message': 'hello world'}, + 'datacontenttype': 'application/json', + } + + # Set the data content type to 'application/cloudevents+json' + resp = d.publish_event( + pubsub_name='pubsub', + topic_name='TOPIC_CE', + data=json.dumps(cloud_event), + data_content_type='application/cloudevents+json', + ) +``` + +Publish [CloudEvents](https://cloudevents.io/) messages with plain text payload: +```python +from dapr.clients import DaprClient +import json + +with DaprClient() as d: + cloud_event = { + 'specversion': '1.0', + 'type': 'com.example.event', + 'source': 'my-service', + 'id': "myid", + 'data': 'hello world', + 'datacontenttype': 'text/plain', + } + + # Set the data content type to 'application/cloudevents+json' + resp = d.publish_event( + pubsub_name='pubsub', + topic_name='TOPIC_CE', + data=json.dumps(cloud_event), + data_content_type='application/cloudevents+json', + ) +``` + + #### Subscribe to messages ```python @@ -381,6 +431,38 @@ if __name__ == '__main__': - For more information about pub/sub, visit [How-To: Publish & subscribe]({{< ref howto-publish-subscribe.md >}}). - Visit [Python SDK examples](https://github.com/dapr/python-sdk/tree/main/examples/pubsub-simple) for code samples and instructions to try out streaming pub/sub. +### Conversation (Alpha) + +{{% alert title="Note" color="primary" %}} +The Dapr Conversation API is currently in alpha. +{{% /alert %}} + +Since version 1.15 Dapr offers developers the capability to securely and reliably interact with Large Language Models (LLM) through the [Conversation API]({{< ref conversation-overview.md >}}). + +```python +from dapr.clients import DaprClient +from dapr.clients.grpc._request import ConversationInput + +with DaprClient() as d: + inputs = [ + ConversationInput(content="What's Dapr?", role='user', scrub_pii=True), + ConversationInput(content='Give a brief overview.', role='user', scrub_pii=True), + ] + + metadata = { + 'model': 'foo', + 'key': 'authKey', + 'cacheTTL': '10m', + } + + response = d.converse_alpha1( + name='echo', inputs=inputs, temperature=0.7, context_id='chat-123', metadata=metadata + ) + + for output in response.outputs: + print(f'Result: {output.result}') +``` + ### Interact with output bindings ```python @@ -515,89 +597,5 @@ def main(): - For a full list of state operations visit [How-To: Use the cryptography APIs]({{< ref howto-cryptography.md >}}). - Visit [Python SDK examples](https://github.com/dapr/python-sdk/tree/master/examples/crypto) for code samples and instructions to try out cryptography -### Workflow - -```python -from dapr.ext.workflow import WorkflowRuntime, DaprWorkflowContext, WorkflowActivityContext -from dapr.clients import DaprClient - -instanceId = "exampleInstanceID" -workflowComponent = "dapr" -workflowName = "hello_world_wf" -eventName = "event1" -eventData = "eventData" - -def main(): - with DaprClient() as d: - host = settings.DAPR_RUNTIME_HOST - port = settings.DAPR_GRPC_PORT - workflowRuntime = WorkflowRuntime(host, port) - workflowRuntime = WorkflowRuntime() - workflowRuntime.register_workflow(hello_world_wf) - workflowRuntime.register_activity(hello_act) - workflowRuntime.start() - - # Start the workflow - start_resp = d.start_workflow(instance_id=instanceId, workflow_component=workflowComponent, - workflow_name=workflowName, input=inputData, workflow_options=workflowOptions) - print(f"start_resp {start_resp.instance_id}") - - # ... - - # Pause Test - d.pause_workflow(instance_id=instanceId, workflow_component=workflowComponent) - getResponse = d.get_workflow(instance_id=instanceId, workflow_component=workflowComponent) - print(f"Get response from {workflowName} after pause call: {getResponse.runtime_status}") - - # Resume Test - d.resume_workflow(instance_id=instanceId, workflow_component=workflowComponent) - getResponse = d.get_workflow(instance_id=instanceId, workflow_component=workflowComponent) - print(f"Get response from {workflowName} after resume call: {getResponse.runtime_status}") - - sleep(1) - # Raise event - d.raise_workflow_event(instance_id=instanceId, workflow_component=workflowComponent, - event_name=eventName, event_data=eventData) - - sleep(5) - # Purge Test - d.purge_workflow(instance_id=instanceId, workflow_component=workflowComponent) - try: - getResponse = d.get_workflow(instance_id=instanceId, workflow_component=workflowComponent) - except DaprInternalError as err: - if nonExistentIDError in err._message: - print("Instance Successfully Purged") - - - # Kick off another workflow for termination purposes - # This will also test using the same instance ID on a new workflow after - # the old instance was purged - start_resp = d.start_workflow(instance_id=instanceId, workflow_component=workflowComponent, - workflow_name=workflowName, input=inputData, workflow_options=workflowOptions) - print(f"start_resp {start_resp.instance_id}") - - # Terminate Test - d.terminate_workflow(instance_id=instanceId, workflow_component=workflowComponent) - sleep(1) - getResponse = d.get_workflow(instance_id=instanceId, workflow_component=workflowComponent) - print(f"Get response from {workflowName} after terminate call: {getResponse.runtime_status}") - - # Purge Test - d.purge_workflow(instance_id=instanceId, workflow_component=workflowComponent) - try: - getResponse = d.get_workflow(instance_id=instanceId, workflow_component=workflowComponent) - except DaprInternalError as err: - if nonExistentIDError in err._message: - print("Instance Successfully Purged") - - workflowRuntime.shutdown() -``` - -- Learn more about authoring and managing workflows: - - [How-To: Author a workflow]({{< ref howto-author-workflow.md >}}). - - [How-To: Manage a workflow]({{< ref howto-manage-workflow.md >}}). -- Visit [Python SDK examples](https://github.com/dapr/python-sdk/blob/master/examples/demo_workflow/app.py) for code samples and instructions to try out Dapr Workflow. - - ## Related links [Python SDK examples](https://github.com/dapr/python-sdk/tree/master/examples) diff --git a/daprdocs/content/en/python-sdk-docs/python-sdk-extensions/python-workflow-ext/_index.md b/daprdocs/content/en/python-sdk-docs/python-sdk-extensions/python-workflow-ext/_index.md index e5fe5ce81..ed75a1eea 100644 --- a/daprdocs/content/en/python-sdk-docs/python-sdk-extensions/python-workflow-ext/_index.md +++ b/daprdocs/content/en/python-sdk-docs/python-sdk-extensions/python-workflow-ext/_index.md @@ -7,11 +7,7 @@ description: How to get up and running with the Dapr Workflow extension no_list: true --- -{{% alert title="Note" color="primary" %}} -Dapr Workflow is currently in alpha. -{{% /alert %}} - -The Dapr Python SDK provides a built in Dapr Workflow extension, `dapr.ext.workflow`, for creating Dapr services. +The Dapr Python SDK provides a built-in Dapr Workflow extension, `dapr.ext.workflow`, for creating Dapr services. ## Installation @@ -31,12 +27,79 @@ The development package will contain features and behavior that will be compatib {{% /alert %}} ```bash -pip3 install dapr-ext-workflow-dev +pip install dapr-ext-workflow-dev ``` {{% /codetab %}} {{< /tabs >}} +## Example + +```python +from time import sleep + +import dapr.ext.workflow as wf + + +wfr = wf.WorkflowRuntime() + + +@wfr.workflow(name='random_workflow') +def task_chain_workflow(ctx: wf.DaprWorkflowContext, wf_input: int): + try: + result1 = yield ctx.call_activity(step1, input=wf_input) + result2 = yield ctx.call_activity(step2, input=result1) + except Exception as e: + yield ctx.call_activity(error_handler, input=str(e)) + raise + return [result1, result2] + + +@wfr.activity(name='step1') +def step1(ctx, activity_input): + print(f'Step 1: Received input: {activity_input}.') + # Do some work + return activity_input + 1 + + +@wfr.activity +def step2(ctx, activity_input): + print(f'Step 2: Received input: {activity_input}.') + # Do some work + return activity_input * 2 + +@wfr.activity +def error_handler(ctx, error): + print(f'Executing error handler: {error}.') + # Do some compensating work + + +if __name__ == '__main__': + wfr.start() + sleep(10) # wait for workflow runtime to start + + wf_client = wf.DaprWorkflowClient() + instance_id = wf_client.schedule_new_workflow(workflow=task_chain_workflow, input=42) + print(f'Workflow started. Instance ID: {instance_id}') + state = wf_client.wait_for_workflow_completion(instance_id) + print(f'Workflow completed! Status: {state.runtime_status}') + + wfr.shutdown() +``` + +- Learn more about authoring and managing workflows: + - [How-To: Author a workflow]({{< ref howto-author-workflow.md >}}). + - [How-To: Manage a workflow]({{< ref howto-manage-workflow.md >}}). + - +- Visit [Python SDK examples](https://github.com/dapr/python-sdk/tree/main/examples/workflow) for code samples and instructions to try out Dapr Workflow: + - [Simple workflow example]({{< ref python-workflow.md >}}) + - [Task chaining example](https://github.com/dapr/python-sdk/blob/main/examples/workflow/task_chaining.py) + - [Fan-out/Fan-in example](https://github.com/dapr/python-sdk/blob/main/examples/workflow/fan_out_fan_in.py) + - [Child workflow example](https://github.com/dapr/python-sdk/blob/main/examples/workflow/child_workflow.py) + - [Human approval example](https://github.com/dapr/python-sdk/blob/main/examples/workflow/human_approval.py) + - [Monitor example](https://github.com/dapr/python-sdk/blob/main/examples/workflow/monitor.py) + + ## Next steps {{< button text="Getting started with the Dapr Workflow Python SDK" page="python-workflow.md" >}} diff --git a/daprdocs/content/en/python-sdk-docs/python-sdk-extensions/python-workflow-ext/python-workflow.md b/daprdocs/content/en/python-sdk-docs/python-sdk-extensions/python-workflow-ext/python-workflow.md index b241c9c13..6e8011f33 100644 --- a/daprdocs/content/en/python-sdk-docs/python-sdk-extensions/python-workflow-ext/python-workflow.md +++ b/daprdocs/content/en/python-sdk-docs/python-sdk-extensions/python-workflow-ext/python-workflow.md @@ -6,14 +6,15 @@ weight: 30000 description: How to get up and running with workflows using the Dapr Python SDK --- -Let’s create a Dapr workflow and invoke it using the console. With the [provided hello world workflow example](https://github.com/dapr/python-sdk/tree/master/examples/demo_workflow), you will: +Let’s create a Dapr workflow and invoke it using the console. With the [provided workflow example](https://github.com/dapr/python-sdk/tree/main/examples/workflow/simple.py), you will: -- Run a [Python console application using `DaprClient`](https://github.com/dapr/python-sdk/blob/master/examples/demo_workflow/app.py) -- Utilize the Python workflow SDK and API calls to start, pause, resume, terminate, and purge workflow instances +- Run a [Python console application](https://github.com/dapr/python-sdk/blob/main/examples/workflow/simple.py) that demonstrates workflow orchestration with activities, child workflows, and external events +- Learn how to handle retries, timeouts, and workflow state management +- Use the Python workflow SDK to start, pause, resume, and purge workflow instances This example uses the default configuration from `dapr init` in [self-hosted mode](https://github.com/dapr/cli#install-dapr-on-your-local-machine-self-hosted). -In the Python example project, the `app.py` file contains the setup of the app, including: +In the Python example project, the `simple.py` file contains the setup of the app, including: - The workflow definition - The workflow activity definitions - The registration of the workflow and workflow activities @@ -27,22 +28,22 @@ In the Python example project, the `app.py` file contains the setup of the app, ## Set up the environment -Run the following command to install the requirements for running this workflow sample with the Dapr Python SDK. +Start by cloning the [Python SDK repo]. ```bash -pip3 install -r demo_workflow/requirements.txt +git clone https://github.com/dapr/python-sdk.git ``` -Clone the [Python SDK repo]. +From the Python SDK root directory, navigate to the Dapr Workflow example. ```bash -git clone https://github.com/dapr/python-sdk.git +cd examples/workflow ``` -From the Python SDK root directory, navigate to the Dapr Workflow example. +Run the following command to install the requirements for running this workflow sample with the Dapr Python SDK. ```bash -cd examples/demo_workflow +pip3 install -r workflow/requirements.txt ``` ## Run the application locally @@ -50,133 +51,116 @@ cd examples/demo_workflow To run the Dapr application, you need to start the Python program and a Dapr sidecar. In the terminal, run: ```bash -dapr run --app-id orderapp --app-protocol grpc --dapr-grpc-port 50001 --resources-path components --placement-host-address localhost:50005 -- python3 app.py +dapr run --app-id wf-simple-example --dapr-grpc-port 50001 --resources-path components -- python3 simple.py ``` -> **Note:** Since Python3.exe is not defined in Windows, you may need to use `python app.py` instead of `python3 app.py`. +> **Note:** Since Python3.exe is not defined in Windows, you may need to use `python simple.py` instead of `python3 simple.py`. **Expected output** ``` -== APP == ==========Start Counter Increase as per Input:========== - -== APP == start_resp exampleInstanceID - -== APP == Hi Counter! -== APP == New counter value is: 1! - -== APP == Hi Counter! -== APP == New counter value is: 11! - -== APP == Hi Counter! -== APP == Hi Counter! -== APP == Get response from hello_world_wf after pause call: Suspended - -== APP == Hi Counter! -== APP == Get response from hello_world_wf after resume call: Running - -== APP == Hi Counter! -== APP == New counter value is: 111! - -== APP == Hi Counter! -== APP == Instance Successfully Purged - -== APP == start_resp exampleInstanceID - -== APP == Hi Counter! -== APP == New counter value is: 1112! - -== APP == Hi Counter! -== APP == New counter value is: 1122! - -== APP == Get response from hello_world_wf after terminate call: Terminated -== APP == Get response from child_wf after terminate call: Terminated -== APP == Instance Successfully Purged +- "== APP == Hi Counter!" +- "== APP == New counter value is: 1!" +- "== APP == New counter value is: 11!" +- "== APP == Retry count value is: 0!" +- "== APP == Retry count value is: 1! This print statement verifies retry" +- "== APP == Appending 1 to child_orchestrator_string!" +- "== APP == Appending a to child_orchestrator_string!" +- "== APP == Appending a to child_orchestrator_string!" +- "== APP == Appending 2 to child_orchestrator_string!" +- "== APP == Appending b to child_orchestrator_string!" +- "== APP == Appending b to child_orchestrator_string!" +- "== APP == Appending 3 to child_orchestrator_string!" +- "== APP == Appending c to child_orchestrator_string!" +- "== APP == Appending c to child_orchestrator_string!" +- "== APP == Get response from hello_world_wf after pause call: Suspended" +- "== APP == Get response from hello_world_wf after resume call: Running" +- "== APP == New counter value is: 111!" +- "== APP == New counter value is: 1111!" +- "== APP == Workflow completed! Result: "Completed" ``` ## What happened? -When you ran `dapr run`, the Dapr client: -1. Registered the workflow (`hello_world_wf`) and its actvity (`hello_act`) -1. Started the workflow engine - -```python -def main(): - with DaprClient() as d: - host = settings.DAPR_RUNTIME_HOST - port = settings.DAPR_GRPC_PORT - workflowRuntime = WorkflowRuntime(host, port) - workflowRuntime = WorkflowRuntime() - workflowRuntime.register_workflow(hello_world_wf) - workflowRuntime.register_activity(hello_act) - workflowRuntime.start() - - print("==========Start Counter Increase as per Input:==========") - start_resp = d.start_workflow(instance_id=instanceId, workflow_component=workflowComponent, - workflow_name=workflowName, input=inputData, workflow_options=workflowOptions) - print(f"start_resp {start_resp.instance_id}") -``` - -Dapr then paused and resumed the workflow: - -```python - # Pause - d.pause_workflow(instance_id=instanceId, workflow_component=workflowComponent) - getResponse = d.get_workflow(instance_id=instanceId, workflow_component=workflowComponent) - print(f"Get response from {workflowName} after pause call: {getResponse.runtime_status}") - - # Resume - d.resume_workflow(instance_id=instanceId, workflow_component=workflowComponent) - getResponse = d.get_workflow(instance_id=instanceId, workflow_component=workflowComponent) - print(f"Get response from {workflowName} after resume call: {getResponse.runtime_status}") -``` - -Once the workflow resumed, Dapr raised a workflow event and printed the new counter value: - -```python - # Raise event - d.raise_workflow_event(instance_id=instanceId, workflow_component=workflowComponent, - event_name=eventName, event_data=eventData) -``` - -To clear out the workflow state from your state store, Dapr purged the workflow: - -```python - # Purge - d.purge_workflow(instance_id=instanceId, workflow_component=workflowComponent) - try: - getResponse = d.get_workflow(instance_id=instanceId, workflow_component=workflowComponent) - except DaprInternalError as err: - if nonExistentIDError in err._message: - print("Instance Successfully Purged") -``` - -The sample then demonstrated terminating a workflow by: -- Starting a new workflow using the same `instanceId` as the purged workflow. -- Terminating the workflow and purging before shutting down the workflow. - -```python - # Kick off another workflow - start_resp = d.start_workflow(instance_id=instanceId, workflow_component=workflowComponent, - workflow_name=workflowName, input=inputData, workflow_options=workflowOptions) - print(f"start_resp {start_resp.instance_id}") - - # Terminate - d.terminate_workflow(instance_id=instanceId, workflow_component=workflowComponent) - sleep(1) - getResponse = d.get_workflow(instance_id=instanceId, workflow_component=workflowComponent) - print(f"Get response from {workflowName} after terminate call: {getResponse.runtime_status}") - - # Purge - d.purge_workflow(instance_id=instanceId, workflow_component=workflowComponent) - try: - getResponse = d.get_workflow(instance_id=instanceId, workflow_component=workflowComponent) - except DaprInternalError as err: - if nonExistentIDError in err._message: - print("Instance Successfully Purged") -``` - +When you run the application, several key workflow features are shown: + +1. **Workflow and Activity Registration**: The application uses Python decorators to automatically register workflows and activities with the runtime. This decorator-based approach provides a clean, declarative way to define your workflow components: + ```python + @wfr.workflow(name='hello_world_wf') + def hello_world_wf(ctx: DaprWorkflowContext, wf_input): + # Workflow definition... + + @wfr.activity(name='hello_act') + def hello_act(ctx: WorkflowActivityContext, wf_input): + # Activity definition... + ``` + +2. **Runtime Setup**: The application initializes the workflow runtime and client: + ```python + wfr = WorkflowRuntime() + wfr.start() + wf_client = DaprWorkflowClient() + ``` + +2. **Activity Execution**: The workflow executes a series of activities that increment a counter: + ```python + @wfr.workflow(name='hello_world_wf') + def hello_world_wf(ctx: DaprWorkflowContext, wf_input): + yield ctx.call_activity(hello_act, input=1) + yield ctx.call_activity(hello_act, input=10) + ``` + +3. **Retry Logic**: The workflow demonstrates error handling with a retry policy: + ```python + retry_policy = RetryPolicy( + first_retry_interval=timedelta(seconds=1), + max_number_of_attempts=3, + backoff_coefficient=2, + max_retry_interval=timedelta(seconds=10), + retry_timeout=timedelta(seconds=100), + ) + yield ctx.call_activity(hello_retryable_act, retry_policy=retry_policy) + ``` + +4. **Child Workflow**: A child workflow is executed with its own retry policy: + ```python + yield ctx.call_child_workflow(child_retryable_wf, retry_policy=retry_policy) + ``` + +5. **External Event Handling**: The workflow waits for an external event with a timeout: + ```python + event = ctx.wait_for_external_event(event_name) + timeout = ctx.create_timer(timedelta(seconds=30)) + winner = yield when_any([event, timeout]) + ``` + +6. **Workflow Lifecycle Management**: The example demonstrates how to pause and resume the workflow: + ```python + wf_client.pause_workflow(instance_id=instance_id) + metadata = wf_client.get_workflow_state(instance_id=instance_id) + # ... check status ... + wf_client.resume_workflow(instance_id=instance_id) + ``` + +7. **Event Raising**: After resuming, the workflow raises an event: + ```python + wf_client.raise_workflow_event( + instance_id=instance_id, + event_name=event_name, + data=event_data + ) + ``` + +8. **Completion and Cleanup**: Finally, the workflow waits for completion and cleans up: + ```python + state = wf_client.wait_for_workflow_completion( + instance_id, + timeout_in_seconds=30 + ) + wf_client.purge_workflow(instance_id=instance_id) + ``` ## Next steps - [Learn more about Dapr workflow]({{< ref workflow-overview.md >}}) - [Workflow API reference]({{< ref workflow_api.md >}}) +- [Try implementing more complex workflow patterns](https://github.com/dapr/python-sdk/tree/main/examples/workflow) diff --git a/dev-requirements.txt b/dev-requirements.txt index 769b1e1e4..cec56fb2a 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -15,4 +15,4 @@ Flask>=1.1 # needed for auto fix ruff===0.2.2 # needed for dapr-ext-workflow -durabletask-dapr >= 0.2.0a4 +durabletask-dapr >= 0.2.0a7 diff --git a/examples/conversation/README.md b/examples/conversation/README.md new file mode 100644 index 000000000..c793dd4b5 --- /dev/null +++ b/examples/conversation/README.md @@ -0,0 +1,34 @@ +# Example - Conversation API + +## Step + +### Prepare + +- Dapr installed + +### Run Conversation Example + + + +```bash +dapr run --app-id conversation \ + --log-level debug \ + --resources-path ./config \ + -- python3 conversation.py +``` + + + +## Result + +``` + - '== APP == Result: What's Dapr?' + - '== APP == Result: Give a brief overview.' +``` \ No newline at end of file diff --git a/examples/conversation/config/conversation-echo.yaml b/examples/conversation/config/conversation-echo.yaml new file mode 100644 index 000000000..9a8b3072d --- /dev/null +++ b/examples/conversation/config/conversation-echo.yaml @@ -0,0 +1,7 @@ +apiVersion: dapr.io/v1alpha1 +kind: Component +metadata: + name: echo +spec: + type: conversation.echo + version: v1 \ No newline at end of file diff --git a/examples/conversation/conversation.py b/examples/conversation/conversation.py new file mode 100644 index 000000000..6b39e37c4 --- /dev/null +++ b/examples/conversation/conversation.py @@ -0,0 +1,33 @@ +# ------------------------------------------------------------ +# Copyright 2025 The Dapr Authors +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ------------------------------------------------------------ +from dapr.clients import DaprClient +from dapr.clients.grpc._request import ConversationInput + +with DaprClient() as d: + inputs = [ + ConversationInput(content="What's Dapr?", role='user', scrub_pii=True), + ConversationInput(content='Give a brief overview.', role='user', scrub_pii=True), + ] + + metadata = { + 'model': 'foo', + 'key': 'authKey', + 'cacheTTL': '10m', + } + + response = d.converse_alpha1( + name='echo', inputs=inputs, temperature=0.7, context_id='chat-123', metadata=metadata + ) + + for output in response.outputs: + print(f'Result: {output.result}') diff --git a/examples/demo_actor/demo_actor/requirements.txt b/examples/demo_actor/demo_actor/requirements.txt index 7c8493530..4c2215b51 100644 --- a/examples/demo_actor/demo_actor/requirements.txt +++ b/examples/demo_actor/demo_actor/requirements.txt @@ -1 +1 @@ -dapr-ext-fastapi-dev>=1.13.0rc1.dev +dapr-ext-fastapi-dev>=1.15.0.dev diff --git a/examples/demo_workflow/app.py b/examples/demo_workflow/app.py index 8f67fdbdc..b0d078c75 100644 --- a/examples/demo_workflow/app.py +++ b/examples/demo_workflow/app.py @@ -139,6 +139,7 @@ def main(): # Pause Test d.pause_workflow(instance_id=instance_id, workflow_component=workflow_component) + sleep(5) get_response = d.get_workflow( instance_id=instance_id, workflow_component=workflow_component ) @@ -146,6 +147,7 @@ def main(): # Resume Test d.resume_workflow(instance_id=instance_id, workflow_component=workflow_component) + sleep(5) get_response = d.get_workflow( instance_id=instance_id, workflow_component=workflow_component ) diff --git a/examples/demo_workflow/demo_workflow/requirements.txt b/examples/demo_workflow/demo_workflow/requirements.txt index c19dc97f0..7f7a666d2 100644 --- a/examples/demo_workflow/demo_workflow/requirements.txt +++ b/examples/demo_workflow/demo_workflow/requirements.txt @@ -1 +1 @@ -dapr-ext-workflow-dev>=0.0.1rc1.dev \ No newline at end of file +dapr-ext-workflow-dev>=1.15.0.dev \ No newline at end of file diff --git a/examples/error_handling/README.md b/examples/error_handling/README.md index 067b3ed1a..cad94f81c 100644 --- a/examples/error_handling/README.md +++ b/examples/error_handling/README.md @@ -1,6 +1,6 @@ # Example - Error handling -This guide demonstrates handling `DaprGrpcError` errors when using the Dapr python-SDK. It's important to note that not all Dapr gRPC status errors are currently captured and transformed into a `DaprGrpcError` by the SDK. Efforts are ongoing to enhance this aspect, and contributions are welcome. For detailed information on error handling in Dapr, refer to the [official documentation](https://docs.dapr.io/reference/errors). +This guide demonstrates handling `DaprGrpcError` errors when using the Dapr python-SDK. It's important to note that not all Dapr gRPC status errors are currently captured and transformed into a `DaprGrpcError` by the SDK. Efforts are ongoing to enhance this aspect, and contributions are welcome. For detailed information on error handling in Dapr, refer to the [official documentation](https://docs.dapr.io/developing-applications/error-codes/). The example involves creating a DaprClient and invoking the save_state method. It uses the default configuration from Dapr init in [self-hosted mode](https://github.com/dapr/cli#install-dapr-on-your-local-machine-self-hosted). diff --git a/examples/invoke-simple/requirements.txt b/examples/invoke-simple/requirements.txt index 0ba2b12d4..ee0ce7078 100644 --- a/examples/invoke-simple/requirements.txt +++ b/examples/invoke-simple/requirements.txt @@ -1,2 +1,2 @@ -dapr-ext-grpc-dev >= 1.13.0rc1.dev -dapr-dev >= 1.13.0rc1.dev +dapr-ext-grpc-dev >= 1.15.0.dev +dapr-dev >= 1.15.0.dev diff --git a/examples/pubsub-simple/README.md b/examples/pubsub-simple/README.md index f4730a424..8abfad96b 100644 --- a/examples/pubsub-simple/README.md +++ b/examples/pubsub-simple/README.md @@ -37,6 +37,11 @@ expected_stdout_lines: - '== APP == Dead-Letter Subscriber received: id=7, message="hello world", content_type="application/json"' - '== APP == Dead-Letter Subscriber. Received via deadletter topic: TOPIC_D_DEAD' - '== APP == Dead-Letter Subscriber. Originally intended topic: TOPIC_D' + - '== APP == Subscriber received: TOPIC_CE' + - '== APP == Subscriber received a json cloud event: id=8, message="hello world", content_type="application/json"' + - '== APP == Subscriber received: TOPIC_CE' + - '== APP == Subscriber received plain text cloud event: hello world, content_type="text/plain"' + output_match_mode: substring background: true match_order: none @@ -45,7 +50,7 @@ sleep: 3 ```bash # 1. Start Subscriber (expose gRPC server receiver on port 50051) -dapr run --app-id python-subscriber --app-protocol grpc --app-port 50051 python3 subscriber.py +dapr run --app-id python-subscriber --app-protocol grpc --app-port 50051 -- python3 subscriber.py ``` @@ -60,6 +65,10 @@ expected_stdout_lines: - "== APP == {'id': 3, 'message': 'hello world'}" - "== APP == {'id': 4, 'message': 'hello world'}" - "== APP == {'id': 5, 'message': 'hello world'}" + - "== APP == {'id': 6, 'message': 'hello world'}" + - "== APP == {'id': 7, 'message': 'hello world'}" + - "== APP == {'specversion': '1.0', 'type': 'com.example.event', 'source': 'my-service', 'id': 'abc-8', 'data': {'id': 8, 'message': 'hello world'}, 'datacontenttype': 'application/json'}" + - "== APP == {'specversion': '1.0', 'type': 'com.example.event', 'source': 'my-service', 'id': 'abc-10', 'data': 'hello world', 'datacontenttype': 'text/plain'}" background: true sleep: 15 --> diff --git a/examples/pubsub-simple/publisher.py b/examples/pubsub-simple/publisher.py index f6681f9ea..e5954c651 100644 --- a/examples/pubsub-simple/publisher.py +++ b/examples/pubsub-simple/publisher.py @@ -66,3 +66,51 @@ # Print the request print(req_data, flush=True) + + ## Send a cloud event with json data + id = 8 + cloud_event = { + 'specversion': '1.0', + 'type': 'com.example.event', + 'source': 'my-service', + 'id': f'abc-{id}', + 'data': {'id': id, 'message': 'hello world'}, + 'datacontenttype': 'application/json', + } + + # Set the data content type to 'application/cloudevents+json' + resp = d.publish_event( + pubsub_name='pubsub', + topic_name='TOPIC_CE', + data=json.dumps(cloud_event), + data_content_type='application/cloudevents+json', + ) + + # Print the request + print(cloud_event, flush=True) + + time.sleep(0.5) + + # Send a cloud event with plain text data + id = 10 + cloud_event = { + 'specversion': '1.0', + 'type': 'com.example.event', + 'source': 'my-service', + 'id': f'abc-{id}', + 'data': 'hello world', + 'datacontenttype': 'text/plain', + } + + # Set the data content type to 'application/cloudevents+json' + resp = d.publish_event( + pubsub_name='pubsub', + topic_name='TOPIC_CE', + data=json.dumps(cloud_event), + data_content_type='application/cloudevents+json', + ) + + # Print the request + print(cloud_event, flush=True) + + time.sleep(0.5) diff --git a/examples/pubsub-simple/subscriber.py b/examples/pubsub-simple/subscriber.py index b905aaa6f..daa11bc89 100644 --- a/examples/pubsub-simple/subscriber.py +++ b/examples/pubsub-simple/subscriber.py @@ -40,6 +40,42 @@ def mytopic(event: v1.Event) -> TopicEventResponse: return TopicEventResponse('success') +@app.subscribe(pubsub_name='pubsub', topic='TOPIC_CE') +def receive_cloud_events(event: v1.Event) -> TopicEventResponse: + print('Subscriber received: ' + event.Subject(), flush=True) + + content_type = event.content_type + data = event.Data() + + try: + if content_type == 'application/json': + # Handle JSON data + json_data = json.loads(data) + print( + f'Subscriber received a json cloud event: id={json_data["id"]}, message="{json_data["message"]}", ' + f'content_type="{event.content_type}"', + flush=True, + ) + elif content_type == 'text/plain': + # Handle plain text data + if isinstance(data, bytes): + data = data.decode('utf-8') + print( + f'Subscriber received plain text cloud event: {data}, ' + f'content_type="{content_type}"', + flush=True, + ) + else: + print(f'Received unknown content type: {content_type}', flush=True) + return TopicEventResponse('fail') + + except Exception as e: + print('Failed to process event data:', e, flush=True) + return TopicEventResponse('fail') + + return TopicEventResponse('success') + + @app.subscribe(pubsub_name='pubsub', topic='TOPIC_D', dead_letter_topic='TOPIC_D_DEAD') def fail_and_send_to_dead_topic(event: v1.Event) -> TopicEventResponse: return TopicEventResponse('retry') diff --git a/examples/w3c-tracing/requirements.txt b/examples/w3c-tracing/requirements.txt index 68e1bff34..cd15885bd 100644 --- a/examples/w3c-tracing/requirements.txt +++ b/examples/w3c-tracing/requirements.txt @@ -1,5 +1,5 @@ -dapr-ext-grpc-dev >= 1.13.0rc1.dev -dapr-dev >= 1.13.0rc1.dev +dapr-ext-grpc-dev >= 1.15.0.dev +dapr-dev >= 1.15.0.dev opentelemetry-sdk opentelemetry-instrumentation-grpc opentelemetry-exporter-zipkin diff --git a/examples/workflow/README.md b/examples/workflow/README.md index 6b936b319..f5b901d1c 100644 --- a/examples/workflow/README.md +++ b/examples/workflow/README.md @@ -19,6 +19,72 @@ pip3 install -r requirements.txt Each of the examples in this directory can be run directly from the command line. +### Simple Workflow +This example represents a workflow that manages counters through a series of activities and child workflows. +It shows several Dapr Workflow features including: +- Basic activity execution with counter increments +- Retryable activities with configurable retry policies +- Child workflow orchestration with retry logic +- External event handling with timeouts +- Workflow state management (pause/resume) +- Activity error handling and retry backoff +- Global state tracking across workflow components +- Workflow lifecycle management (start, pause, resume, purge) + + + +```sh +dapr run --app-id wf-simple-example --dapr-grpc-port 50001 -- python3 simple.py +``` + + +The output of this example should look like this: + +``` + - "== APP == Hi Counter!" + - "== APP == New counter value is: 1!" + - "== APP == New counter value is: 11!" + - "== APP == Retry count value is: 0!" + - "== APP == Retry count value is: 1! This print statement verifies retry" + - "== APP == Appending 1 to child_orchestrator_string!" + - "== APP == Appending a to child_orchestrator_string!" + - "== APP == Appending a to child_orchestrator_string!" + - "== APP == Appending 2 to child_orchestrator_string!" + - "== APP == Appending b to child_orchestrator_string!" + - "== APP == Appending b to child_orchestrator_string!" + - "== APP == Appending 3 to child_orchestrator_string!" + - "== APP == Appending c to child_orchestrator_string!" + - "== APP == Appending c to child_orchestrator_string!" + - "== APP == Get response from hello_world_wf after pause call: SUSPENDED" + - "== APP == Get response from hello_world_wf after resume call: RUNNING" + - "== APP == New counter value is: 111!" + - "== APP == New counter value is: 1111!" + - "== APP == Workflow completed! Result: Completed" +``` + ### Task Chaining This example demonstrates how to chain "activity" tasks together in a workflow. You can run this sample using the following command: diff --git a/examples/workflow/monitor.py b/examples/workflow/monitor.py index 6bdb6cc34..6cf575cfe 100644 --- a/examples/workflow/monitor.py +++ b/examples/workflow/monitor.py @@ -68,6 +68,7 @@ def send_alert(ctx, message: str): status = wf_client.get_workflow_state(job_id) except Exception: pass + if not status or status.runtime_status.name != 'RUNNING': # TODO update to use reuse_id_policy instance_id = wf_client.schedule_new_workflow( diff --git a/examples/workflow/requirements.txt b/examples/workflow/requirements.txt index 6a748d0ec..e220036d6 100644 --- a/examples/workflow/requirements.txt +++ b/examples/workflow/requirements.txt @@ -1,2 +1,2 @@ -dapr-ext-workflow-dev>=0.4.1rc1.dev -dapr-dev>=1.13.0rc1.dev +dapr-ext-workflow-dev>=1.15.0.dev +dapr-dev>=1.15.0.dev diff --git a/examples/workflow/simple.py b/examples/workflow/simple.py new file mode 100644 index 000000000..76f21eba4 --- /dev/null +++ b/examples/workflow/simple.py @@ -0,0 +1,170 @@ +# -*- coding: utf-8 -*- +# Copyright 2025 The Dapr Authors +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from datetime import timedelta +from time import sleep +from dapr.ext.workflow import ( + WorkflowRuntime, + DaprWorkflowContext, + WorkflowActivityContext, + RetryPolicy, + DaprWorkflowClient, + when_any, +) +from dapr.conf import Settings +from dapr.clients.exceptions import DaprInternalError + +settings = Settings() + +counter = 0 +retry_count = 0 +child_orchestrator_count = 0 +child_orchestrator_string = '' +child_act_retry_count = 0 +instance_id = 'exampleInstanceID' +child_instance_id = 'childInstanceID' +workflow_name = 'hello_world_wf' +child_workflow_name = 'child_wf' +input_data = 'Hi Counter!' +event_name = 'event1' +event_data = 'eventData' +non_existent_id_error = 'no such instance exists' + +retry_policy = RetryPolicy( + first_retry_interval=timedelta(seconds=1), + max_number_of_attempts=3, + backoff_coefficient=2, + max_retry_interval=timedelta(seconds=10), + retry_timeout=timedelta(seconds=100), +) + +wfr = WorkflowRuntime() + + +@wfr.workflow(name='hello_world_wf') +def hello_world_wf(ctx: DaprWorkflowContext, wf_input): + print(f'{wf_input}') + yield ctx.call_activity(hello_act, input=1) + yield ctx.call_activity(hello_act, input=10) + yield ctx.call_activity(hello_retryable_act, retry_policy=retry_policy) + yield ctx.call_child_workflow(child_retryable_wf, retry_policy=retry_policy) + + # Change in event handling: Use when_any to handle both event and timeout + event = ctx.wait_for_external_event(event_name) + timeout = ctx.create_timer(timedelta(seconds=30)) + winner = yield when_any([event, timeout]) + + if winner == timeout: + print('Workflow timed out waiting for event') + return 'Timeout' + + yield ctx.call_activity(hello_act, input=100) + yield ctx.call_activity(hello_act, input=1000) + return 'Completed' + + +@wfr.activity(name='hello_act') +def hello_act(ctx: WorkflowActivityContext, wf_input): + global counter + counter += wf_input + print(f'New counter value is: {counter}!', flush=True) + + +@wfr.activity(name='hello_retryable_act') +def hello_retryable_act(ctx: WorkflowActivityContext): + global retry_count + if (retry_count % 2) == 0: + print(f'Retry count value is: {retry_count}!', flush=True) + retry_count += 1 + raise ValueError('Retryable Error') + print(f'Retry count value is: {retry_count}! This print statement verifies retry', flush=True) + retry_count += 1 + + +@wfr.workflow(name='child_retryable_wf') +def child_retryable_wf(ctx: DaprWorkflowContext): + global child_orchestrator_string, child_orchestrator_count + if not ctx.is_replaying: + child_orchestrator_count += 1 + print(f'Appending {child_orchestrator_count} to child_orchestrator_string!', flush=True) + child_orchestrator_string += str(child_orchestrator_count) + yield ctx.call_activity( + act_for_child_wf, input=child_orchestrator_count, retry_policy=retry_policy + ) + if child_orchestrator_count < 3: + raise ValueError('Retryable Error') + + +@wfr.activity(name='act_for_child_wf') +def act_for_child_wf(ctx: WorkflowActivityContext, inp): + global child_orchestrator_string, child_act_retry_count + inp_char = chr(96 + inp) + print(f'Appending {inp_char} to child_orchestrator_string!', flush=True) + child_orchestrator_string += inp_char + if child_act_retry_count % 2 == 0: + child_act_retry_count += 1 + raise ValueError('Retryable Error') + child_act_retry_count += 1 + + +def main(): + wfr.start() + wf_client = DaprWorkflowClient() + + print('==========Start Counter Increase as per Input:==========') + wf_client.schedule_new_workflow( + workflow=hello_world_wf, input=input_data, instance_id=instance_id + ) + + wf_client.wait_for_workflow_start(instance_id) + + # Sleep to let the workflow run initial activities + sleep(12) + + assert counter == 11 + assert retry_count == 2 + assert child_orchestrator_string == '1aa2bb3cc' + + # Pause Test + wf_client.pause_workflow(instance_id=instance_id) + metadata = wf_client.get_workflow_state(instance_id=instance_id) + print(f'Get response from {workflow_name} after pause call: {metadata.runtime_status.name}') + + # Resume Test + wf_client.resume_workflow(instance_id=instance_id) + metadata = wf_client.get_workflow_state(instance_id=instance_id) + print(f'Get response from {workflow_name} after resume call: {metadata.runtime_status.name}') + + sleep(2) # Give the workflow time to reach the event wait state + wf_client.raise_workflow_event(instance_id=instance_id, event_name=event_name, data=event_data) + + print('========= Waiting for Workflow completion', flush=True) + try: + state = wf_client.wait_for_workflow_completion(instance_id, timeout_in_seconds=30) + if state.runtime_status.name == 'COMPLETED': + print('Workflow completed! Result: {}'.format(state.serialized_output.strip('"'))) + else: + print(f'Workflow failed! Status: {state.runtime_status.name}') + except TimeoutError: + print('*** Workflow timed out!') + + wf_client.purge_workflow(instance_id=instance_id) + try: + wf_client.get_workflow_state(instance_id=instance_id) + except DaprInternalError as err: + if non_existent_id_error in err._message: + print('Instance Successfully Purged') + + wfr.shutdown() + + +if __name__ == '__main__': + main() diff --git a/ext/dapr-ext-fastapi/dapr/ext/fastapi/version.py b/ext/dapr-ext-fastapi/dapr/ext/fastapi/version.py index 287c4a57c..112a2520f 100644 --- a/ext/dapr-ext-fastapi/dapr/ext/fastapi/version.py +++ b/ext/dapr-ext-fastapi/dapr/ext/fastapi/version.py @@ -13,4 +13,4 @@ limitations under the License. """ -__version__ = '1.14.0rc1.dev' +__version__ = '1.15.0.dev' diff --git a/ext/dapr-ext-fastapi/setup.cfg b/ext/dapr-ext-fastapi/setup.cfg index ed5a68101..560a795f8 100644 --- a/ext/dapr-ext-fastapi/setup.cfg +++ b/ext/dapr-ext-fastapi/setup.cfg @@ -24,7 +24,7 @@ python_requires = >=3.9 packages = find_namespace: include_package_data = True install_requires = - dapr-dev >= 1.13.0rc1.dev + dapr-dev >= 1.15.0.dev uvicorn >= 0.11.6 fastapi >= 0.60.1 diff --git a/ext/dapr-ext-grpc/dapr/ext/grpc/version.py b/ext/dapr-ext-grpc/dapr/ext/grpc/version.py index 287c4a57c..112a2520f 100644 --- a/ext/dapr-ext-grpc/dapr/ext/grpc/version.py +++ b/ext/dapr-ext-grpc/dapr/ext/grpc/version.py @@ -13,4 +13,4 @@ limitations under the License. """ -__version__ = '1.14.0rc1.dev' +__version__ = '1.15.0.dev' diff --git a/ext/dapr-ext-grpc/setup.cfg b/ext/dapr-ext-grpc/setup.cfg index 1a87234c5..caf84a2ec 100644 --- a/ext/dapr-ext-grpc/setup.cfg +++ b/ext/dapr-ext-grpc/setup.cfg @@ -24,7 +24,7 @@ python_requires = >=3.9 packages = find_namespace: include_package_data = True install_requires = - dapr-dev >= 1.13.0rc1.dev + dapr-dev >= 1.15.0.dev cloudevents >= 1.0.0 [options.packages.find] diff --git a/ext/dapr-ext-workflow/dapr/ext/workflow/dapr_workflow_client.py b/ext/dapr-ext-workflow/dapr/ext/workflow/dapr_workflow_client.py index b9865344c..cc384503a 100644 --- a/ext/dapr-ext-workflow/dapr/ext/workflow/dapr_workflow_client.py +++ b/ext/dapr-ext-workflow/dapr/ext/workflow/dapr_workflow_client.py @@ -24,6 +24,7 @@ from dapr.ext.workflow.workflow_state import WorkflowState from dapr.ext.workflow.workflow_context import Workflow from dapr.ext.workflow.util import getAddress +from grpc import RpcError from dapr.clients import DaprInternalError from dapr.clients.http.client import DAPR_API_TOKEN_HEADER @@ -121,20 +122,29 @@ def get_workflow_state( """Fetches runtime state for the specified workflow instance. Args: - instanceId: The unique ID of the workflow instance to fetch. + instance_id: The unique ID of the workflow instance to fetch. fetch_payloads: If true, fetches the input, output payloads and custom status - for the workflow instance. Defaults to false. + for the workflow instance. Defaults to true. Returns: The current state of the workflow instance, or None if the workflow instance does not exist. """ - state = self.__obj.get_orchestration_state(instance_id, fetch_payloads=fetch_payloads) - return WorkflowState(state) if state else None + try: + state = self.__obj.get_orchestration_state(instance_id, fetch_payloads=fetch_payloads) + return WorkflowState(state) if state else None + except RpcError as error: + if 'no such instance exists' in error.details(): + self._logger.warning(f'Workflow instance not found: {instance_id}') + return None + self._logger.error( + f'Unhandled RPC error while fetching workflow state: {error.code()} - {error.details()}' + ) + raise def wait_for_workflow_start( - self, instance_id: str, *, fetch_payloads: bool = False, timeout_in_seconds: int = 60 + self, instance_id: str, *, fetch_payloads: bool = False, timeout_in_seconds: int = 0 ) -> Optional[WorkflowState]: """Waits for a workflow to start running and returns a WorkflowState object that contains metadata about the started workflow. @@ -148,7 +158,7 @@ def wait_for_workflow_start( fetch_payloads: If true, fetches the input, output payloads and custom status for the workflow instance. Defaults to false. timeout_in_seconds: The maximum time to wait for the workflow instance to start running. - Defaults to 60 seconds. + Defaults to meaning no timeout. Returns: WorkflowState record that describes the workflow instance and its execution status. @@ -160,7 +170,7 @@ def wait_for_workflow_start( return WorkflowState(state) if state else None def wait_for_workflow_completion( - self, instance_id: str, *, fetch_payloads: bool = True, timeout_in_seconds: int = 60 + self, instance_id: str, *, fetch_payloads: bool = True, timeout_in_seconds: int = 0 ) -> Optional[WorkflowState]: """Waits for a workflow to complete and returns a WorkflowState object that contains metadata about the started instance. @@ -182,7 +192,7 @@ def wait_for_workflow_completion( fetch_payloads: If true, fetches the input, output payloads and custom status for the workflow instance. Defaults to true. timeout_in_seconds: The maximum time in seconds to wait for the workflow instance to - complete. Defaults to 60 seconds. + complete. Defaults to 0 seconds, meaning no timeout. Returns: WorkflowState record that describes the workflow instance and its execution status. @@ -212,8 +222,8 @@ def raise_workflow_event( discarded. Args: - instanceId: The ID of the workflow instance that will handle the event. - eventName: The name of the event. Event names are case-insensitive. + instance_id: The ID of the workflow instance that will handle the event. + event_name: The name of the event. Event names are case-insensitive. data: The serializable data payload to include with the event. """ return self.__obj.raise_orchestration_event(instance_id, event_name, data=data) diff --git a/ext/dapr-ext-workflow/dapr/ext/workflow/version.py b/ext/dapr-ext-workflow/dapr/ext/workflow/version.py index 494a56947..112a2520f 100644 --- a/ext/dapr-ext-workflow/dapr/ext/workflow/version.py +++ b/ext/dapr-ext-workflow/dapr/ext/workflow/version.py @@ -13,4 +13,4 @@ limitations under the License. """ -__version__ = '0.5.0rc1.dev' +__version__ = '1.15.0.dev' diff --git a/ext/dapr-ext-workflow/setup.cfg b/ext/dapr-ext-workflow/setup.cfg index e61b94ecd..3776ec899 100644 --- a/ext/dapr-ext-workflow/setup.cfg +++ b/ext/dapr-ext-workflow/setup.cfg @@ -24,8 +24,8 @@ python_requires = >=3.9 packages = find_namespace: include_package_data = True install_requires = - dapr-dev >= 1.13.0rc1.dev - durabletask-dapr >= 0.2.0a4 + dapr-dev >= 1.15.0.dev + durabletask-dapr >= 0.2.0a7 [options.packages.find] include = diff --git a/ext/dapr-ext-workflow/tests/test_workflow_client.py b/ext/dapr-ext-workflow/tests/test_workflow_client.py index e1c9b7723..984c97cdf 100644 --- a/ext/dapr-ext-workflow/tests/test_workflow_client.py +++ b/ext/dapr-ext-workflow/tests/test_workflow_client.py @@ -21,6 +21,7 @@ from dapr.ext.workflow.dapr_workflow_client import DaprWorkflowClient from durabletask import client import durabletask.internal.orchestrator_service_pb2 as pb +from grpc import RpcError mock_schedule_result = 'workflow001' mock_raise_event_result = 'event001' @@ -29,6 +30,19 @@ mock_resume_result = 'resume001' mock_purge_result = 'purge001' mock_instance_id = 'instance001' +wf_status = 'not-found' + + +class SimulatedRpcError(RpcError): + def __init__(self, code, details): + self._code = code + self._details = details + + def code(self): + return self._code + + def details(self): + return self._details class FakeTaskHubGrpcClient: @@ -43,7 +57,15 @@ def schedule_new_orchestration( return mock_schedule_result def get_orchestration_state(self, instance_id, fetch_payloads): - return self._inner_get_orchestration_state(instance_id, client.OrchestrationStatus.PENDING) + global wf_status + if wf_status == 'not-found': + raise SimulatedRpcError(code='UNKNOWN', details='no such instance exists') + elif wf_status == 'found': + return self._inner_get_orchestration_state( + instance_id, client.OrchestrationStatus.PENDING + ) + else: + raise SimulatedRpcError(code='UNKNOWN', details='unknown error') def wait_for_orchestration_start(self, instance_id, fetch_payloads, timeout): return self._inner_get_orchestration_state(instance_id, client.OrchestrationStatus.RUNNING) @@ -100,6 +122,20 @@ def test_client_functions(self): ) assert actual_schedule_result == mock_schedule_result + global wf_status + wf_status = 'not-found' + actual_get_result = wfClient.get_workflow_state( + instance_id=mock_instance_id, fetch_payloads=True + ) + assert actual_get_result is None + + wf_status = 'error' + with self.assertRaises(RpcError): + wfClient.get_workflow_state(instance_id=mock_instance_id, fetch_payloads=True) + + assert actual_get_result is None + + wf_status = 'found' actual_get_result = wfClient.get_workflow_state( instance_id=mock_instance_id, fetch_payloads=True ) diff --git a/ext/flask_dapr/flask_dapr/version.py b/ext/flask_dapr/flask_dapr/version.py index 287c4a57c..112a2520f 100644 --- a/ext/flask_dapr/flask_dapr/version.py +++ b/ext/flask_dapr/flask_dapr/version.py @@ -13,4 +13,4 @@ limitations under the License. """ -__version__ = '1.14.0rc1.dev' +__version__ = '1.15.0.dev' diff --git a/ext/flask_dapr/setup.cfg b/ext/flask_dapr/setup.cfg index ed98c4438..64d15941d 100644 --- a/ext/flask_dapr/setup.cfg +++ b/ext/flask_dapr/setup.cfg @@ -26,4 +26,4 @@ include_package_data = true zip_safe = false install_requires = Flask >= 1.1 - dapr-dev >= 1.13.0rc1.dev + dapr-dev >= 1.15.0.dev diff --git a/tests/clients/fake_dapr_server.py b/tests/clients/fake_dapr_server.py index 9ae39aa1c..ccc5aedf3 100644 --- a/tests/clients/fake_dapr_server.py +++ b/tests/clients/fake_dapr_server.py @@ -524,6 +524,18 @@ def GetMetadata(self, request, context): extended_metadata=self.metadata, ) + def ConverseAlpha1(self, request, context): + """Mock implementation of the ConverseAlpha1 endpoint.""" + self.check_for_exception(context) + + # Echo back the input messages as outputs + outputs = [] + for input in request.inputs: + result = f'Response to: {input.content}' + outputs.append(api_v1.ConversationResult(result=result, parameters={})) + + return api_v1.ConversationResponse(contextID=request.contextID, outputs=outputs) + def SetMetadata(self, request: SetMetadataRequest, context): self.metadata[request.key] = request.value return empty_pb2.Empty() diff --git a/tests/clients/test_dapr_grpc_client.py b/tests/clients/test_dapr_grpc_client.py index f0644ec7f..f838f5c68 100644 --- a/tests/clients/test_dapr_grpc_client.py +++ b/tests/clients/test_dapr_grpc_client.py @@ -33,7 +33,11 @@ from .fake_dapr_server import FakeDaprSidecar from dapr.conf import settings from dapr.clients.grpc._helpers import to_bytes -from dapr.clients.grpc._request import TransactionalStateOperation, TransactionOperationType +from dapr.clients.grpc._request import ( + TransactionalStateOperation, + TransactionOperationType, + ConversationInput, +) from dapr.clients.grpc._state import StateOptions, Consistency, Concurrency, StateItem from dapr.clients.grpc._crypto import EncryptOptions, DecryptOptions from dapr.clients.grpc._response import ( @@ -1181,6 +1185,54 @@ def test_decrypt_file_data_read_chunks(self): self.assertEqual(resp.read(5), b'hello') self.assertEqual(resp.read(5), b' dapr') + def test_converse_alpha1_basic(self): + dapr = DaprGrpcClient(f'{self.scheme}localhost:{self.grpc_port}') + + inputs = [ + ConversationInput(content='Hello', role='user'), + ConversationInput(content='How are you?', role='user'), + ] + + response = dapr.converse_alpha1(name='test-llm', inputs=inputs) + + # Check response structure + self.assertIsNotNone(response) + self.assertEqual(len(response.outputs), 2) + self.assertEqual(response.outputs[0].result, 'Response to: Hello') + self.assertEqual(response.outputs[1].result, 'Response to: How are you?') + + def test_converse_alpha1_with_options(self): + dapr = DaprGrpcClient(f'{self.scheme}localhost:{self.grpc_port}') + + inputs = [ConversationInput(content='Hello', role='user', scrub_pii=True)] + + response = dapr.converse_alpha1( + name='test-llm', + inputs=inputs, + context_id='chat-123', + temperature=0.7, + scrub_pii=True, + metadata={'key': 'value'}, + ) + + self.assertIsNotNone(response) + self.assertEqual(len(response.outputs), 1) + self.assertEqual(response.outputs[0].result, 'Response to: Hello') + + def test_converse_alpha1_error_handling(self): + dapr = DaprGrpcClient(f'{self.scheme}localhost:{self.grpc_port}') + + # Setup server to raise an exception + self._fake_dapr_server.raise_exception_on_next_call( + status_pb2.Status(code=code_pb2.INVALID_ARGUMENT, message='Invalid argument') + ) + + inputs = [ConversationInput(content='Hello', role='user')] + + with self.assertRaises(DaprGrpcError) as context: + dapr.converse_alpha1(name='test-llm', inputs=inputs) + self.assertTrue('Invalid argument' in str(context.exception)) + if __name__ == '__main__': unittest.main() diff --git a/tests/clients/test_dapr_grpc_client_async.py b/tests/clients/test_dapr_grpc_client_async.py index f15a2d1af..627f56ce7 100644 --- a/tests/clients/test_dapr_grpc_client_async.py +++ b/tests/clients/test_dapr_grpc_client_async.py @@ -29,7 +29,7 @@ from .fake_dapr_server import FakeDaprSidecar from dapr.conf import settings from dapr.clients.grpc._helpers import to_bytes -from dapr.clients.grpc._request import TransactionalStateOperation +from dapr.clients.grpc._request import TransactionalStateOperation, ConversationInput from dapr.clients.grpc._state import StateOptions, Consistency, Concurrency, StateItem from dapr.clients.grpc._crypto import EncryptOptions, DecryptOptions from dapr.clients.grpc._response import ( @@ -1113,6 +1113,57 @@ async def test_decrypt_file_data_read_chunks(self): self.assertEqual(await resp.read(5), b'hello') self.assertEqual(await resp.read(5), b' dapr') + async def test_converse_alpha1_basic(self): + dapr = DaprGrpcClientAsync(f'{self.scheme}localhost:{self.grpc_port}') + + inputs = [ + ConversationInput(content='Hello', role='user'), + ConversationInput(content='How are you?', role='user'), + ] + + response = await dapr.converse_alpha1(name='test-llm', inputs=inputs) + + # Check response structure + self.assertIsNotNone(response) + self.assertEqual(len(response.outputs), 2) + self.assertEqual(response.outputs[0].result, 'Response to: Hello') + self.assertEqual(response.outputs[1].result, 'Response to: How are you?') + await dapr.close() + + async def test_converse_alpha1_with_options(self): + dapr = DaprGrpcClientAsync(f'{self.scheme}localhost:{self.grpc_port}') + + inputs = [ConversationInput(content='Hello', role='user', scrub_pii=True)] + + response = await dapr.converse_alpha1( + name='test-llm', + inputs=inputs, + context_id='chat-123', + temperature=0.7, + scrub_pii=True, + metadata={'key': 'value'}, + ) + + self.assertIsNotNone(response) + self.assertEqual(len(response.outputs), 1) + self.assertEqual(response.outputs[0].result, 'Response to: Hello') + await dapr.close() + + async def test_converse_alpha1_error_handling(self): + dapr = DaprGrpcClientAsync(f'{self.scheme}localhost:{self.grpc_port}') + + # Setup server to raise an exception + self._fake_dapr_server.raise_exception_on_next_call( + status_pb2.Status(code=code_pb2.INVALID_ARGUMENT, message='Invalid argument') + ) + + inputs = [ConversationInput(content='Hello', role='user')] + + with self.assertRaises(DaprGrpcError) as context: + await dapr.converse_alpha1(name='test-llm', inputs=inputs) + self.assertTrue('Invalid argument' in str(context.exception)) + await dapr.close() + if __name__ == '__main__': unittest.main() diff --git a/tox.ini b/tox.ini index d81984a3a..fc8a5f3ad 100644 --- a/tox.ini +++ b/tox.ini @@ -46,6 +46,7 @@ changedir = ./examples/ deps = mechanical-markdown commands = + ./validate.sh conversation ./validate.sh crypto ./validate.sh metadata ./validate.sh error_handling