Data types
TypeSpec.Protobuf
Section titled âTypeSpec.ProtobufâA model that represents an external Protobuf reference. This type can be used to import and utilize Protobuf
declarations that are not declared in TypeSpec within TypeSpec sources. When the emitter encounters an Extern
, it
will insert an import
statement for the corresponding Path
and refer to the type by Name
.
If you have a file called test.proto
that declares a package named test
and a message named Widget
, you can
use the Extern
type to declare a model in TypeSpec that refers to your external definition of test.Widget
. See
the example below.
When the TypeSpec definition of Widget
is encountered, the Protobuf emitter will represent it as a reference to
test.Widget
and insert an import for it, rather than attempt to convert the model to an equivalent message.
model TypeSpec.Protobuf.Extern<Path, Name>
Template Parameters
Section titled âTemplate ParametersâName | Description |
---|---|
Path | the relative path to a .proto file to import |
Name | the fully-qualified reference to the type this model represents within the .proto file |
Examples
Section titled âExamplesâmodel Widget is Extern<"path/to/test.proto", "test.Widget">;
Properties
Section titled âPropertiesâName | Type | Description |
---|---|---|
_extern | never |
A type representing a Protobuf map
. Instances of this type in models will be converted to the built-in map
type
in Protobuf.
The key type of a Protobuf map
must be any integral type or string
. The value type can be any type other than
another Map
.
model TypeSpec.Protobuf.Map<Key, Value>
Template Parameters
Section titled âTemplate ParametersâName | Description |
---|---|
Key | the key type (any integral type or string) |
Value | the value type (any type other than another map) |
Properties
Section titled âPropertiesâNone
PackageDetails
Section titled âPackageDetailsâDetails applied to a package definition by the [@package
](./decorators#
model TypeSpec.Protobuf.PackageDetails
Properties
Section titled âPropertiesâName | Type | Description |
---|---|---|
name? | string | The packageâs name. By default, the packageâs name is constructed from the namespace it is applied to. |
options? | Record<string | boolean | numeric> | The packageâs top-level options. See the Protobuf Language Guide - Options for more information. Currently, only string, boolean, and numeric options are supported. |
StreamMode
Section titled âStreamModeâThe streaming mode of an operation. One of:
Duplex
: both the input and output of the operation are streaming.In
: the input of the operation is streaming.Out
: the output of the operation is streaming.None
: neither the input nor the output are streaming.
See the [@stream
](./decorators#
enum TypeSpec.Protobuf.StreamMode
Name | Value | Description |
---|---|---|
Duplex | Both the input and output of the operation are streaming. Both the client and service will stream messages to each other until the connections are closed. | |
In | The input of the operation is streaming. The client will send a stream of events; and, once the stream is closed, the service will respond with a message. | |
Out | The output of the operation is streaming. The client will send a message to the service, and the service will send a stream of events back to the client. | |
None | Neither the input nor the output are streaming. This is the default mode of an operation without the @stream decorator. |
fixed32
Section titled âfixed32âAn unsigned 32-bit integer that will use the fixed32
encoding when used in a Protobuf message.
Protobuf binary format
Section titled âProtobuf binary formatâAlways four bytes. More efficient than uint32
if values are often greater than 228.
scalar TypeSpec.Protobuf.fixed32
fixed64
Section titled âfixed64âAn unsigned 64-bit integer that will use the fixed64
encoding when used in a Protobuf message.
Protobuf binary format
Section titled âProtobuf binary formatâAlways eight bytes. More efficient than uint64
if values are often greater than 256.
scalar TypeSpec.Protobuf.fixed64
sfixed32
Section titled âsfixed32âA signed 32-bit integer that will use the sfixed32
encoding when used in a Protobuf message.
Protobuf binary format
Section titled âProtobuf binary formatâAlways four bytes.
scalar TypeSpec.Protobuf.sfixed32
sfixed64
Section titled âsfixed64âA signed 64-bit integer that will use the sfixed64
encoding when used in a Protobuf message.
Protobuf binary format
Section titled âProtobuf binary formatâAlways eight bytes.
scalar TypeSpec.Protobuf.sfixed64
A signed 32-bit integer that will use the sint32
encoding when used in a Protobuf message.
Protobuf binary format
Section titled âProtobuf binary formatâUses variable-length encoding. These more efficiently encode negative numbers than regular int32s.
scalar TypeSpec.Protobuf.sint32
A signed 64-bit integer that will use the sint64
encoding when used in a Protobuf message.
Protobuf binary format
Section titled âProtobuf binary formatâUses variable-length encoding. These more efficiently encode negative numbers than regular int64s
.
scalar TypeSpec.Protobuf.sint64
TypeSpec.Protobuf.WellKnown
Section titled âTypeSpec.Protobuf.WellKnownâAny value.
This model references google.protobuf.Any
from google/protobuf/any.proto
.
model TypeSpec.Protobuf.WellKnown.Any
Properties
Section titled âPropertiesâName | Type | Description |
---|---|---|
_extern | never |
An empty message.
This model references google.protobuf.Empty
from google/protobuf/empty.proto
.
model TypeSpec.Protobuf.WellKnown.Empty
Properties
Section titled âPropertiesâName | Type | Description |
---|---|---|
_extern | never |
A latitude and longitude.
This model references google.type.LatLng
from google/type/latlng.proto
.
model TypeSpec.Protobuf.WellKnown.LatLng
Properties
Section titled âPropertiesâName | Type | Description |
---|---|---|
_extern | never |
Timestamp
Section titled âTimestampâA timestamp.
This model references google.protobuf.Timestamp
from google/protobuf/timestamp.proto
.
model TypeSpec.Protobuf.WellKnown.Timestamp
Properties
Section titled âPropertiesâName | Type | Description |
---|---|---|
_extern | never |